aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--NEWS184
-rw-r--r--docs/source/community/rfc/index.rst1
-rw-r--r--docs/source/community/rfc/rfc-7.rst135
-rw-r--r--docs/source/conf.py2
-rw-r--r--man/man1/cct.18
-rw-r--r--man/man1/cs2cs.110
-rw-r--r--man/man1/geod.16
-rw-r--r--man/man1/gie.16
-rw-r--r--man/man1/proj.16
-rw-r--r--man/man1/projinfo.18
-rw-r--r--man/man1/projsync.16
-rw-r--r--src/Makefile.am2
13 files changed, 349 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1f05465a..661b3f6a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -113,9 +113,9 @@ include(ProjVersion)
proj_version(MAJOR 8 MINOR 2 PATCH 0)
# Use libtool convention to build the CMake's VERSION and SOVERSION
# See https://github.com/pvanhoof/dir-examples#cmake-in-the-cmake-example
-set(PROJ_LIBTOOL_CURRENT 23)
+set(PROJ_LIBTOOL_CURRENT 24)
set(PROJ_LIBTOOL_REVISION 0)
-set(PROJ_LIBTOOL_AGE 1)
+set(PROJ_LIBTOOL_AGE 2)
math(EXPR PROJ_API_VERSION "${PROJ_LIBTOOL_CURRENT} - ${PROJ_LIBTOOL_AGE}")
set(PROJ_BUILD_VERSION "${PROJ_API_VERSION}.${PROJ_LIBTOOL_AGE}.${PROJ_LIBTOOL_REVISION}")
diff --git a/NEWS b/NEWS
index 399bb29d..0a227740 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,187 @@
+8.2.0 Release Notes
+-------------------
+
+ Announcements
+ -------------
+
+ From PROJ 9.0.0 and onwards CMake will be the only build system bundled
+ with the PROJ package. As a consequence support for Autotools builds will
+ stop when the 8.2 branch of PROJ reaches end of life. We encourage
+ everyone to adjust their build workflows as soon as possible and report
+ any discrepancies discovered between Autotools and CMake builds.
+
+ Details about the build system unification can be found in PROJ RFC 7.
+
+
+ Updates
+ -------
+
+ o Added the S2 projection (#2749)
+
+ o Added support for Degree Sign on input (#2791)
+
+ o ESRI WKT: add support for import/export of (non interrupted)
+ Goode Homolosine (#2827)
+
+ o Make filemanager aware of UWP Win32 API (#2831)
+
+ o Add proj_create_conversion_pole_rotation_netcdf_cf_convention() to
+ address netCDF datasets using a pole rotation method (#2835)
+
+ o Emit better debug message when a grid isn't found (#2838)
+
+ o Add support for GeodeticCRS using a Spherical planetocentric
+ coordinate system (#2847)
+
+ o PROJJSON: support additional properties allowed in id object (version,
+ authority_citation, uri) for parity with WKT2:2019 (#2850)
+
+ o Database layout modified to include "anchor" field to geodetic_datum and
+ vertical_datum tables, consequently database layout version is increased
+ to 1.2 (#2859)
+
+ o proj_factors(): accept P to be a projected CRS (#2868)
+
+ o Add IAU_2015 CRS definitions (#2876)
+
+ o CRS::extractGeodeticCRS(): implement for DerivedProjectedCRS (#2877)
+
+ o Added proj_trans_bounds() (#2882)
+
+ o CMake: add a BUILD_APPS to be able to disable build of all applications (#2895)
+
+ o CMake: generate invproj/invgeod binaries (symlinks on Unix, copy otherwise)
+ (#2897)
+
+ o CMake build: add generate_wkt1_parser and generate_wkt2_parser manual
+ target, and logic to detect when they must be run (#2900)
+
+ o Add fallback strategy for tinshift transform to use closest triangle for
+ points not in any (#2907)
+
+ o Database: update to EPSG v10.038 (#2910)
+
+ o CMake: revise handling of symbol export and static builds (#2912)
+
+ Bug fixes
+ ---------
+
+ o Fix O(n^2) performance patterns where n is the number of steps of
+ a pipeline (#2820)
+
+ o Detect ESRI WKT better in certain circumstances (#2823)
+
+ o Fix performance issue on pipeline instanciation of huge (broken)
+ pipelines (#2824)
+
+ o Make sure to re-order projection parameters according to their canonical
+ order if needed (#2842)
+
+ o Fix database access across fork() when SQLite3 doesn't use pread[64]() (#2845)
+
+ o Fix error in implementation of Inverse ellipsoidal orthographic projection
+ that cause convergence to sometimes fail (#2853)
+
+ o Fix handling of edge-case coordinates in invers ortho ellipsoidal
+ oblique (#2855)
+
+ o proj_normalize_for_visualization(): set input and output units when there
+ are several alternative transformations (#2867)
+
+ o CRS::identify(): fix ignoring CS order when identifying a geodetic CRS
+ by a PROJ string with just the ellipsoid (#2881)
+
+ o Fix CRS Equality with PROJ parameter order (#2887)
+
+ o WKT concatenated operation parsing: fix when a axis order reversal conversion
+ is the first or last operation (#2891)
+
+ o WKT1 parser: recognize Lambert_Conformal_Conic as projection name for
+ LCC 1SP or 2SP (#2893)
+
+ o CMake: Always build gie if testing is requested (#2899)
+
+ o Geographic 3D CRS: allow to export to WKT1:ESRI if only the GEOGCS is known
+ (and thus extrapolating a VERTCS) (#2902)
+
+ o lib_proj.cmake: add a PROJ::proj alias and add BUILD_INTERFACE include
+ directories, so that proj can be used as a subdirectory of a larger
+ project (#2913)
+
+
+ THANKS TO
+ ---------
+
+ Thomas Knudsen
+ Alan D. Snow
+ Johannes Schauer Marin Rodrigues
+ Howard Butler
+ Geoff Evans
+ Joris Van den Bossche
+ marcus-elia
+ Waheed Barghouthi
+ snowman2
+ Ben Boeckel
+ Mike Taves
+ Javier Jimenez Shaw
+ Brendan Jurd
+ Kristian Evers
+ Even Rouault
+
+
+8.1.1 Release Notes
+-------------------
+
+ Updates
+ -------
+
+ o EPSG Database updated to version 10.028 (#2773)
+
+ Bug Fixes
+ ---------
+
+ o Include algorithm header file to avoid build errors on Alpine Linux (#2769)
+
+ o CMake: fix installation of executables on iOS (#2766)
+
+ o Associate extents to transformations of CRS's that include GEOIDMODEL (#2769)
+
+ o Logging: avoid some overhead when logging is not enabled (#2775)
+
+ o ortho: remove useless and invalid log trace (#2777)
+
+ o CMake: remove external nlohmann_json from INTERFACE_LINK_LIBRARIES target (#2781)
+ o reateOperations(): fix SourceTargetCRSExtentUse::NONE mode (#2783)
+
+ o GeoTIFF grid reading: perf improvements (#2788)
+
+ o Conversion::createUTM(): avoid integer overflow (#2796)
+
+ o Inverse laea ellipsoidal: return PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN
+ when appropriates (#2801)
+
+ o Make sure that proj_crs_promote_to_3D returns a derived CRS (#2806)
+
+ o createOperations(): fix missing deg<-->rad conversion when transforming with a
+ CRS that has a fallback-to-PROJ4-string behaviour and is a BoundCRS of a
+ GeographicCRS (#2808)
+
+ o WKT2 import/export: preserve PROJ.4 CRS extension string in REMARKS[] (#2812)
+
+ o BoundCRS: accept importing/exporting in WKT2 and PROJJSON the
+ scope/area/extent/id attributes (#2815)
+
+ o ConcatenatedOperation::fixStepsDirection(): fix bad chaining of steps when
+ inverse map projection is involved in non-final step (#2819)
+
+
+ THANKS TO
+ ---------
+
+ Brendan Jurd
+ Kristian Evers
+ Even Rouault
+
8.1.0 Release Notes
-------------------
diff --git a/docs/source/community/rfc/index.rst b/docs/source/community/rfc/index.rst
index bb8b1455..53087129 100644
--- a/docs/source/community/rfc/index.rst
+++ b/docs/source/community/rfc/index.rst
@@ -17,3 +17,4 @@ the project.
rfc-4
rfc-5
rfc-6
+ rfc-7
diff --git a/docs/source/community/rfc/rfc-7.rst b/docs/source/community/rfc/rfc-7.rst
new file mode 100644
index 00000000..b1ca3547
--- /dev/null
+++ b/docs/source/community/rfc/rfc-7.rst
@@ -0,0 +1,135 @@
+.. _rfc7:
+
+====================================================================
+PROJ RFC 7: Drop Autotools, maintain CMake
+====================================================================
+
+:Author: Mike Taves
+:Contact: mwtoews@gmail.com
+:Status: Adopted
+:Implementation target: PROJ 9.0
+:Last Updated: 2021-10-27
+
+Summary
+-------------------------------------------------------------------------------
+
+This RFC proposes to drop Autotools for PROJ 9.0, and to maintain CMake
+for build automation, testing and packaging. This will reduce the overall
+maintenance for PROJ and will enable the library to be integrated into other
+projects that use CMake.
+
+Background
+-------------------------------------------------------------------------------
+
+Here is a short timeline of the build tools used for PROJ:
+
+- Throughout the mid-1990s, Gerald Evenden maintained a Unix build system with
+ a few scripts (some derived from Autoconf), and Makefile templates.
+- In 2000, Frank Warmerdam wrote Autoconf and Automake configurations for
+ PROJ 4.4.0.
+- This was followed by a NMake configuration to build PROJ 4.4.2 for Windows.
+- In 2014, a CMake build setup was introduced by Howard Butler for
+ PROJ 4.9.0RC1. The CMake configuration was improved for the 4.9.1 release,
+ but not considered at feature parity with the Autotools builds at the time.
+- The NMake build setup was removed for PROJ 6.0.0, as its functionality had
+ been replaced by CMake.
+
+Motivation
+-------------------------------------------------------------------------------
+
+The primary motivation in removing Autotools is to reduce the burden of
+maintaining multiple build configurations, which requires developers to be
+familiar with different tools and configuration files. There are several other
+benefits in maintaining a single build system:
+
+- Remove extra configuration and m4 macro files from source repository,
+- Simplify scripts used for running tests for CI services (GitHub Actions,
+ TravisCI),
+- Reduce compilation time (and carbon footprint) used for testing on CI
+ services,
+- Ease development effort, particularly with new contributors.
+
+Why drop Autotools?
+-------------------------------------------------------------------------------
+
+The GNU Build System or Autotools consist of a suite of tools including
+Autoconf and Automake, which can be used to build software on Unix-like
+systems. These tools are not cross-platform, and do not naively integrate
+with development environments on Microsoft Windows. Furthermore, the existing
+PROJ Autotools builds do not install the CMake configuration files required to
+find PROJ from other projects that use CMake
+(`#2546 <https://github.com/OSGeo/PROJ/issues/2546>`_).
+
+Why use CMake?
+-------------------------------------------------------------------------------
+
+CMake is an open source cross-platform tool for build automation, testing and
+packaging of software. It does not directly compile the software, but manages
+the build process using generators, including Unix Makefiles and Ninja among
+other command-based and IDE tools. The CMake software has been under active
+development since its origins in 2000. The CMake language is carefully
+developed with backwards-compatible policies that aim to provide consistent
+behaviour across different versions. CMake is currently the preferred build
+tool for PROJ for the following reasons:
+
+- It has existed in the PROJ code base since 2014, and is familiar to active
+ PROJ contributors,
+- It can install configuration files that can be used by other software that
+ use CMake to find PROJ for linking via ``find_package()``,
+- CMake configurations are used in 3rd-party binary packages of PROJ,
+ including conda-forge and vcpkg,
+- It can be used to build PROJ on all major operating systems and compiler
+ combinations (where compatible),
+- It has integration with modern IDEs and tools, including
+ Microsoft Visual Studio and Qt Creator.
+
+Why not CMake?
+-------------------------------------------------------------------------------
+
+Other modern cross-platform build systems exist, including Meson and Bazel,
+which have many advantages over CMake. However, they are currently not widely
+used by active PROJ contributors. This RFC should not restrict future build
+system configurations being introduced to PROJ, if they are proven to have
+advantages to CMake over time.
+
+Potential impacts
+-------------------------------------------------------------------------------
+
+Binary packagers that currently rely on Autotools would obviously need to
+transition building and testing PROJ with CMake. Issues related to
+multiarch builds of PROJ may become apparent, which can be patched and/or
+reported to PROJ developers. One feature of Autotools is that both static and
+dynamic (shared) libraries are built, which packagers may distribute. This
+feature is currently not set-up for PROJ, as it would need to be configured
+and built twice.
+
+End-users that use binary packages of PROJ should not be impacted. PROJ should
+be discoverable via both pkg-config and CMake's ``find_package()``.
+Other projects that use Autotools will continue to work as expected,
+linking statically or dynamically to PROJ built by CMake.
+
+Transition plan
+-------------------------------------------------------------------------------
+
+If this proposal is approved, the following tasks should be completed:
+
+- Rewrite CI tests to only use CMake for packaging, building, testing,
+ installation and post-install tests,
+- Remove files only used by Autotools, also update ``.gitignore``,
+- Update documentation and ``HOWTORELEASE`` notes.
+
+Related issues will be tracked on GitHub with a tag
+`RFC7: Autotools→CMake <https://github.com/OSGeo/PROJ/labels/RFC7%3A%20Autotools%E2%86%92CMake>`_.
+
+Adoption status
+-------------------------------------------------------------------------------
+
+The RFC was adopted on 2021-10-26 with +1's from the following PSC members
+
+* Kristian Evers
+* Even Rouault
+* Howard Butler
+* Thomas Knudsen
+* Kurt Schwehr
+* Charles Karney
+* Thomas Knudsen
diff --git a/docs/source/conf.py b/docs/source/conf.py
index d746647b..d71aabeb 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -78,7 +78,7 @@ copyright = u'1983-{0}'.format(now.year)
# |version| and |release|, also used in various other places throughout the
# built documents.
version = '8.2.0'
-data_version = '1.7'
+data_version = '1.8'
# use same |release| as |version|
release = version
diff --git a/man/man1/cct.1 b/man/man1/cct.1
index f6673b2d..fe882dfe 100644
--- a/man/man1/cct.1
+++ b/man/man1/cct.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "CCT" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-cct \- Coordinate Conversion and Transformation
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "CCT" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+cct \- Coordinate Conversion and Transformation
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
@@ -62,7 +62,7 @@ uniqueness is not guaranteed, heuristics are applied to determine the appropriat
a OGC URN combining references for concatenated operations
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
.IP \(bu 2
-a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.2/projjson.schema.json\fP
+a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP
.UNINDENT
.sp
New in version 8.0.0.
diff --git a/man/man1/cs2cs.1 b/man/man1/cs2cs.1
index 5334ba9a..22ef10b9 100644
--- a/man/man1/cs2cs.1
+++ b/man/man1/cs2cs.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "CS2CS" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-cs2cs \- Cartographic coordinate system filter
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "CS2CS" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+cs2cs \- Cartographic coordinate system filter
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
@@ -70,7 +70,7 @@ e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
a OGC URN combining references for concatenated operations
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
.IP \(bu 2
-a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.2/projjson.schema.json\fP (\fIadded in 6.2\fP)
+a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP (\fIadded in 6.2\fP)
.IP \(bu 2
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
.UNINDENT
@@ -317,7 +317,7 @@ The following script
.nf
.ft C
cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27 \-r <<EOF
-45d15\(aq33.1" 111.5W
+45°15\(aq33.1" 111.5W
45d15.551666667N \-111d30
+45.25919444444 111d30\(aq000w
EOF
diff --git a/man/man1/geod.1 b/man/man1/geod.1
index 1a9a8a3a..dbdb70ca 100644
--- a/man/man1/geod.1
+++ b/man/man1/geod.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "GEOD" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-geod \- Geodesic computations
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "GEOD" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+geod \- Geodesic computations
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
diff --git a/man/man1/gie.1 b/man/man1/gie.1
index 3134a75a..b308cc9b 100644
--- a/man/man1/gie.1
+++ b/man/man1/gie.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "GIE" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-gie \- The Geospatial Integrity Investigation Environment
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "GIE" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+gie \- The Geospatial Integrity Investigation Environment
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
diff --git a/man/man1/proj.1 b/man/man1/proj.1
index 29fd63b1..11535a0c 100644
--- a/man/man1/proj.1
+++ b/man/man1/proj.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "PROJ" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-proj \- Cartographic projection filter
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "PROJ" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+proj \- Cartographic projection filter
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
diff --git a/man/man1/projinfo.1 b/man/man1/projinfo.1
index d32c5d39..653412f8 100644
--- a/man/man1/projinfo.1
+++ b/man/man1/projinfo.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "PROJINFO" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-projinfo \- Geodetic object and coordinate operation queries
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "PROJINFO" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+projinfo \- Geodetic object and coordinate operation queries
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
@@ -86,7 +86,7 @@ e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
a OGC URN combining references for concatenated operations
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
.IP \(bu 2
-a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.2/projjson.schema.json\fP (\fIadded in 6.2\fP)
+a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP (\fIadded in 6.2\fP)
.IP \(bu 2
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
.UNINDENT
diff --git a/man/man1/projsync.1 b/man/man1/projsync.1
index 57141647..24ceed40 100644
--- a/man/man1/projsync.1
+++ b/man/man1/projsync.1
@@ -1,8 +1,5 @@
.\" Man page generated from reStructuredText.
.
-.TH "PROJSYNC" "1" "Jul 1, 2021" "8.1.0" "PROJ"
-.SH NAME
-projsync \- Downloading tool of resource files
.
.nr rst2man-indent-level 0
.
@@ -30,6 +27,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
+.TH "PROJSYNC" "1" "Nov 1, 2021" "8.2.0" "PROJ"
+.SH NAME
+projsync \- Downloading tool of resource files
.SH SYNOPSIS
.INDENT 0.0
.INDENT 3.5
diff --git a/src/Makefile.am b/src/Makefile.am
index 1e847080..03d0db74 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -59,7 +59,7 @@ geodtest_LDADD = libproj.la
lib_LTLIBRARIES = libproj.la
-libproj_la_LDFLAGS = -no-undefined -version-info 23:0:1
+libproj_la_LDFLAGS = -no-undefined -version-info 24:0:2
libproj_la_LIBADD = @SQLITE3_LIBS@ @TIFF_LIBS@ @CURL_LIBS@
libproj_la_SOURCES = \