a1d022b
--- a/CMake/FindLibPROJ.cmake
a1d022b
+++ b/CMake/FindLibPROJ.cmake
a1d022b
@@ -30,7 +30,7 @@ if ( NOT LibPROJ_INCLUDE_DIR OR NOT LibP
a1d022b
   )
a1d022b
 
a1d022b
   find_path( LibPROJ_INCLUDE_DIR
a1d022b
-    NAMES proj_api.h
a1d022b
+    NAMES proj_api.h proj.h
a1d022b
     HINTS
a1d022b
       ${_LibPROJ_DIR}
a1d022b
       ${_LibPROJ_DIR}/include
a1d022b
--- a/Geovis/Core/vtkGeoProjection.cxx
a1d022b
+++ b/Geovis/Core/vtkGeoProjection.cxx
a1d022b
@@ -72,6 +72,9 @@ public:
a1d022b
   }
a1d022b
 
a1d022b
   std::map< std::string, std::string > OptionalParameters;
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+  PJ_PROJ_INFO ProjInfo;
a1d022b
+#endif
a1d022b
 };
a1d022b
 
a1d022b
 //-----------------------------------------------------------------------------
a1d022b
@@ -80,7 +83,7 @@ int vtkGeoProjection::GetNumberOfProject
a1d022b
   if ( vtkGeoProjectionNumProj < 0 )
a1d022b
   {
a1d022b
     vtkGeoProjectionNumProj = 0;
a1d022b
-    for ( const PJ_LIST* pj = pj_get_list_ref(); pj && pj->id; ++ pj )
a1d022b
+    for ( const PJ_LIST* pj = proj_list_operations(); pj && pj->id; ++ pj )
a1d022b
       ++ vtkGeoProjectionNumProj;
a1d022b
   }
a1d022b
   return vtkGeoProjectionNumProj;
a1d022b
@@ -91,7 +94,7 @@ const char* vtkGeoProjection::GetProject
a1d022b
   if ( projection < 0 || projection >= vtkGeoProjection::GetNumberOfProjections() )
a1d022b
     return nullptr;
a1d022b
 
a1d022b
-  return pj_get_list_ref()[projection].id;
a1d022b
+  return proj_list_operations()[projection].id;
a1d022b
 }
a1d022b
 //-----------------------------------------------------------------------------
a1d022b
 const char* vtkGeoProjection::GetProjectionDescription( int projection )
a1d022b
@@ -99,7 +102,7 @@ const char* vtkGeoProjection::GetProject
a1d022b
   if ( projection < 0 || projection >= vtkGeoProjection::GetNumberOfProjections() )
a1d022b
     return nullptr;
a1d022b
 
a1d022b
-  return pj_get_list_ref()[projection].descr[0];
a1d022b
+  return proj_list_operations()[projection].descr[0];
a1d022b
 }
a1d022b
 //-----------------------------------------------------------------------------
a1d022b
 vtkGeoProjection::vtkGeoProjection()
