diff options
| -rw-r--r-- | CMakeLists.txt | 4 | ||||
| -rw-r--r-- | NEWS | 184 | ||||
| -rw-r--r-- | docs/source/community/rfc/index.rst | 1 | ||||
| -rw-r--r-- | docs/source/community/rfc/rfc-7.rst | 135 | ||||
| -rw-r--r-- | docs/source/conf.py | 2 | ||||
| -rw-r--r-- | man/man1/cct.1 | 8 | ||||
| -rw-r--r-- | man/man1/cs2cs.1 | 10 | ||||
| -rw-r--r-- | man/man1/geod.1 | 6 | ||||
| -rw-r--r-- | man/man1/gie.1 | 6 | ||||
| -rw-r--r-- | man/man1/proj.1 | 6 | ||||
| -rw-r--r-- | man/man1/projinfo.1 | 8 | ||||
| -rw-r--r-- | man/man1/projsync.1 | 6 | ||||
| -rw-r--r-- | src/Makefile.am | 2 |
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}") @@ -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 = \ |
