aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-21Add post-install checks for CMake and Autotools/pkg-config (#2077)Mike Taves
* Checks CMake's find_package(PROJ) and find_package(PROJ4) * Checks pkg-config used with a Makefile (Linux and macOS only) * Use proj.h / libproj with a simple 'testappprojinfo'
2020-03-20Merge pull request #2085 from ↵Even Rouault
rouault/fix_proj_get_suggested_operation_with_operations_without_area_of_use proj_get_suggested_operation(): fix when there are only operations without area of use
2020-03-19proj_get_suggested_operation(): fix when there are only operations without ↵Even Rouault
area of use
2020-03-18CMake: fix bug with find_package(PROJ) with macOSMike Taves
2020-03-18cs2cs: don't require +to for '{source_crs} {target_crs} filename...' syntax ↵Even Rouault
(fixes #2012)
2020-03-17Merge pull request #2079 from rouault/deprecate_proj_list_angular_unitsEven Rouault
Deprecate proj_list_angular_units(). Follow-up of https://github.com/OSGeo/PROJ/pull/2065
2020-03-17Deprecate proj_list_angular_units(). Follow-up of ↵Even Rouault
https://github.com/OSGeo/PROJ/pull/2065
2020-03-17Align install.rst with current version (#2075)Kristian Evers
Using {PROJVERSION} and {PROJDATAVERSION} substitutes the macro for the current version numbers of PROJ and PROJ-data. Rephrased a few sections regarding grid packages. Closes #2072 Co-authored-by: Mike Taves <mwtoews@gmail.com>
2020-03-16Merge pull request #2068 from rouault/add_proj_get_suggested_operationEven Rouault
Add proj_get_suggested_operation()
2020-03-16Merge branch 'master' into add_proj_get_suggested_operationEven Rouault
2020-03-16Merge pull request #2065 from rouault/add_proj_get_units_from_databaseEven Rouault
Add proj_get_units_from_database() (fixes #2004)
2020-03-15Fix build with libtiff master (libtiff > 4.1.0)Even Rouault
2020-03-13Tag proj_list_units() as deprecatedEven Rouault
2020-03-13Add proj_get_suggested_operation()Even Rouault
Return the index of the operation that would be the most appropriate to transform the specified coordinates. This operation may use resources that are not locally available, depending on the search criteria used by proj_create_operations(). This could be done by using proj_create_operations() with a punctual bounding box, but this function is faster when one needs to evaluate on many points with the same (source_crs, target_crs) tuple.
2020-03-12Autotools/pkg-conf: Define datarootdirMike Taves
2020-03-12Add proj_get_units_from_database() (fixes #2004)Even Rouault
2020-03-12Fix build with gcc 4.8.5 (fixes #2062)Even Rouault
2020-03-12Database: register grids for New Caledonia added per ↵Even Rouault
https://github.com/OSGeo/PROJ-data/pull/16
2020-03-12Add note about orientation of control pointsB R S Recht
2020-03-11ProjectedCRS::identify(): tune it to better work with ESRI WKT ↵Even Rouault
representation of EPSG:2193 Adresses https://github.com/OSGeo/gdal/issues/2303 by raising the identification confidence from 25% to 90% (90% means equivalent for all purposes, but name not strictly the EPSG official one)
2020-03-11.cirrus.yml: disable ccache as cache uploading can be super slowEven Rouault
2020-03-11pj_phi2(): speed-up computation (and thus inverse ellipsoidal Mercator and LCC)Even Rouault
This does not change the numeric values returned by the method, as far as I could see on a few samplings. The tricks used save a call to sin() and atan() at each iteration. This directly affects speed of inverse Mercator and LCC (among others), in their ellipsoidal formulation. Timings on inverse Mercator show a 31% speed-up at mid-latitudes where pj_phi2() needs 5 iterations, and 24% at latitudes close to 0 or 90deg where it needs one iteration.
2020-03-11Doc: use 'ellipsoidal' to refer to the ellipsoidal formulation (to be ↵Even Rouault
opposed to the spherical one) Instead of 'elliptical'. Was suggested by @cffk in https://github.com/OSGeo/PROJ/pull/2030#issuecomment-596132341 An elliptical projection is a projection whose global shape fits inside an ellipsoid, like Mollweide. At least according to https://www.merriam-webster.com/dictionary/elliptical%20projection and https://en.wikipedia.org/wiki/Mollweide_projection
2020-03-10data/Makefile.am: remove bashismEven Rouault
2020-03-10utm/ups: make sure to set errno to PJD_ERR_ELLIPSOID_USE_REQUIRED if es==0Even Rouault
ENOMEM was wrongly set after setting PJD_ERR_ELLIPSOID_USE_REQUIRED Note: it is a bit strange to forbid the pure spherical case whereas the maths would allow it. I presume this is due to the typical usage of those methods.
2020-03-10fix documentation for proj_trans_generic(), see ↵Colin Doig
https://github.com/OSGeo/PROJ/issues/2032 (#2037)
2020-03-10Merge pull request #2040 from rouault/esri_map_Transverse_Mercator_ComplexEven Rouault
Map ESRI Transverse_Mercator_Complex to Transverse Mercator
2020-03-09Map ESRI Transverse_Mercator_Complex to Transverse MercatorEven Rouault
According to https://gis.stackexchange.com/questions/226679/complex-utm-projection it is highly likely that Transverse_Mercator_Complex corresponds to our extended/enhanced/Poder-Engsager transverse mercator method (etmerc), or something similarly precise. So we can map that to the standard Transverse Mercator method, since etmerc is used for it.
2020-03-09Approximate tmerc (Snyder): speed optimizationsEven Rouault
fwd: 7% faster on Core-i7@2.6GHz (with FMA triggered), 22% faster on GCE Xeon@2GHz (with FMA) inv: 31% faster on Core-i7@2.6GHz (with FMA triggered), 60% faster on GCE Xeon@2GHz (with FMA) The optimizations consists in different things: - optionaly use the FMA (Fused Multiply Addition) instruction set with gcc >= 6. Binaries are generated with the standard instruction set (SSE/SSE2), and with one variant with FMA, and the appropriate version is selected automatically at runtime. This gives a modest speedup, but measurable. The speedup is more obvious on lower clocked CPU. - inline mlfn and inv_mlfn - for inv_mlfn avoid recomputation of sin()/cos() at each iteration stage, by observing that the argument changes in modest way at each iteration, and using approximation of sin()/cos(). The differences due to that approximation are way below the 1e-11 tolerance threshold. Different in results are neglectable (only found in areas where the approximations of the Snyder formulas are already no longer valid) Before: $ echo 8e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 799997.896522093331 8999999.520601103082 $ echo 8e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 800000.000007762224 4999999.999971268699 $ echo 18e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 1079182.990696100984 8661150.574729491025 $ echo 18e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 1799997.510861013783 4999999.567328464240 After: $ echo 8e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 799997.896522093331 8999999.520601103082 $ echo 8e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 800000.000007762224 4999999.999971268699 $ echo 18e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 1079182.990696124267 8661150.574729502201 $ echo 18e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx | src/proj -d 12 +proj=utm +zone=31 +approx 1799997.510861013783 4999999.567328464240
2020-03-09Extended tmerc (Poder/Engsager): speed optimizationsEven Rouault
fwd: 52% faster on Core-i7@2.6GHz, 40% faster on GCE Xeon@2GHz inv: 24% faster on Core-i7@2.6GHz, 36% faster on GCE Xeon@2GHz Those speed-ups are obtained due to elimination of a number of transcendental functions (atan, sincos, cosh, sinh), through the use of usual trigonometric/hyperbolic formulas. The numeric results before/after seem identical at worse up to 14 decimal digits, which is way beyond the apparent accuracy of the computations On a point, far from central meridian, where round-tripping is not so great: Before: echo "81 1" | src/proj -d 18 +proj=utm +zone=31 | src/proj -d 18 -I +proj=utm +zone=31 80.999994286593448578 0.999987970918421620 After: $ echo "81 1" | src/proj -d 18 +proj=utm +zone=31 | src/proj -d 18 -I +proj=utm +zone=31 80.999994286593448578 0.999987970918422175 The benchmarking program used is: ``` #include "proj.h" #include <stdlib.h> #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { if( argc != 3 ) { fprintf(stderr, "Usage: bench quoted_proj_string fwd/inv\n"); exit(1); } PJ* p = proj_create(0, argv[1]); const int dir = strcmp(argv[2], "inv") == 0 ? PJ_INV : PJ_FWD; PJ_COORD coord; if( dir == PJ_FWD ) { coord.xy.x = 0.5; // rad coord.xy.y = 0.5; // rad } else { coord.xy.x = 450000; // m coord.xy.y = 5000000; // m } for(int i = 0; i < 40 * 1000* 1000; i++) proj_trans(p, dir, coord); proj_destroy(p); return 0; } ```
2020-03-09Merge pull request #2031 from snowman2/appveyorEven Rouault
Updated appveyor to not copy DLL & update existing vcpkg
2020-03-09Merge pull request #2025 from ↵Kristian Evers
rouault/projections_remove_assignments_in_expressions src/projections/: remove assignments in expression and multiple statements per line
2020-03-08Updated appveyor to not copy DLL & update existing vcpkgsnowman2
2020-03-08src/projections/: remove assignments in expression and multiple statements ↵Even Rouault
per line Should hopefully result in no change in results, and hopefully more readable code...
2020-03-06proj_internal.h: fix typo in macro name due to bad copy&paste. (No ↵Even Rouault
functional impact)
2020-03-06proj.ini: typo fix in comment [ci skip]Even Rouault
2020-03-06Typo fixes identified by scripts/fix_typos.shEven Rouault
2020-03-06Merge pull request #2024 from rouault/add_support_for_WKT1_ESRI_VERTCSEven Rouault
WKT import/export: add support for WKT1_ESRI VERTCS syntax
2020-03-06WKT import/export: add support for WKT1_ESRI VERTCS syntaxEven Rouault
2020-03-06Merge pull request #2023 from nyalldawson/update_notesKristian Evers
Add some more missing methods and notes to esri projection mapping
2020-03-06Add some more missing methods and notes to esri projection mappingNyall Dawson
2020-03-05ESRI WKT: map Mercator_Variant_A, Mercator_Variant_C and ↵Even Rouault
Transverse_Cylindrical_Equal_Area projections (#2020) * Add mapping of ESRI projection methods Mercator_Variant_A, Mercator_Variant_C and Transverse_Cylindrical_Equal_Area * Add a few notes about missing mappings
2020-03-05Remove occurences of deprecated PROJ.4 syntaxKristian Evers
+no_defs and +datum has no effect on the behaviour of proj, so can be left out in these examples in the docs. +no_defs in rare occasions would have had an effect in older PROJ versions but not from PROJ 6 and onwards. +datum has ever only been honoured by cs2cs and pj_transform(). Fixes #2017
2020-03-04Merge pull request #1986 from nyalldawson/behrmanEven Rouault
Map the Behrman projection to cae when converting ESRI CRSes
2020-03-04Add missing tests for ESRI projection method conversionNyall Dawson
2020-03-04Add capability to force a fixed value for a non-specified CRS componentNyall Dawson
while mapping ESRI projections, and map the Behrman projection to cae with lat_ts=30, lon_0=0
2020-03-04Document Autotools and CMake configure options (#2010)Mike Taves
2020-03-04Update README with info on PROJ-data (#2015) [ci skip]Kristian Evers
Removes section about proj-datumgrid-* packages in favour for a section about the PROJ-data package and the CDN.
2020-03-03createUnitOfMeasure(): use full double resolution for the conversion factor ↵Even Rouault
(#2011) Fixes https://github.com/OSGeo/gdal/issues/2290 where it was found that PROJ returned value for conversion factor of US Survey Foot unit wasn't at the maximum resolution, but only accurate to 15 significant digits.
2020-03-03Merge pull request #2009 from OSGeo/cmake-rpathKristian Evers
Follow PDAL's CMake RPATH strategy