a1d022b
@@ -144,7 +147,7 @@ void vtkGeoProjection::PrintSelf( ostrea
a1d022b
 int vtkGeoProjection::GetIndex()
a1d022b
 {
a1d022b
   int i = 0;
a1d022b
-  for ( const PJ_LIST* proj = pj_get_list_ref(); proj && proj->id; ++ proj, ++ i )
a1d022b
+  for ( const PJ_LIST* proj = proj_list_operations(); proj && proj->id; ++ proj, ++ i )
a1d022b
   {
a1d022b
     if ( ! strcmp( proj->id, this->Name ) )
a1d022b
     {
a1d022b
@@ -161,7 +164,11 @@ const char* vtkGeoProjection::GetDescrip
a1d022b
   {
a1d022b
     return nullptr;
a1d022b
   }
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+  return this->Internals->ProjInfo.description;
a1d022b
+#else
a1d022b
   return this->Projection->descr;
a1d022b
+#endif
a1d022b
 }
a1d022b
 //-----------------------------------------------------------------------------
a1d022b
 projPJ vtkGeoProjection::GetProjection()
a1d022b
@@ -232,6 +239,9 @@ int vtkGeoProjection::UpdateProjection()
a1d022b
   this->ProjectionMTime = this->GetMTime();
a1d022b
   if ( this->Projection )
a1d022b
   {
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+    this->Internals->ProjInfo = proj_pj_info(this->Projection);
a1d022b
+#endif
a1d022b
     return 0;
a1d022b
   }
a1d022b
   return 1;
a1d022b
--- a/Geovis/Core/vtkGeoTransform.cxx
a1d022b
+++ b/Geovis/Core/vtkGeoTransform.cxx
a1d022b
@@ -167,9 +167,17 @@ void vtkGeoTransform::InternalTransformP
a1d022b
     double* coord = x;
a1d022b
     for ( vtkIdType i = 0; i < numPts; ++ i )
a1d022b
     {
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+      xy.x = coord[0]; xy.y = coord[1];
a1d022b
+#else
a1d022b
       xy.u = coord[0]; xy.v = coord[1];
a1d022b
+#endif
a1d022b
       lp = pj_inv( xy, src );
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+      coord[0] = lp.lam; coord[1] = lp.phi;
a1d022b
+#else
a1d022b
       coord[0] = lp.u; coord[1] = lp.v;
a1d022b
+#endif
a1d022b
       coord += stride;
a1d022b
     }
a1d022b
   }
a1d022b
@@ -191,9 +199,17 @@ void vtkGeoTransform::InternalTransformP
a1d022b
     double* coord = x;
a1d022b
     for ( vtkIdType i = 0; i < numPts; ++ i )
a1d022b
     {
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+      lp.lam = coord[0]; lp.phi = coord[1];
a1d022b
+#else
a1d022b
       lp.u = coord[0]; lp.v = coord[1];
a1d022b
+#endif
a1d022b
       xy = pj_fwd( lp, dst );
a1d022b
+#if PROJ_VERSION_MAJOR >= 5
a1d022b
+      coord[0] = xy.x; coord[1] = xy.y;
a1d022b
+#else
a1d022b
       coord[0] = xy.u; coord[1] = xy.v;
a1d022b
+#endif
a1d022b
       coord += stride;
a1d022b
     }
a1d022b
   }
a1d022b
--- a/ThirdParty/libproj/vtk_libproj.h.in
a1d022b
+++ b/ThirdParty/libproj/vtk_libproj.h.in
a1d022b
@@ -15,10 +15,20 @@
a1d022b
 #ifndef vtk_libproj_h
a1d022b
 #define vtk_libproj_h
a1d022b
 
a1d022b
+#define VTK_LibPROJ_MAJOR_VERSION @LibPROJ_MAJOR_VERSION@
a1d022b
+
a1d022b
 /* Use the libproj library configured for VTK.  */
a1d022b
 #cmakedefine VTK_USE_SYSTEM_LIBPROJ
a1d022b
 #ifdef VTK_USE_SYSTEM_LIBPROJ
a1d022b
-# include <projects.h>
a1d022b
+# if VTK_LibPROJ_MAJOR_VERSION >= 5
a1d022b
+#  include <proj.h>
a1d022b
+# endif
a1d022b
+# if VTK_LibPROJ_MAJOR_VERSION < 6
a1d022b
+#  include <projects.h>
a1d022b
+# endif
a1d022b
+# if VTK_LibPROJ_MAJOR_VERSION >= 6
a1d022b
+#  define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H 1
a1d022b
+# endif
a1d022b
 # include <proj_api.h>
a1d022b
 # include <geodesic.h>
a1d022b
 #else
6911e89
--- VTK-8.2.0/CMake/FindLibPROJ.cmake	2019-09-11 22:13:29.493741215 -0600
6911e89
+++ vtk/CMake/FindLibPROJ.cmake	2019-09-11 19:56:57.465802610 -0600
6911e89
@@ -1,55 +1,67 @@
6911e89
-# Find LibPROJ library and header file
6911e89
-# Sets
6911e89
-#   LibPROJ_FOUND       to 0 or 1 depending on the result
6911e89
-#   LibPROJ_INCLUDE_DIR to directories required for using libproj4
6911e89
-#   LibPROJ_LIBRARIES   to libproj4 and any dependent libraries
6911e89
-# If LibPROJ_REQUIRED is defined, then a fatal error message will be generated if libproj4 is not found
6911e89
-
6911e89
-if ( NOT LibPROJ_INCLUDE_DIR OR NOT LibPROJ_LIBRARIES OR NOT LibPROJ_FOUND )
6911e89
+find_path(LibPROJ_INCLUDE_DIR
6911e89
+  NAMES proj_api.h proj.h
6911e89
+  DOC "libproj include directories")
6911e89
+mark_as_advanced(LibPROJ_INCLUDE_DIR)
6911e89
 
6911e89
-  if ( $ENV{LibPROJ_DIR} )
6911e89
-    file( TO_CMAKE_PATH "$ENV{LibPROJ_DIR}" _LibPROJ_DIR )
6911e89
+find_library(LibPROJ_LIBRARY_RELEASE
6911e89
+  NAMES proj
6911e89
+  DOC "libproj release library")
6911e89
+mark_as_advanced(LibPROJ_LIBRARY_RELEASE)
6911e89
+
6911e89
+find_library(LibPROJ_LIBRARY_DEBUG
6911e89
+  NAMES projd
6911e89
+  DOC "libproj debug library")
6911e89
+mark_as_advanced(LibPROJ_LIBRARY_DEBUG)
6911e89
+
6911e89
+include(SelectLibraryConfigurations)
6911e89
+select_library_configurations(LibPROJ)
6911e89
+
6911e89
+if (LibPROJ_INCLUDE_DIR)
6911e89
+  if (EXISTS "${LibPROJ_INCLUDE_DIR}/proj.h")
6911e89
+    file(STRINGS "${LibPROJ_INCLUDE_DIR}/proj.h" _libproj_version_lines REGEX "#define[ \t]+PROJ_VERSION_(MAJOR|MINOR|PATCH)")
6911e89
+    string(REGEX REPLACE ".*PROJ_VERSION_MAJOR *\([0-9]*\).*" "\\1" _libproj_version_major "${_libproj_version_lines}")
6911e89
+    string(REGEX REPLACE ".*PROJ_VERSION_MINOR *\([0-9]*\).*" "\\1" _libproj_version_minor "${_libproj_version_lines}")
6911e89
+    string(REGEX REPLACE ".*PROJ_VERSION_PATCH *\([0-9]*\).*" "\\1" _libproj_version_patch "${_libproj_version_lines}")
6911e89
+  else ()
6911e89
+    file(STRINGS "${LibPROJ_INCLUDE_DIR}/proj_api.h" _libproj_version_lines REGEX "#define[ \t]+PJ_VERSION")
6911e89
+    string(REGEX REPLACE ".*PJ_VERSION *\([0-9]*\).*" "\\1" _libproj_version "${_libproj_version_lines}")
6911e89
+    math(EXPR _libproj_version_major "${_libproj_version} / 100")
6911e89
+    math(EXPR _libproj_version_minor "(${_libproj_version} % 100) / 10")
6911e89
+    math(EXPR _libproj_version_patch "${_libproj_version} % 10")
6911e89
   endif ()
6911e89
-
6911e89
-  set(LibPROJ_LIBRARY_SEARCH_PATHS
6911e89
-    ${_LibPROJ_DIR}
6911e89
-    ${_LibPROJ_DIR}/lib64
6911e89
-    ${_LibPROJ_DIR}/lib
6911e89
-  )
6911e89
-
6911e89
-  find_library( LibPROJ_LIBRARY_RELEASE
6911e89
-    NAMES proj
6911e89
-    HINTS
6911e89
-      ${LibPROJ_LIBRARY_SEARCH_PATHS}
6911e89
-  )
6911e89
-
6911e89
-  find_library( LibPROJ_LIBRARY_DEBUG
6911e89
-    NAMES projd
6911e89
-    PATHS
6911e89
-      ${LibPROJ_LIBRARY_SEARCH_PATHS}
6911e89
-  )
6911e89
-
6911e89
-  find_path( LibPROJ_INCLUDE_DIR
6911e89
-    NAMES proj_api.h proj.h
6911e89
-    HINTS
6911e89
-      ${_LibPROJ_DIR}
6911e89
-      ${_LibPROJ_DIR}/include
6911e89
-  )
6911e89
-
6911e89
-  include(SelectLibraryConfigurations)
6911e89
-  select_library_configurations(LibPROJ)
6911e89
-
6911e89
-  include(FindPackageHandleStandardArgs)
6911e89
-  find_package_handle_standard_args(LibPROJ
6911e89
-                                    REQUIRED_VARS LibPROJ_LIBRARY LibPROJ_INCLUDE_DIR)
6911e89
-
6911e89
-  if(LibPROJ_FOUND)
6911e89
-    set(LibPROJ_INCLUDE_DIRS ${LibPROJ_INCLUDE_DIR})
6911e89
-
6911e89
-    if(NOT LibPROJ_LIBRARIES)
6911e89
-      set(LibPROJ_LIBRARIES ${LibPROJ_LIBRARY})
6911e89
-    endif()
6911e89
-  endif()
6911e89
+  set(LibPROJ_VERSION "${_libproj_version_major}.${_libproj_version_minor}.${_libproj_version_patch}")
6911e89
+  set(LibPROJ_MAJOR_VERSION "${_libproj_version_major}")
6911e89
+  unset(_libproj_version_major)
6911e89
+  unset(_libproj_version_minor)
6911e89
+  unset(_libproj_version_patch)
6911e89
+  unset(_libproj_version)
6911e89
+  unset(_libproj_version_lines)
6911e89
 endif ()
6911e89
 
6911e89
-mark_as_advanced(LibPROJ_INCLUDE_DIR)
6911e89
+include(FindPackageHandleStandardArgs)
6911e89
+find_package_handle_standard_args(LibPROJ
6911e89
+  REQUIRED_VARS LibPROJ_LIBRARY LibPROJ_INCLUDE_DIR
6911e89
+  VERSION_VAR LibPROJ_VERSION)
6911e89
+
6911e89
+if (LibPROJ_FOUND)
6911e89
+  set(LibPROJ_INCLUDE_DIRS "${LibPROJ_INCLUDE_DIR}")
6911e89
+  set(LibPROJ_LIBRARIES "${LibPROJ_LIBRARY}")
6911e89
+
6911e89
+  if (NOT TARGET LibPROJ::LibPROJ)
6911e89
+    add_library(LibPROJ::LibPROJ UNKNOWN IMPORTED)
6911e89
+    set_target_properties(LibPROJ::LibPROJ PROPERTIES
6911e89
+      INTERFACE_INCLUDE_DIRECTORIES "${LibPROJ_INCLUDE_DIR}")
6911e89
+    if (LibPROJ_LIBRARY_RELEASE)
6911e89
+      set_property(TARGET LibPROJ::LibPROJ APPEND PROPERTY
6911e89
+        IMPORTED_CONFIGURATIONS RELEASE)
6911e89
+      set_target_properties(LibPROJ::LibPROJ PROPERTIES
6911e89
+        IMPORTED_LOCATION_RELEASE "${LibPROJ_LIBRARY_RELEASE}")
6911e89
+    endif ()
6911e89
+    if (LibPROJ_LIBRARY_DEBUG)
6911e89
+      set_property(TARGET LibPROJ::LibPROJ APPEND PROPERTY
6911e89
+        IMPORTED_CONFIGURATIONS DEBUG)
6911e89
+      set_target_properties(LibPROJ::LibPROJ PROPERTIES
6911e89
+        IMPORTED_LOCATION_DEBUG "${LibPROJ_LIBRARY_DEBUG}")
6911e89
+    endif ()
6911e89
+  endif ()
6911e89
+endif ()