-
-
Notifications
You must be signed in to change notification settings - Fork 371
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rectObj wrong projection with PROJ > 6 #6478
Comments
Possibly related - the pull request #6472 wouldn't apply to this issue, but it may be very similar and missing a reprojection call. |
@WouterVisscher can you attach a small test case as a zip archive here? (mapfile snippet, data sample, commands.txt containing the commands to reproduce - you can use I'm also about to report a PROJ >=6 issue, maybe all 3 reports/findings are the same. |
Opps I see your zip above, thanks! Sorry I missed it. |
For completion, the mapserver config file
query strings use for testing: WMS: |
Thanks @WouterVisscher, appreciated. |
@jmckenna I can make a new zip with config + commands.txt if you want (and data + mapfile of course) |
@WouterVisscher might be good just to make it easier if someone else wants to test. Thanks. |
@jmckenna updated the main post with a new zip |
@WouterVisscher thanks, sorry to be a pain, ha. Thanks for this. |
Better deal with importing strings like '+init=epsg:XXXX +over' (refs MapServer/MapServer#6478)
… applied (PROJ 9) (fixes MapServer#6478)
… applied (PROJ 9) (fixes MapServer#6478)
Fix in #6479 + OSGeo/PROJ#3055 |
That's fast! 👍🏻 |
msProjectRect(): fix PROJ >= 6 when datum shift is involved (fixes #6478)
… applied (PROJ 9) (fixes MapServer#6478)
[Backport 7.6] msProjectRect(): fix PROJ >= 6 when datum shift is involved (fixes #6478)
@rouault - I'm currently fixing the MapServer Appveyor builds, which rely on Proj 9.1 in the GISInternals SDK. The test added to check this issue is failing. See https://ci.appveyor.com/project/SethG/mapserver/build/job/wm0wngk7mg169uoh#L610 The point seems to be reprojected to different coordinates than the lower-left point of the rectangle. The assertion is false so the test isn't skipped, but fails on
|
@geographika No idea comes to mind |
linked to OSGeo/gdal#7179 |
I absoluetely see no connection between a PROJ releated issue and a MSSQL authentication one |
Alan D. Snow (8): BUG: Close database connection if autoclose set to True LOG: Default log level PJ_LOG_ERROR Added proj_get_celestial_body_list_from_database (#2674) DOC: Add instructions for building docs with docker image Add proj_trans_bounds to compute the image of a input bounding box through a transformation (#2882) TYPE: Update const declarations in proj_trans_bounds DOC: add available keys to proj_context_get_database_metadata DOC: Add warning in proj_as_proj_string about potential information loss with CRS Alexander Nehrbass (5): Add vertical gird files for PL-geoid-2011, Polish geoid model Update metadata.sql to PROJ-data version 1.9 Add Belgian geoid model hBG18 to grid alternatives Fix typos/formatting in tutorials Add Slovenian geoid model SLO-VRP2016/Koper Andrew Annex (1): Adds Pseudo Mercator to build_db_from_iau.py Anthony Roberts (1): Fix build issue for ARM64 when using MSVC Bas Couwenberg (1): Fix spelling errors. Ben Boeckel (2): cmake: remove unused configure checks (#2789) cmake: check the right variable for `libdl` Bert Huijben (1): labrd: document in the tagline and documentation that lat_0 is required (#2997) Biswapriyo Nath (1): cmake: Follow unix-like install directories in mingw Brendan Ashworth (1): add startup + OSS to users docs Brendan Jurd (14): Update "PROJ.4" to "PROJ" in the Contributing document. Fix order of instructions for installing from source. (#2797) Add support for Degree Sign on input (#2791) Update docs About page to pull in license text from COPYING. Use `literalinclude` for COPYING in About page. DOC: Add content for Development/Error handling page. DOC: Refresh Development/Quickstart and remove Development/Threads (#2863) DOCS: Add doxygen entry for proj_context_set_search_paths. DOCS: Remove LATEX_SOURCE_CODE setting from Doxyfile. Docs: Add new Ellipsoids page to explain ellipsoidal parameters (#2922) Set more precise error code for parsing errors in proj_create(). unitconvert: round to nearest date when converting to yyyymmdd. DOCS: add missing functions from filemanager.cpp Rename variable per PR feedback on #3111. Charles Karney (28): Update Mercator projection Try to fix compiler complaints for max and constexpr sqrt Address comments by @schwehr phi2.cpp: remove unused static consts + minor code tweak lcc.cpp: fix abs -> fabs phi2.cpp: Slight cosmetic changes to sinpsi2tanphi. Use sincos optimization in merc_e_forward. Revised timing data... Fix/add some comments. Use nm units in builtins.gie. Remove backward looking comments in code. merc.cpp + phi2.cpp: Avoid declaring multiple variables in 1 statement. Sync w GeographicLib 1.51. Remove C99 compatibility functions. (#2445) Update geodesic routines from GeographicLib 1.52 Work around inaccurate hypot for Visual Studio 2105 (32-bit) geodesic.c: fix conditions under which hypot workaround is applied. Minor changes to address lint in geodesic.c (courtesy of Marc Emery <memery@myotest.com>) Testing version 2.0 of geodesic routines Fix CI errors. geodesic.c: remove unused typedef Sync with source Clean up cmake for src/tests Improved series for the meridian length and its inverse Fix silly documentation issue (quoted value of pi/2 triggers error) Implement the ellipsoidal gnomonic projection Squelch complaint about uninitialized variables in gnom.cpp. Various improvements suggested by @rouault. In mlfn.cpp, invoke pj_enfn with P->n to avoid recomputating n Invoke geod_init with already computed P->f. Synchronize with 2.1 for geographiclib-c for geodesic support Daniel Evans (1): Remove git stash holdover in news.rst David Hoese (1): Add explicit NaN handling to proj_trans and gie (#3603) (fixes #3596) Eli Rykoff (4): Increase MAX_ITER so Mollweide forward projection works near the poles. (#3082) DOC: Add missing lat_0 parameter to gnomonic documentation. Improve documentation plotting of interrupted projections. (#3144) Add Interrupted Mollweide (land and ocean view) projections (#3139) Erixen Cruz (2): Use GNUInstallDirs for cmake install locations (#3150) Print deprecation warning for "find_package(PROJ4)" (#3165) Ethan Koenig (1): Fix deallocation bug in `proj_info` Even Rouault (793): proj_create_ellipsoidal_2D/3D_cs(): doc improvement Make sure that remarks is preserved when substituting (EPSG) grid name by PROJ one Fill remarks for PROJ-based operation mixing horizontal and vertical transformations Doxygen: improve doc of functions related to Datum/DatumEnsemble When reading from database, possibly return Geographic/GeodeticCRS with a DatumEnsemble, typically for WGS 84 and ETRS89 ('breaking change') When reading from database, possibly return VerticalCRS with a DatumEnsemble projinfo / createObjectsFromName(): support returning a datum ensemble proj.h: add PJ_CATEGORY_DATUM_ENSEMBLE for proj_create_from_database() docs/Makefile: restore custom 'html' target Code formatting createBoundCRSToWGS84IfPossible(): make it return same result with a CRS built from EPSG code or WKT1 COPYING: update automake and cmake: install COPYING, NEWS and AUTHORS in /share/doc/proj cct.rst: fix indentation cct: allow @filename syntax Polar stereographic at pole: make it return (0,0) WKT2 parsing: several fixes related to map projection parameter units github actions: update to conda-incubator/setup-miniconda@v2 to be compatible with latest github action security fix constraints cs2cs, cct, proj and geod: fflush(stdout) after each line to emit each result as soon as it is produced Database: update to EPSG v10.007 backport.yml: update to what QGIS uses Make GeographicCRS/GeodeticCRS::isEquivalentTo() work properly when comparing to a DerivedGeographicCRS/DerivedGeodeticCRS createOperation(): make it work properly when one of the CRS is a BoundCRS of a DerivedGeographicCRS (+proj=ob_tran +o_proj=lonlat +towgs84=....) WKT parsing: fix ingestion of WKT with a Geocentric CRS as the base of the projected CRS PROJJSON parsing: fix parsing of a Geodetic CRS with a DatumEnsemble, and fix parsing of a ProjectedCRS whose base is a Geocentric CRS projinfo.cpp: improve hint when to use --spatial-test intersects Database ESRI: map 2 grids in grid_alternatives Remove no longer used build_db_create_ignf.py script GeographicCRS::_isEquivalentTo(EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS): make it work when comparing easting,northing,up and northing,easting,up GitHub action: add a Mac build .travis.yml: remove mac job Add +proj=topocentric geocentric->topocentric conversion (fixes #500) GitHub action: add a mingw_w64 build .travis.yml: remove mingw job mutex.cpp: replace NULL by nullptr createOperation(): add a ballpark vertical transformation when dealing with GEOIDMODEL[] Add option to allow export of Geographic/Projected 3D CRS in WKT1_GDAL Github action: add a clang static analyzer job Travis-CI: remove CSA job travis/install.sh: make it robust to objdump on 20.04 and/or clang outputing symbols in different order Github action: add a clang linux build job Travis-CI: remove linux_clang job Fix mingw_w64 warning about pj_acquire_lock() prototype being missing PRIMEM WKT handling: fixes on import for 'sexagesimal DMS' or from WKT1:GDAL/ESRI when GEOGCS UNIT != Degree; morph to ESRI the PRIMEM name on export formatting fixes Github action: add a linux_gcc_32bit job Travis-CI: remove linux_gcc8 job crs.hpp: add cppcheck suppression for cppcheck 1.90 of ubuntu 20.04 Add github action for cppcheck Move linux_gcc 4.8 job to github action, and on Travis-CI only keep the doc publishing testcct: create 'a' and 'b' from scratch createObjectsFromName(): in exact match, make looking for 'ETRS89 / UTM zone 32N' return only the exact match cs2cs: add --area and --bbox options to restrict candidate coordinate operations (fixes #2423) proj_create_crs_to_crs_from_pj(): do not use PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION if area is specified Add github action for VS2019 x64 build appveyor.yml: disable VS2017 x64 build test/fuzzers: remove standard_fuzzer that used proj_api.h now removed WKT1 import: better deal with apps.epsg.org output w.r.t datum ensemble names createOperations(): get a '+proj=noop' instead of '+proj=affine +s33=-1' when attempting (non-sensical) EPSG:3855 to EPSG:4326 Inverse tmerc spherical: fix wrong sign of latitude when lat_0 is used (fixes #2468) Spherical tmerc forward: do not restrict to [-90,90] longitude range pj_datum_set(): make code more obvious to humans and analyzers API cleanup: unexport number of internal symbols, and remove/replace a few unused ones test_io.cpp: formatting fix Database: add metadata with the version number of the database layout and check it in the code fix build Add build time option to make PROJ_LIB env var tested last (fixes #2399) cs2cs / proj_create_crs_to_crs_from_pj(): add a --authority switch to control where coordinate operations are looked for (fixes #2442) Database: fix building proj.db with SQLite built with -DSQLITE_DQS=0 CI: test with a SQLite3 binary built with SQLITE_DQS=0 to avoid issue #2480 Doc: fix return data type of proj_trans_array() test_operation.cpp: remove debug message funtions.rst: fix sphynx syntax .github/workflows/clang_static_analyzer/start.sh: add apt update conda.yml: restrict to main repository builds, otherwise fails to build in forks Split coordinateoperation.cpp in many files in iso19111/operation directory Split test_operation.cpp in two parts CMake: install data/*.json files (fixes #2485) createOperations(): fix inconsistent chaining exception when transforming from BoundCRS of projected CRS based on NTF Paris to BoundCRS of geog CRS NTF Paris. Fixes https://github.com/OSGeo/gdal/issues/3273 Move proj_log_XXX() functions from internal.cpp to log.cpp Remove ancient no longer used implementation of pj_ell_set() Revise error codes to have a reduced set exposed in the public API. Doc: document error codes and proj_context_errno_string() tmerc exact: set errno to PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN when it returns invalid coordinate proj_trans_array(): make it transform all coordinates even when an error occurs proj_log_XXX functions(): add the short name of the operation as prefix in the error message Various operations: remove explicit short name prefixing in log messages now that it is automatically added Remove internal use of PJ_LOG_DEBUG_MINOR and PJ_LOG_DEBUG_MAJOR horner.cpp: remove uses of EINVAL and EDOM errno Remap ENOMEM from PROJ_ERR_INVALID_OP to PROJ_ERR_OTHER projinfo: add a --accuracy option to define the minimum accuracy proj_create_crs_to_crs_from_pj(): add ACCURACY and ALLOW_BALLPARK options Database: update to EPSG v10.008 cs2cs: add --no-ballpark and --accuracy options Database: register AGQG_20191107.gsb grid. Related to https://github.com/OSGeo/PROJ-data/pull/53 test_factory.cpp: add missing checks C API: add proj_crs_is_derived() createFromUserInput(): accept leading white space (fixes #2498) ellps_size(): do not log error if ellipsoid absent and not needed createOperations(): fix Compound to Geog3D/Projected3D CRS with non-metre ellipsoidal height workflow linux_gcc_32bit: fix Could not perform immediate configuration on 'libgcc-s1:i386' formatting fix createOperations(): fix bug involving geoidmodel and non-metre vertical unit createOperations(): remove involved logic that was done for GDA94 -> WGS84 (G1762) Database: update to EPSG v10.013 test_operation: use correct variable name Allow a BoundCRS to use a PROJ string transformation operations_computation.rst: update 'Filtering and sorting of coordinate operations' section Fix handling of +proj=ob_tran +o_proj=longlat combined with +over (fixes #2510) Database: update to EPSG v10.014 C API: avoid error messages to be emitted in PJ_LOG_NONE log level (fixes #2526) Formatting fix isEquivalentName(): fix for GDAL test failure Reformat code with clang-format-10 from ubuntu 20.04 CI: disable FreeBSD / Cirrus builds createOperations(): fix incorrect height transformation between 3D promoted RGF93 and CH1903+ (fixes #2541) grids.cpp: use C99/C++11 uint16_t/uint32_t gie_self_tests: fix use of uninitialized memory (fixes #2557) Fix gcc 11 -Wnonnull warnings UnitOfMeasure: add a move assignment operator (CID 314811) BaseObject: add a move assignment operator (CID 314820) proj_info(): remove useless nullptr checking (CID 314807) cct: remove useless nullptr checking (CID 314822) cs2cs: catch exception on bad value for --accuracy (CID 314818) gie.cpp: use correct type in error message (CID 314813) projinfo: catch exception on bad value for --accuracy (CID 314810) initcache.cpp: add assertions for potential failed mem alloc (CID 314809, 314812) is2DPartOf3D(): catch potential exception (CID 314817) Check return value of curl_easy_setopt() (CID 314805) igh: check return value of setup_zone() (CID 314816) NTv2Grid: remove useless m_name member (redundant with one of base class) insertIntoHierarchy(): avoid confusing cppcheck about potential use of moved grid Travis ARM64: set NPROC=4 to avoid the autodetected 32 to blow out RAM dmstor_ctx(): avoid setting a variable that is not read pipeline: avoid CLang Static Analyzer 10.0 likely false positive about dereferencing a nullptr README.md: comment out Cirrus CI [ci skip] doc: typo fixes typo fixes s45b.pol: remove trailing backslashes that prevent it from being used Fix comment Code cleanup: remove conditional testing of SQLITE_OPEN_URI. It is present in sqlite >= 3.11 Make proj_lp_dist() and proj_geod() work on a PJ* CRS object Database: fix NKG transformations fix_typos.sh: update while lists Doxyfile: remove obsolete COLS_IN_ALPHA_INDEX tag typo fix in comment mingw_w64/start.sh: switch to http due to osgeo SSL certificate expiration Add C/C++ API to get SQL statements to insert a CRS into database projinfo: add a '-o SQL --output-id AUTH:CODE' SQL output CRS::identify(): take into account allowed authority to identify hard-coded WGS84-based CRSs SQL output: add capability to restrict the authorities into which to look for intermediate objects SQL export: add publication_date and frame_reference_epoch to datums SQL export: add support for DatumEnsemble Add proj_context_get_database_structure() to dump structure of empty valid auxiliary DB projinfo: add a --dump-db-structure switch Add support for PROJ_AUX_DB environment variable to set the path to one or several auxiliary DBs Doc improvements regarding recomandation not to alter official registries and use auxiliary databases proj.h: add PROJ_COMPUTE_VERSION, PROJ_VERSION_NUMBER, PROJ_AT_LEAST_VERSION macros Fix proj_clone() to work on 'meta' coordinate operation PJ* objects that can be returned by proj_create_crs_to_crs() Doc: add a page to document macros Code formatting fix createFromCRSCodesWithIntermediates(): improve perf when no match Database: relax trigger check when inserting a conversion to accept any conversion method in the PROJ namespace SQL output: make it possible to export non-EPSG projection methods or methods and params lacking an explicit EPSG id Tests: add new error cases of SQL output CRS::promoteTo3D(): propagate the extent from the 2D CRS (fixes #2587) createOperations(): fix Compound to Geog3D CRS computations in the case... (fixes #2588) createOperations(): fix regression for the fix of #2588 Build: simplify proj.db generation (#2605) Add mapping of ESRI Equal_Area projection method to EPSG (fixes #2610) Dockerfile osgeo/proj-docs: update to doxygen 1.9.1 (fixes OSGeo/gdal#3619) Doc: fix typo in man page of utilities, and reduce copy&paste Fix build on Solaris 11.4 createOperation(): make sure no to discard deprecated operations... Database: update to EPSG 10.017 Database: refine checks for 'Geog3D to Geog2D+XXX' transformations, and create less synthetic 'Geographic3D to GravityRelatedHeight' synthetic transformations Database: add extra check for 'Vertical Offset by Grid Interpolation' transformations Database: stronger checks on extent of grid_transformation regarding the extent of the source and target CRS Database: update to EPSG v10.018 reproject_bbox(): reduce number of magic values cass: rewrite ellipsoidal formulas in a clearer way using EPSG guidance note names Generic inverse: fix when initial guess if super close to result cass: add +hyperbolic switch for variant used by EPSG:3139 'Vanua Levu 1915 / Vanua Levu Grid' Add mapping between EPSG method 'Hyperbolic Cassini-Soldner' and +proj=cass +hyperbolic Database: add a PROJ.VERSION metadata entry Database: add missing column type specifir for method_name in grid_transformation and other_transformation. No practical impact Database: decrease db size by using a INTEGER_OR_TEXT data type on codes createOperations(): make createBetweenGeodeticCRSWithDatumBasedIntermediates() reachable... Database: minor refresh of ignf.sql and import script with new locations of resources Database: do not create Helmert transformations in IGNF between CRS of different nature, and also adjust the method code/name to the nature of the CRS Database: more consistency checks on helmert_transformation and grid_transformation Database: nullify auth_name, code of usage table Database: more thorough consistency checks on extent of coordinate operations test: add datum shift related tests for transformations crossing antimeridian proj_trans(): add a more expressive log message projinfo: remove spurious -- in help message (master only) createFromUserInput(): add support for OGC URLs Add hard-coded definitions for OGC:AnsiDate/JulianDate/UnixTime createFromUserInput(): add support for (legacy) urn:opengis:crs:EPSG:0:XXXX syntax createFromUserInput(): add support for (legacy) urn:x-ogc:def:crs:EPSG:XXXX syntax Add UnitOfMeasure::FOOT and US_FOOT createFromUserInput(): add support for WMS AUTO: syntax Recognize OGC:84 as an alias of OGC:CRS84 fix typo in comment CMake: for test/cli, generate the output files in /test/cli like autoconf builds Doc: remove mention of k_0 and lat_ts in aeqd projection. They are not used. Fixes #2638 and fixes #2639 getCRSInfoList(): make result order deterministic (by increasing auth_name, code) createFromUserInput(): support URN:OGC:DEF:CRS:OGC:1.3:CRS84 CRS::normalizeForVisualization(): propagate domains/extent of original CRS (fixes #2603) projinfo: add a --normalize-axis-order undocument switch Reformatting fix projinfo --list-crs --area: make it work when multiple areas matches the specified name Add proj_get_celestial_body_name() and make proj_get_crs_info_list_from_database() filter on and return celestial body name reformat_cpp.sh: run inside Docker image if clang-format is not at version 10 utm: error out when value of +zone= is not an integer (fixes #2671) createOperations(): fix Geog to Geog when one is deprecated (fix master regression) createFromUserInput(): change name of CRS built from URN combined references to match the convention of EPSG projected CRS Revert "proj_create_crs_to_crs_from_pj(): do not use PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION if area is specified" ConcatenatedOperation::fixStepsDirection(): fix potential nullptr dereference Database: update to EPSG v10.019 CI: add Coverity Scan weekly job coverity-scan.yml: do not build tests projinfo: catch potential exception (master only, CID 193527) getInsertStatementsFor(): replace while with if (master only, CID 320133) projinfo: increase file size limit of files opened with @filename to 1MB to be able to read file generated by ossfuzz pj_vlog(): fix buffer overflow in case of super lengthy error message test_o.cpp: add more sensical example for DerivedVerticalCRS built from urn: syntax Remove useless file data/sql/method_triggers.sql Remove uselss data/epsg-deprecated and update data/README Remove useless src/runmultistresstest.sh Move data/proj_outIGNF.dist-real to test/cli wkt1_parser/wkt2_parser: regenerate them with bison 3.5.1 to hopefully make Coverity Scan happier test_network.cpp: try to fix 'Please include winsock2.h before windows.h' warning with msys getInsertStatementsFor(): replace while with if (master only, CID 320133) test: test urn:ogc:def:ensemble: syntax Improvements related to DerivedVerticalCRS using Change Unit and Height/Depth reversal methods CI: msys2 build: build with -Werror (#2697) docs/Makefile: copy triangulation.schema.json (fixes #2699) Update nlohmann/json to latest 3.9.1 release CMake build: add a NLOHMANN_JSON_ORIGIN=auto/external/internal setting allowing to choose which nlohmann/json to use Fix ossfuzz builds [ci skip] nkg.gie: fix operation line. The repetition of operation worked previously by accident and wasn't necessary CMake build: run nkg.gie tests (dependent on CURL_ENABLED and RUN_NETWORK_DEPENDENT_TESTS settings) test/gie/Makefile.am: add nkg.gie Doc: update GDAL version Doc: fix URL Formatting fixes Fix export of transformation to PROJ string in a particular situation where CompoundCRS are involved (fixes #2720) Database: update to EPSG v10.022 scripts/grid_checks.py: improve --not-in-grid-alternatives output grid_alternatives.sql: reference AGQG_20201120.gsb (cf OSGeo/PROJ-data#63) Database: map ESRI spain/peninsula and spain/baleares grids projsync: make it filter out files not intended for the current version HOWTO-RELEASE: mention updating PROJ_DATA.VERSION code formatting fix Database: add a ANALYZE step during proj.db creation projinfo: fix error message regarding --output-id DatabaseContext::getTransformationsForGridName(): make it work properly when different EPSG grid names map to the same PROJ grid name Database: decrease DB size by using WITHOUT ROWID tables build_db.py: add hack to minimize diff now that we use WITHOUT ROWID Database: update to EPSG v10.024 ConcatenatedOperation::fixStepsDirection(): remove recently introdued hack specific to EPSG:9731 now that is is deprecated proj_create(): do not open proj.db if string is a PROJ string, even if proj_context_set_autoclose_database() has been set (fixes #2734) Cleanup: add proj/internal/mutex.hpp as compat layer for mingw32 for std::mutex test_c_api.cpp: avoid use of undefined .t component factory.cpp: preparation steps for global sqlite3* handle, but no functional change Database: use shared sqlite handle Make proj_context_set_autoclose_database() a no-op as it would defeat the purpose of the new database connection sharing Check that database connection sharing properly works proj_cleanup(): make sure it frees the database context of the default PJ_CONTEXT Run database layout checks only at first DB opening factory.cpp: lint: make memoryHandle_ a unique_ptr Database: update to EPSG v10.026 BoundCRS::identify(): avoid incompatible transformation for WKT1 / TOWGS84 export (fixes OSGeo/gdal#3958) Fix build with -DPROJ_INTERNAL_CPP_NAMESPACE proj_trans/cs2cs: If two operations have the same accuracy, use the one that is contained within a larger one operations_computation.rst: add note about proj_create_crs_to_crs not necessarily using the operation that appears as first Database: update to EPSG v10.027 test_factory.cpp: fix build, in particular on Alpine Edge (fixes #2759) createOperations(): make sure to associate an extent to the transform of a CRS with a GEOIDMODEL using a PROJ grid, so that it is later used instead of a ballpark operation (fixes #2768) Database: update to EPSG v10.028 Logging: avoid some overhead when logging is not enabled (fixes #2770) ortho: remove useless and invalid log trace (CID 350886, 350887) Formatting fix [ci skip] createOperations(): fix SourceTargetCRSExtentUse::NONE mode Add pj_log_active() to determine if logging is active pj_fwd()/pj_inv(): performance improvements through passing by ref and less function calls GeoTIFF grid reading: perf improvements (fixes #2785) build_db.py: improve error reporting [ci skip] Conversion::createUTM(): avoid integer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36751 Inverse laea ellipsoidal: return PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN when appropriates (fixes OSGeo/gdal#4224) formatting fix factory.cpp: fix latest clang -Wstring-concatenation (false positive) warning Implement promoteTo3D() / demoteTo2D() for DerivedGeographicCRS (fixes #2803) 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 (fixes #2804) WKT2 import/export: preserve PROJ.4 CRS extension string in REMARKS[] (when the WKT2 representation isn't lossless) test: more testing of Polar Stereographic variants BoundCRS: accept importing/exporting in WKT2 and PROJJSON the scope/area/extent/id attributes (fixes #2813) ConcatenatedOperation::fixStepsDirection(): fix bad chaining of steps when inverse map projection is involved in non-final step (fixes #2817) pipeline instanciation: fix potential O(n^2) performance. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37438 PROJStringFormatter::toString(): fix potential O(n^2) performance. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37438 WKT importer: detect ESRI WKT even when datum name doesn't start with D_ (fixes #2822) WKT importer: better detect ESRI WKT on projected CRS (fixes #2822) Pipeline instanciation: fix performance issues on huge (broken) strings which managed somehow to cause nested pipelines not caught due to some non-roundtripability in parsing/serializing. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37489 Doc: projjson.rst: update to PROJJSON v0.3 ESRI WKT: add support for import/export of (non interrupted) Goode Homolosine Database: update to EPSG v10.033 io.cpp: silence Coverity false positive (CID 356032) io.cpp: remove always true test Workaround false positive in recent cppcheck PROJStringFormatter::toString(): add missing iterator increment (but luckily this omission didn't result in endless loop, just an extra iteration) Doc: mentions EPSG methods that corresponds to topocentric and ortho (fixes #2832) Add proj_create_conversion_pole_rotation_netcdf_cf_convention() to address netCDF datasets using a pole rotation method Merge pull request #2836 from OSGeo/rouault-patch-1 formatting fix pj_obj_create(): avoid passing invalid ellipsoid parameters ot pj_calc_ellipsoid_params(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31964 formatting fix pipeline.cpp: remove impossible condition GeodeticCRS::identify(): make it more obvious for cppcheck createFromUserInput(): make it more obvious for cppcheck and humans too Conversion::createAxisOrderReversal(): workaround cppcheck false positive Workaround 'Overlapping read/write of union is undefined behavior' cppcheck warning (but really fixing them would be more involved) healpix.cpp: make it more obvious to cppcheck that capmap.cn is always initialized getInsertStatementsFor(): re-order projection parameters according to their canonical order if needed Fix database access across fork() when SQLite3 doesn't use pread[64]() (fixes #2843) pj_obj_create(): avoid passing invalid ellipsoid parameters to geod_init(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38192 Support importing/exporting WKT & PROJJSON of 2D axis spherical planetocentric geodetic CRS createOperations(): deal with spherical planetocentric geodetic CRS createConversion(): avoid nullptr dereference on a method without parameters createOperations(): use an explicit conversion operation for geodetic <--> geocentric latitude PROJJSON: support additional properties allowed in id object (version, authority_citation, uri) for parity with WKT2:2019 isEquivalentTo(): improve comparison of datum names based on official name and aliases (preparation for EPSG v10.035 update) test/cli/testvarious: make one test more robust regarding EPSG updates Database: update to EPSG v10.035 Fix error in implementation of Inverse ellipsoidal orthographic projection (oblique case) that cause convergence to sometimes fail (fixes #2844) Inverse ellipsoidal orthographic projection (oblique case): fix convergence at pole Inverse ortho ellipsoidal oblique: address a few remarks from https://github.com/OSGeo/PROJ/issues/2844#issuecomment-920138371 Database: add a 'anchor' field to geodetic_datum and vertical_datum tables test: getInsertStatementsFor(): test datums with anchor Optimize pipelines of planetary CRS (geocentric latitude, west-positive longitude) networkfilemanager.cpp: fix compiler warnings on 32-bit systems where time_t is 32-bit Conversion::inverse(): avoid harmless division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39033 Update proj_symbol_rename.h proj_normalize_for_visualization(): set input and output units when there are several alternative transformations (fixes #2866) Database: update to EPSG v10.036 Database: add some hand made entries early Database reading: implement reading a GeodeticCRS with a Spherical CS AuthorityFactory::createGeodeticCRS(): use description column for remarks Database: add check for Orthographic conversion Database: add IAU_2015 CRS Add a mapping for versioned authorities, so that one can use IAU:xxxx or IAU_2015:xxxx transparently PROJStringFormatter: add optimizations useful for IAU CRS transformation pipelines test: add tests of operations between geographic/geodetic and projected IAU CRS projinfo --list-crs / proj_get_crs_info_list_from_database(): make it work with IAU generic authority name CRS::extractGeodeticCRS(): implement for DerivedProjectedCRS (related to refs OSGeo/gdal#3927) CRS::identify(): fix ignoring CS order when identifying a geodetic CRS by a PROJ string with just the ellipsoid proj_factors(): accept P to be a projected CRS (fixes #2854) test_c_api.cpp: reformat proj_create_crs_to_crs() + proj_trans(): fix when non-Greenwich prime meridian is involved ProjectedCRS::_isEquivalentTo(): ignore base CRS axis order even in EQUIVALENT mode if one of them is lacking an explicit CS order (refs #2886) CRS::_isEquivalentTo(): be tolerant to different order of PROJ step options (fixes #2886) cmake build: install proj_symbol_rename.h scripts/build_db.py: fix due to recent changes Database: update to EPSG v10.037 WKT concatenated operation parsing: fix when a axis order reversal conversion is the first or last operation (fixes #2890) WKT1 parser: recognize Lambert_Conformal_Conic as projection name for LCC 1SP or 2SP (fixes #2892) CMake build: generate invproj/invgeod binaries (symlinks on Unix, copy otherwise) (fixes #2852) autoconf build: build invproj and invgeod in build directory geod / proj: accept lt-inv[geod/proj] name for older libtool versions test/cli/testproj: fix wrong variable name Add testing of invproj CMake: add a BUILD_APPS to be able to disable build of all programs ossfuzz builds: switch to cmake to build PROJ proj_crs_get_datum_forced(): catch potential exception (fixes CID 358433, 358434, 358435) CMake build: add generate_wkt1_parser and generate_wkt2_parser manual target, and logic to detect when they must be run Fix export to WKT1:ESRI of CRS, datum, ellipsoids name that don't have a EPSG equivalent and have parentheses in their name Geographic 3D CRS: allow to export to WKT1:ESRI if only the GEOGCS is known (and thus extrapolating a VERTCS) (fixes #2757) cmake/ProjTest.cmake: fix error in creation of tmp_user_writable_dir CMake: fix invproj/invgeod generation on Windows when building with an explicit configuration Fix previous commit createOperations(): avoid harmless floating-point division by zero if conversion factor of target unit is 0. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39969 exportToPROJStringGeneric(): avoid harmless floating-point division by zero if conversion factor is 0. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40050 Database: update to EPSG v10.038 CMake: align the VERSION of the library with libtool practices CMake: revise how we deal with symbol export and static builds 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 (fixes #2905) cppcheck.sh: make it compatible with cppcheck 2.7 util.hpp: reformat BoundCRS WKT import: fix setting of name Doc: news.rst: formatting fixes Database: update to EPSG v10.039 Reformatting fixes PROJStringFormatter::toString(): avoid invalid iterator increment (fixes #2931) CI: add a MSVC Debug build (refs #2931) createOperations(): do not stop at the first operation in the PROJ namespace for vertical transformations createOperationsCompoundToCompound(): fix null pointer dereference when connection to proj.db doesn't exist. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40955 Code reformat createOperationsGeogToGeog(): avoid potential harmless floating-point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41045 build_db_from_esri.py: fix pyflakes3 warning, and make it python 3.8 compatible Pipeline parsing: reject proj=/o_proj= before first step, to avoid bad performance pattern on hostile pipelines Cache result of proj_get_type() to help for performance of proj_factors() (fixes #2965) PROJ string parsing: fix unquoting of parameter values when the parameter name is just one single character PROJStringSyntaxParser(): make it use pj_trim_argc/argv to have similar tokenization/serialization in different code paths Database: update to EPSG v10.041 createOperations(): improvement for "NAD83(CSRS) + CGVD28 height" to "NAD83(CSRS) + CGVD2013(CGG2013) height" CI Plot job: build PROJ from source (fixes #2961) CI: update Ubuntu 16.04 gcc 4.8 to default gcc 5.4 CMake: fix warning with external googletest WKTParser::Private::buildProjectionStandard(): minor cleanup WKT1 import: correctly deal with missing rectified_grid_angle parameter docs/source/download.rst: fix release dates [ci skip] Fix build with Intel C++ compiler news.rst: add hints about usage changes in PROJ 8.2.0 for Windows users (fixes #2999) docs/docbuild/Dockerfile: bump doxygen version (due to 1.9.1 no longer be downloadable at that URL) Fix doc generation with Doxygen 1.9.3 test proj_create_operations_with_pivot(): change CRSs used in preparation of EPSG 10.044 which adds a direct transformation between WGS84 and JGD2011 Handle EPSG:1111 'Transverse Mercator (3D)' method (used in EPSG:10.044 by Projected 3D CRS EPSG:9895 'Luxembourg TM (3D)' Database: update to EPSG 10.044 Implement Geographic3D to Depth/Geog2D+Depth as used by ETRS89 to CD Norway depth proj_get_crs_info_list_from_database(): report PJ_TYPE_GEODETIC_CRS for IAU_2015 -ocentric geodetic CRS (fixes #3012) peirce_q: rename +type parameter wrongly introduced in 8.2.1 to +shape (fixes #3011) Map peirce_q to pseudo WKT2 and ESRI WKT Database: update to EPSG 10.047 peirce_q: add inversion of +shape=square and diamond through generic inversion method Minor cppcheck fixes Conversion::_exportToPROJString(): fix potential crash introduced in recent commit. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43546 Dockerfile: build PROJ with cmake (refs #2688) Add .zenodo.json (#3019) filemanager.cpp: fix build issue with Cygwin networkfilemanager.cpp: fix build issue with Cygwin Add DOI to README.md and CITATION [ci skip] CITATION: add doi to BibTex entry lookForGridInfo(): make it work properly when passed the old PROJ name Database: update to EPSG 10.048 Database: update to EPSG 10.051 Use external gtest by default when detected Doc: clarify build requirements Doc: fix example whith used the +t_obs parameter of Helmert removed per #1264 CMake: make BUILD_SHARED_LIBS=ON the default even on Windows filemanager.cpp: reformat [ci skip] createOperations(): fix transformations from/to a BoundCRS of a DerivedGeographicCRS coming from WKT Doc: ob_tran.rst: fix name of o_lon_1, o_lat_1, o_lon_2, o_lat_2 parameters proj.ini: add a 'ca_bundle_path' variable CMake: remove all Mac specific settings added per #2009, as they appear to be obsolete given current CMake versions (fixes #3029) Database: update to EPSG v10.054 Better deal with importing strings like '+init=epsg:XXXX +over' (refs MapServer/MapServer#6478) Fix importing CRS definition with +proj=peirce_q and +shape different from square or diamond. Follow-up of #3014. Fixes #3056. master only ITRF2008: plate motion model: fix error on sign of z component of NOAM and x component of PCFC ITRF2008: add EURA_T, NOAM_T, etc. plate names that include translation rates (fixes #3053) Remove googletest source code remains Doc: mention Lambert c.e.a, Behrmann, and Gall-Peters projections as specializations of cea Doc: gall.rst: add note that Gall != Gall-Peters CMake: set RUN_NETWORK_DEPENDENT_TESTS to ON by default only if network seems available (fixes #3060) Database: insert entries in the alias_name for ESRI transformations that match a EPSG entry Fix nullptr dereference in utilities whan argv[0] == NULL proj_grid_info(): check pj_find_file() output (CID 383357) CTable2Grid::open(): add missing call to extent.computeInvRes() (CID 383359) UnitOfMeasure::operator=(UnitOfMeasure &&): avoid use of moved member (CID 383358) ProjectedCRS::_exportToWKT(): avoid false positive warning about nullptr deref (CID 383356) WKTParser::Private::buildProjectedCRS(): avoid potential nullptr deref (CID 383362) geog3DToVertTryThroughGeog2D(): avoid potential nullptr deref (CID 383355) Fix wrong results with SQLite 3.38.0 (fixes #3077) Fix issue when transforming from/to BoundCRS of 3D CRS with non-Greenwhich prime meridian, created from WKT (fixes OSGeo/gdal#5408) CMake: fix installation of proj.pc on Windows (fixes #3078) Fix import of WKT of concatenated operation with inverse conversion of a compound CRS of a projected CRS (fixes #3076) PROJBasedOperation PROJJSON export: issues an empty 'parameters' array if needed (refs #3076) Database: update to EPSG v10.055 nkg.gie: update results due to https://github.com/OSGeo/PROJ-data/pull/79 windows.yml: fix issue with sqlite3 binary and vcpkg createOperations(): fix issue in transformation northing,easting projected CRS -> +proj=longlat +lon_wrap (fixes #3095) Fix comparison of GeodeticRefrenceFrame vs DynamicGeodeticReferenceFrame Transformation: no longer do vertical trasnformation when doing compound CRS to 2D CRS / add --3d to cs2cs SingleCRS::baseIsEquivalentTo(): fix potential crash that is triggered by fdf5111a9a790926aacec75a07d30508a8ed9c91 changes createOperations(): fix transformation involving CompoundCRS, ToWGS84 and PROJ4_GRIDS Fix datum names when importing from PROJ4 crs strings (affects some transformations using geoidgrids) Database: update to EPSG v10.057 Database: manually fix wrong extent of EPSG:2853 (notified to IOGP) WKT2 parser: add special case for slightly non-conformant WKT output of epsg.org regarding PARAMETER["EPSG code for Interpolation CRS",crs_code,ID[EPSG,1048]] Transformation::substitutePROJAlternativeGridNames(): propagate interpolation CRS WKT import: transform PARAMETER["EPSG code for Interpolation CRS",crs_code] into interpolation CRS, and transform from that back to the parameter in BoundCRS AbridgedTransformation WKT output createOperations(): fix CompoundCRS[BoundCRS[ProjectedCRS],BoundCRS[VerticalCRS]] to Geog3DCrs exportToPROJString(): optimize pipeline of previous commit createOperations(): fix ch1903lv03_3d_bound to EPSG:4326+3855 (refs #3152) createOperations(): fix ch1903lv03_ln02_bound to EPSG:4326+3855 (fixes #3152) Database: add OGC:CRS84h (WGS 84 longitude-latitude-height) ITRF2014: fix ITRF2014:ITRF88,ITRF94 and ITRF96 definitions createBoundCRSToWGS84IfPossible(): improve selection logic to generate +towgs84= taking into account extent Database: update to EPSG v10.059 Formatting fixes Transformation::inverseAsTransformation(): avoid harmless division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=46393 CI: fix doc_build job Add proj_trans_get_last_used_operation() (refs #3176) proj_coordoperation_get_grid_used(): make it work more reliably when networking is enabled (fixes #3176) Database: update to EPSG 10.063 WKT import: deal with Projected CRS that is a mix of WKT1:GDAL / WKT1:ESRI (fixes #3186) PROJ string transformation output: improve pipeline of 'OSGB36 / British National Grid + ODN height' to 'WGS 84 + EGM96 height' (refs https://github.com/OSGeo/PROJ/issues/3191#issuecomment-1124223268) createOperations(): fix/improve result of 'BD72 + Ostend height ' to 'WGS84+EGM96 height' (fixes #3191) createOperations(): fix result of 'BD72 + Ostend height' to 'Amersfoort + NAP height' and similar situations where the vertical-to-vertical transformation is a concatenated operation of 2 operations sharing the same geographic CRS Doc: mentions that Winkel Tripel has inverse method (fixes #3179) Doc: enhance PROJJSON specification (#3190) Change hub CRS semantics when importing a WKT1 COMPD_CS with a EXTENSION PROJ4_GRIDS Change hub CRS semantics when importing from a PROJ.4 string with +geoidgrids, and modify order of horizontal and vertical steps Change hub CRS semantic with +geoidgrids, only if +geoid_crs=horizontal_crs is specified Add a +proj=vertoffset method for Vertical Offset And Slope transformation (refs #3194) Map EPSG:1046 operation method to PROJ +proj=vertoffset (fixes #3194) vertoffset: add description of parameters to PROJ_HEAD() Identifier::isEquivalentName(): fix when ending by ' + ' which could indirectly cause an infinite stack call in master (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47475) projjson.rst: formatting fix docs/source/conf.py: update github_version Database: update to EPSG 10.064 WKT export of transformation: do not put '(approx. inverse)' in inverse Helmert transformation name when it is a pure translation, as the approximate inverse is actually exact Fix warning with MSVC 2015 WKT import: correctly deal with absence of Latitude_Of_Origin parameter in WKT1 ESRI with Stereographic projection (fixes #3210) PROJJSON spec: mention the intentional lack of axis order member docs/docbuild/Dockerfile: do not use sphinxcontrib-spelling 7.4.0 Merge pull request #3213 from OSGeo/rouault-patch-1 PROJJSON: add meridian member in Axis object type. Bump version to v0.5 PROJJSON: Add temporal_extent and vertical_extent members in object usage PROJJSON parser: do not error out if a datum ensemble member is unknown in the database Doc: fix build issue with Sphinx 5.0 typo fix in code comment createOperations(): fix infinite recursion in a complex case. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47873 createOperations(): fix projected CRS with non-metre horiz&vertical unit and towgs84 to gencentric CRS (fixes #3229) IComparable::isEquivalentTo(): test first pointer equality SingleCRS::baseIsEquivalentTo(): avoid temporary object creation when comparing CRS with datum ensemble with Criterion::EQUIVALENT Doc: fix news.rst Resync schemas/v0.5/projjson.schema.json with data/projjson.schema.json CI: Cancel PR and branch workflows on new push travis/install.sh: make json validation work with older jsonschema WKT2 import/export: accept several GEOIDMODEL in a VerticalCRS PROJJSON import/export: add 'geoid_models' to allow several geoid models in a VerticalCRS PROJJSON schema: add PointMotionOperation and 'deformation_models' members to GeodeticCRS and VerticalCRS PROJJSON import/export: use 'deformation_models' member for GeodeticCRS/VerticalCRS Database: update to EPSG 10.065 proj_grid_info(): make it work again with remote grids (refs #3238) NTv2 and GTX grid readers: add a cache of lines to speed-up (fixes #3240) Database: update to EPSG 10.066 Database: add an alias for HT2_2010_CGG2013a.byn added per https://github.com/OSGeo/PROJ-data/pull/84 Database: bump PROJ_DATA.VERSION to 1.11 createOperations(): prefer simpler pipelines / affects WGS 84 to GDA94/GDA2020 proj.pc/proj-config.cmake generation: deal with CMAKE_INSTALL_xxxx being possibly an absolute path (fixes #3206) Introduce PROJ_DATA environment variable to deprecate PROJ_LIB PROJ utilities: emit deprecation warning on stderr when PROJ_LIB is set Formatting fix WKT ESRI export: fix issue with some projected CRS, such as EPSG:3800, that have the same name as a deprecated one WKT ESRI import: support LINUNIT node inside GEOGCS which indicates a geographic 3D CRS WKT ESRI export: use LINUNIT node for geographic 3D CRS, unless WKTFormatter::setAllowLINUNITNode(false) or proj_as_wkt(..., options = ['ALLOW_LINUNIT_NODE=NO]) is specified Database: resync ESRI objects with https://github.com/Esri/projection-engine-db-doc/tree/v3.0.0 Merge pull request #3259 from agiudiceandrea/patch-1 createOperations(): avoid potential infinite recursions (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49256) PROJ pipeline generator: recognize opposite Helmert transformations using a different convention Database: generate null transformation between geodetic/vertical datum ensemble and its members (fixes #3263) Database: update to EPSG 10.068 (fixes #3250) Move Transformation::exportToPROJString() to SingleOperation, so transformations can be used as deriving conversions WKT import: use 'EPSG code for Horizontal CRS' parameter to derive interpolation CRS WKT2 parser: allow unit-less PARAMETER for coordinate operations Database: update to EPSG v10.074 WKT1 import: better deal when the angular unit of the GEOGCS[] of the PROJCS[] doesn't match the one from the database WKT parser: fix issue when parsing some WKT1 with Hotine_Oblique_Mercator_Azimuth_Center and ignoring rectified_grid_angle (fixes #3279) createOperations(): take into account axis unit and inversion of target DerivedProjectedCRS createOperations() / proj_trans(): better take into account area of interest name / do not only keep first returned coordinate operation Formatting fixes getCRSInfoList(): fix retrieval of projected_crs given by text_definition only (fixes #3288) projinfo: fix crash on --list-crs when proj.db cannot be opened common.hpp: address noExplicitConstructor warnings gie.cpp: remove unused structure member chamb: remove unused structure member isea: remove unused structure member struct pj_ctx: remove no longer used private member, and address warnings about members not copied in copy constructor putp6: avoid false positive warning with latest cppcheck JSON output: avoid rounding issues with integer values in a double on some architectures (fixes #3297) CMake: fix symbol detection when CFLAGS includes -Werror=something (fixes #3295) Database: update to EPSG v10.076 GeoTIFF grids: support UNITTYPE=arc-seconds per year for temporal hgridshift Docs: update doc of grid-based methods to mention/advertize more GeoTIFF geodetictiffgrids.rst: add a Revisions section CMake: add a INSTALL_LEGACY_CMAKE_FILES option (fixes OSGeo/gdal#5646) cppcheck.sh: update to support v2.10 Database: create a undeprecated copy of EPSG:9123 grid transformation 'NAD83(CSRS) to CGVD28 height (1)' (fixes #3328) Database: alias HT2_1997.byn to ca_nrc_HT2_2010v70.tif (refs #3328) createOperations: add missing +proj=push +v_1 +v_2 / +proj=pop +v_1 +v_2 in some vertical transformations (refs #3328) PROJ string pipeline optimizer: add optimization for EPSG:4326+5773 to EPSG:4326+5713 transformation (refs #3328) Tests: test EPSG:4326+5773 to EPSG:4326+5713 (refs #3328) createOperations(): tune name and remarks of some vertical transformations Build: link geodtest against libm when available (fixes #3311) WKT import: 3D-promote base CRS of 3D DerivedProjectedCRS (fixes #3340) proj_normalize_for_visualization(): take into account FORCE_OVER property from source operation (fixes #3347) Fix issue when transforming from/into a WKT2 Bound VerticalCRS with a 'Geographic3D to GravityRelatedHeight' method (fixes #3354) Doc: document +over limitations (fixes #3348) CI: add a CI-Fuzz github action workflows cct: emit meaningful error message when passing a non-coordinate operation (fixes #3358) proj_trans(): return error when a non-coordinate operation object is provided (fixes #3358) createOperations(): emulate PROJ < 6 behavior when doing geocentric <--> geographic transformation between datum with unknown transformation (fixes #3360) CMake: add a uninstall target Doc: document uninstall target findsOpsInRegistryWithIntermediate(): make it work when source/target geodetic CRS has no known id Avoid error on "projinfo -s 'NTF (Paris) + NGF IGN69 height' -t ETRS89" projinfo: when source (or target) CRS is specified by name, promote it to 3D if there's a known 3D CRS of same name and that the other CRS is 3D cs2cs: when source (or target) CRS is specified by name, promote it to 3D if there's a known 3D CRS of same name and that the other CRS is 3D Merge pull request #3368 from OSGeo/rouault-patch-1 createFromUserInput(): make it work better when approximate name is provided Doc: add a page about users of PROJ Merge pull request #3376 from OSGeo/rouault-patch-1 Doc: users.rst: link to bindings.rst Merge pull request #3380 from Jochem-L/patch-1 CMake: use TIFF:TIFF and CURL::libcurl targets (refs #3316) Merge pull request #3383 from OSGeo/m-kuhn-patch-1 users.rst: formatting fix Merge pull request #3385 from afrigeri/patch-1 Doc: users.rst: fix Merge pull request #3388 from AndrewAtAvenza/patch-1 defmodel.rst: add link to deformation_model.schema.json cs2cs: fix incorrect use of proj_cs_get_axis_count() introduced in 4abde1b9f8fdc5fce1d7a3179d5bcae6520ae396 (not in a release) data/sql: add a README.md and simplified UML diagrams cct and cs2cs: make them robust against UTF-8 BOM at beginning of input files (fixes #3287) Merge pull request #3393 from OSGeo/rouault-patch-1 cifuzz.yml: tune VerticalCRS::_isEquivalentTo(): do not consider VerticalCRS and DerivedVerticalCRS as equivalent createOperations(): fix issues when transforming between Geog3D and DerivedGeog3D CRS with Geographic3D offsets method C++ API: add methods to build Geographic/Vertical Offset conversions eqdc: avoid floating point division by zero in non-nominal case. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52879 Merge pull request #3416 from OSGeo/rouault-patch-2 docs/docbuild/Dockerfile: update to Doxygen 1.9.5 Doxyfile: remove warnings with Doxygen 1.9.5 vandg projection: handle +over to extend the validity domain outside of |lon|>180deg cass: fix forward computation of easting (fixes #3432) pj_generic_inverse_2d(): make deltaXYTolerance a parameter cass: use iterative generic inversion to make GIGS 5108 roundtripping tests succeed Remove remaining sprintf() uses, and deprecate proj_rtodms() by newly added proj_rtodms2() (#3431) rtodms(): fix potential buffer overflow not dealt with with PR #3431 (master only) code formatting fixes Database: register at_bev_AT_GIS_GRID_2021_09_28 grid Fix issues reported by latest cppcheck master version NetworkFile::open(): fix memory leak in unlikely error code path Database: register in grid_alternatives grids from PROJ-data that have no corresponding transformation record (fixes #3444) DatabaseContext::lookForGridInfo(): fix caching of fullFilename (fixes #3444) DatabaseContext::lookForGridInfo(): fix setting .url member when a file is not in grid_alternatives, not local, but found on CDN (fixes #3444) cs2cs: better validate value of -W option (fixes #3451) PROJJSON: bump to 0.6 with an additional optional source_crs property in abridged_transformation (refs #3428) omerc: mention in doc that +lon_0 is ignored, align name of +lat_0 and +lonc with EPSG names, and emit a trace when +lon_0 is used (fixes #3464) Doc: update references to OGC Topic 2 spec to its r5 revision cs2cs.rst: add note regarding grids beeing needed (fixes #3470, #3471) Update proj_symbol_rename.h createFromUserInput(): make approximate matching by name more restrictive to avoid false positives (fixes #3484) Add bench_proj_trans benchmarking utility Database: update to EPSG 10.077 WKT import: when importing LOCAL_CS["foo"], generates a non-empty name for the datum Merge pull request #3492 from OSGeo/rouault-patch-2 formatting fixes GeographicBoundingBox::Private::intersects(): avoid infinite recursion on degenerate bounding box DatabaseContext::lookForGridInfo(): add PROJ networking state in cache information (fixes pyproj4/pyproj#1192) proj_trans(): fix performance regression Make pj_fwd4d() and pj_inv4d() pass arguments by reference, nd use them directly in pipeline_forward/inverse_4d() Pass PJ_COORD by reference for fwd4d and inv4d callbacks Improve a bit performance of +proj=axisswap +order=2,1 Database: update to EPSG v10.078 Add a +proj=gridshift (general grid shift) method to be used for NADCON5 grids GTiff grid reading: speed-up retrieving data in last accessed tile gridshift: add a +no_z_transform flag Add NADCON5 transformation method support and database entries metadata.sql: bump PROJ_DATA.VERSION to 1.13 Database: add concatenated operations for NADCON5 transformations Add a GenericShiftGrid::valuesAt() method for faster value retrieval gridshift: use GenericShiftGrid::valuesAt() pj_get_suggested_operation(): make sure to use NADCON5 grids rather than HPGN ones for NAD83 to NAD83(HARN) bench_proj_trans: add options to add random noise gridshift: cache grid values when interpolating repeatedly in the same grid cell pj_get_suggested_operation(): tune so that NADCON5 grid is used for NAD27->NAD83 on CONUS schemas/v0.5/projjson.schema.json: fix wrong inheritance that cause validation issues when using a DynamicGeodeticReferenceFrame or DynamicVerticalReferenceFrame schemas/v0.6/projjson.schema.json: fix wrong inheritance that cause validation issues when using a DynamicGeodeticReferenceFrame or DynamicVerticalReferenceFrame Add validation of dynamic geographic and vertical CRS against projjson schema aeqd_s_forward(): cleanup code and improve performance in polar case WKT <--> PROJ: correctly map 'Lambert Azimuthal Equal Area (Spherical)' to '+proj=laea +R_A' Avoid cppcheck master warnings Add comments about why we assign in 2 steps cea/laea: do not export +R_A on a spherical ellipsoid (fixes recent master commit) set_ellipsoid(): avoid floating point division by zero with f=2 ProjectedCRS::identify(): relax trust in id/authority in definition to identify Doc: make 'program' an alias of 'ref' Doc: add separate title for invproj and invgeod, otherwise links to invproj/invgeod would have the proj/geod labels Fix build with -DPROJ_INTERNAL_CPP_NAMESPACE install.rst: improve instructions regarding proj-data (fixes #3539) proj_create_crs_to_crs_from_pj(): add a ONLY_BEST=YES option (fixes #3533) proj_create_crs_to_crs(): emit a debug message if the best transformation cannot be used / cs2cs: add a --only-best=no switch proj_clone(): avoid emitting errors on tranformations where some are not instanciable Add link to PROJ doc when ONLY_BEST warning/error triggers, and correctly propagate errorIfBestTransformationNotAvailable to alternate operations Add PROJ_ONLY_BEST_DEFAULT environment variable, and 'only_best_default' proj.ini setting Check about consistent celestial body: relax tolerance for Mars use cases and add a PROJ_IGNORE_CELESTIAL_BODY=YES environment variable Update docs/source/apps/cs2cs.rst resource_files.rst: use literalinclude for proj.ini cs2cs: add example demonstrating --only-best usefulness Fix related to force_over best_only: move warning at the PJ* level proj.ini: do not set 'only_best_default' at all; and when set to on/off, disable related warnings formatting fix CI Conda: remove patches from upstream proj.4 feedstock as it is applied in PROJ master .github/workflows/conda.yml: partial revert of 6dbee23fa9c47d6abd0a7251fe70756fe997f878 to only do Conda builds on push, not pull request Add correctly named createTunisiaMiningGrid() / proj_create_conversion_tunisia_mining_grid() and deprecate the wrongly named methods (fixes #3543) CoordinateMetadata: add C++ class, WKT and PROJJSON support JSON/WKT import: test invalid CoordinateMetadata C API: add PJ_TYPE_COORDINATE_METADATA, proj_coordinate_metadata_get_epoch(), support if in proj_create() and proj_get_source_crs() createFromUserInput(): accept 'CRS_name@decimal_year' syntax to instanciate a CoordinateMetadata createOperations(): support one of source/target to be a CoordinateMetadata install.sh: validate PROJJSON CoordinateMetadata Add CRS::isDynamic() CoordinateMetadata: require epoch for dynamic CRS, forbid it for static CRS Typo fixes and other changes to make ./scripts/fix_typos.sh happy createFromUserInput(): make http://www.opengis.net/def/crs/IAU/2015/XXXX work (fixes #3568) Actually fix proj_normalize_for_visualization() on a transformation got with FORCE_OVER=YES (fixes #3567) proj_create_from_wkt(): make it work on COORDINATEMETADATA[] Database: update to EPSG 10.081 Add support for DatumEpoch property in GeodeticReferenceFrame and VerticalReferenceFrame, in WKT and PROJJSON (refs #3571) Add support for minimumValue, maximumValue, rangeMeaning properties in CoordinateSystemAxis, in WKT and PROJJSON (refs #3571) Database: resync ESRI objects with https://github.com/Esri/projection-engine-db-doc at tag v3.1.0 projjson.rst: remove mention about COORDINATEMETADATA not being implemented projjson.rst: remove mention of current version which is redundant with history paragraph test/unit/test_io.cpp: test importing invalid WKT/JSON with datum anchor, axisminval, axismaxval, rangemeaning WKT import: make axis direction and range meaning enumeration case insensitive as mandated by spec Implement EPSG:9621 'Similarity transformation' and import related transformations from EPSG typo fixes Implement AffineCS and handle it in WKT/PROJJSON createBoundCRSToWGS84IfPossible(): factor code. No functional change createBoundCRSToWGS84IfPossible(): do not report +towgs84 for a CRS with multiple extents, such as EPSG:6316 (refs #3246) C API: add proj_get_domain_count(), proj_get_area_of_use_ex() and proj_get_scope_ex() Add a .pre-commit-config.yaml pre-commit configuration file Doc: add a dev_practices.rst page Add .git-blame-ignore-revs test/benchmark/CMakeLists.txt: hopefully fix Conda Windows build failure related to 'warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc' README.md: remove appveyor badge [ci skip] Update to clang-format 15 Add aa818d6772887453432ce607410b784ff56308a1 to .git-blame-ignore-revs Use explicitly clang-format-15 pj_get_suggested_operation(): handle longitudes outside of [-180,180] for coordinate operation selection (fixes #3594) projinfo: fix long option name --source-crs (fixes #3600) Doc: Prevent double hypen (--) to be replaced by Unicode long dash character .readthedocs.yaml: do not do builds only if the only changes are in docs/ or .readthedocs.yaml proj_trans(): restore behaviour of PROJ 9.1 with transforming points in northern USA states from NAD27 to WGS 84 when no grid is available Database: update to EPSG 10.082 proj_create_crs_to_crs(): restore behaviour of PROJ 9.1 (fixes #3613) WKT1 parser: only emit warning when encountering invalid UNKNOWN WKT1 axis direction (fixes #7210) proj_pj_info(): make it behave like before ONLY_BEST addition (fixes #3619) pj_get_suggested_operation(): tune for GDA94 <--> WGS84 and GDA2020 <--> WGS84 pj_get_suggested_operation(): avoid string comparisons by precomputing a boolean createOperations(): avoid very poor performance / 'Too deep recursion in createOperations()' on a geographic CRS whose datum name is the alias of an official one (fixes #3623) createOperations(): improve datum equivalence checking by passing databaseContext argument (refs #3623) .github/workflows/mac/before_install.sh: add pkg-config eck4.cpp: improve code readability. No computation changes Inverse eck4: add checks for projection domain (fixes #2152) .github/workflows/mac/before_install.sh: add pkg-config Fix clang-tidy -checks=performance-inefficient-string-concatenation in library and apps codee WKT1 parser: support inf as inverse flattening value (fixes Toblerity/Fiona@1208) isea.cpp: add comment about inverse Merge pull request #3630 from rouault/NEWS_fix Merge pull request #3633 from rouault/fix_3632 Merge pull request #3635 from rouault/fix_3629 Merge pull request #3636 from rouault/nad83_3d_as_wkt1_esri testvarious: do not output program name / version number Merge pull request #3642 from rouault/fix_3639 Merge pull request #3643 from rouault/epsg_10_083 Merge pull request #3646 from rouault/epsg_10_084 Merge pull request #3652 from rouault/fix_3651 Merge pull request #3656 from rouault/fix_3654 Merge pull request #3661 from roua…
We previously ran into MapServer/MapServer#6478 when trying to upgrade our Ubuntu base image and added the file "epsg" as a hack to work around it in 20d7dc7. This adds a regression test for that upstream issue.
We previously ran into MapServer/MapServer#6478 when trying to upgrade our Ubuntu base image and added the file "epsg" as a hack to work around it in 20d7dc7. This adds a regression test for that upstream issue. I have tested this with "COPY epsg /usr/share/proj" removed from the Dockerfile, and that makes it fail.
We previously ran into MapServer/MapServer#6478 when trying to upgrade our Ubuntu base image and added the file "epsg" as a hack to work around it in 20d7dc7. This adds a regression test for that upstream issue. I have tested this with "COPY epsg /usr/share/proj" removed from the Dockerfile, and that makes it fail.
in short
When executing a WMS/WFS request in a different projection as the source a inaccured rectObj is generated from the &BBOX param and used in the backend query. Resulting in 'missing' objects in a image or features in a FeatureCollection.
some background
We are preparing our stacks for a GDAL/PROJ upgrade when we noticed this behaviour.
the issue
So it seems that with our Mapserver stack + PROJ > 6 (and recent GDAL version) this behaviour manifests.
This doesn't seem to be the case when using PROJ < 6 (like PROJ 5.2.0). The type of backend also doesn't really seem to matter, OGR(GPKG/GeoJSON), PostGIS.
Interesting enough the results, image (for WMS) and features (for WFS), don't seem to be affected. In the sense that the objects in the PNG are in the right place and the features return by the WFS are also projected correctly. They are 'only' missing objects that should have been there.
So the green bbox is the BBOX in EPSG:3857 from the request (WMS or WFS)
And the grey bbox is the one generated by Mapserver and used in the backend for requesting the features.
Logging of the WMS/WFS request and generated rectObj
This effect creates this kind of object popping in a WMS. Because the deviation is always the same it's 'only' really noticeable in the lower zoomlevels. The effects of this miscasting of the BBOX also has a effect on WMS GetFeatureInfo requests.
To be honest this could stil maybe be a config/setting issue in our setup, but because the results that are given back are projected (EPSG:28992 > EPSG:3857) correctly we have a feeling something might be of with the creation of the rectObj.
Tech used
Mapserver main, commit 68de818
PROJ Rel. 8.2.1, January 1st, 2022
GDAL GDAL 3.4.1, released 2021/12/27
Debian bullseye
Also with older versions of proj (like 7.1.1) it seems to happen.
And with the latest Mapserver release https://github.com/MapServer/MapServer/tree/rel-7-6-4
Mapfile and data used in example ams.updated.zip
The text was updated successfully, but these errors were encountered: