aboutsummaryrefslogtreecommitdiff
path: root/src/proj_internal.h
AgeCommit message (Collapse)Author
2020-08-20projCtx_t: Copy ini file settings, proj4_init_rules, etc.. when initializing ↵Alan D. Snow
context from global (#2331)
2020-08-19Add methods to ensure safer interactions with cpp_contextsnowman2
2020-08-16ENH: Add support for custum CA Bundle path (#2323)Alan D. Snow
Fixes #2320
2020-05-28Implement wink2 inverse by generic inversion of forward methodEven Rouault
- Move the generic method initiated from adams_ws2 to a pj_generic_inverse_2d() method - Use it in adams_ws2 - Use it in wink2 Fixes https://github.com/qgis/QGIS/issues/35512
2020-04-26pipeline initialization: avoid deep recursion on corrupted PROJ string like ↵Even Rouault
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=21889
2020-04-21Typo fixes in code comments [ci skip]Even Rouault
2020-04-20Moved proj_context_get_url_endpoint & ↵Alan D. Snow
proj_context_get_user_writable_directory to proj.h (#2162) Fixes #2028
2020-04-15tmerc/utm: add a +algo=auto/evenden_snyder/poder_engsager parameterEven Rouault
The default remains +alg=poder_engsager. This default value can be changed in proj.ini +algo=auto will use Evenden Synder implementation if the error in doing so remains below 0.1 mm on Earth-sized ellipsoid
2020-04-12Add proj_degree_input() and proj_degree_output()Kristian Evers
Equivalent to proj_angular_input() and proj_angular_output() but checking for degree units instead. proj_create_crs_to_crs() rarely, if ever, returns pipelines that has radians as input or output so using proj_angular_*() is not a useful check for io units of pipelines. These two new functions should make life a bit easier for users that generally store there angular coordinates in radians. Closes #2027
2020-04-06Move inline code for optimize mlfn from tmerc to mlfn.hpp to avoid code ↵Even Rouault
duplication
2020-04-04hgridshift/vgridshift: defer grid opening when grid has already been openedEven Rouault
Relates to #2115 With the fix of https://github.com/OSGeo/PROJ/pull/2128, transforming between EPSG:4326+3855 and EPSG:4269+5703 leads to many operations with many grids, and opening a file handle for each operation saturates the limit of 1024 file handles opened simunalteously. This fix defers grid opening when a transformation has already been instanciated with the same grid.
2020-03-30Merge pull request #2052 from rouault/speedup_phi2Even Rouault
pj_phi2(): speed-up computation (and thus inverse ellipsoidal Mercator and LCC)
2020-03-17Deprecate proj_list_angular_units(). Follow-up of ↵Even Rouault
https://github.com/OSGeo/PROJ/pull/2065
2020-03-16Merge branch 'master' into add_proj_get_suggested_operationEven 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-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-06proj_internal.h: fix typo in macro name due to bad copy&paste. (No ↵Even Rouault
functional impact)
2020-02-24Expose proj_context_is_network_enabled() in C APIEven Rouault
2020-02-11Use relative directory to locate PROJ resource files.Even Rouault
Fixes #1490 This is an extension of the Window-specific logic added recently to Unix builds. This reuses parts of proposed past commit https://github.com/OSGeo/PROJ/pull/1517/commits/82a07e51c6e24ddb936d131ababe29f1ac36ef14 (credits to @abellgithub)
2020-02-06Travis: update CLang Static Analyzer to CLang 9Even Rouault
Enable optional checkers Fix two false positives
2020-02-04Add projsync utilityEven Rouault
Fixes #1750
2020-01-27projinfo: add --remote-data switchEven Rouault
2020-01-22Merge RFC4 (#1865)Even Rouault
This commit is the result of the squashing of rfc4_dev branch in a single commit. It implements mostly RFC 4 related work. * Grid handling: - remove obsolete and presumably unfinished implementation of grid catalog functionality - all grid functionality is in grids.cpp/.hpp - vertical and horizontal grid shift: rework to no longer load whole grid into memory - remove hgrids and vgrids member from PJ structure, and store them in hgridshift/vgridshift/deformation structures - build systems: add optional libtiff dependency. Must be explicitly disabled if not desired - add support for horizontal and vertical grids in GeoTIFF, if libtiff is available - add GenericShiftGridSet and GenericShiftGrid classes, relying on TIFF grids, that can be used for generic purpose grid-based adjustment - add a +proj=xyzgridshift method to perform geocentric translation by grid. Used for French NTF to RGF93 transformation using gr3df97a.tif grid - deformation: add support for +grids= for GeoTIFF grids - horizontal grid shift: fix failures on points slightly outside a subgrid (fixes #209) * File management: - add a filemanager.cpp/.hpp to deal with file related work - test for legacy proj_api.h fileapi - proj.h: add proj_context_set_fileapi() and proj_context_set_sqlite3_vfs_name() (fixes #866) - add capability to read resource files from the user writable directory * Network access: - build systems: add optional curl dependency - add a curl-based default implementation for network related functionality - proj.h: add C API to control network functionality, and optionaly provide network callbacks - add data/proj.ini with default settings - add a SQLite3 local cache of downloaded chunks - add proj_is_download_needed() and proj_download_file() * Use Win32 Unicode APIs and expect all strings to be UTF-8 (fixes #1765) For backward compatibility, if PROJ_LIB content is found to be not UTF-8 or pointing to a non existing directory, then an attempt at interpretating it in the ANSI page encoding is done. proj_context_set_search_paths() now assumes strings to be in UTF-8, and functions returning paths will also return values in UTF-8.
2019-12-14Horizontal grid shift: fix issue on iterative inverse computation when ↵Even Rouault
switching between (sub)grids (fixes #1663) Given in.txt with 53.999759140 5.144478208 252.6995 Before the fix, cct -t 0 -d 4 +proj=pipeline +step +proj=axisswap +order=2,1,3,4 +step +proj=hgridshift +inv +grids=rdtrans2018.gsb +step +proj=vgridshift +grids=naptrans2018.gtx +step +proj=sterea +lat_0=52.156160556 +lon_0=5.387638889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel in.txt returned: 139079.8814 668306.0302 212.1724 0.0000 It now returns: 139079.8850 668306.0458 212.1724 0.0000 which meets with the 1mm accuracy the expected result of test point ``` 30010049 53.999759140 5.144478208 252.6995 139079.8850 668306.0460 212.1723 ```
2019-11-18proj_trans(): tune selection of operation when there are several ↵Even Rouault
alternatives, to select the operation with best accuracy
2019-11-12Fix proj_assign_context()/pj_set_ctx() with pipelines and alternative coord ↵Even Rouault
operations Fixes https://github.com/OSGeo/gdal/issues/1989 pj_set_ctx() only changes the context to the main object. It should also recurse down to the steps of the pipeline and the alternative coordinate operations hold in alternativeCoordinateOperations In the GDAL use case with multithreaded reprojection, and objects being transferred between thread, this would cause a failed coordinate transformation to affect an unrelated transformation of another thread...
2019-09-19Require C99 compiler see #1621Charles Karney
cmake and autoconf now stipulate C99 change c89 to c99 in travis jobs remove HAVE_C99_MATH checks (unrelated) relax Visual Studio compatibility check in cmake/project-config-version.cmake.in (VS 2019 can use a VS 2015 library but not vice versa).
2019-09-05PROJStringParser::createFromPROJString(): avoid potential infinite recursion ↵Even Rouault
(fixes #1574) The exact circumstances are a bit difficult to explain, but they involve using a non-default context, enabling proj_context_use_proj4_init_rules() on it, using proj_create(ctxt, "+init=epsg:XXXX +type=crs"), whereas PROJ_LIB is defined to a directory that has a 'epsg' file in it.
2019-08-09C API: add proj_as_projjson()Even Rouault
2019-05-05geos: avoid division by zeroEven Rouault
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14602 Credit to OSS Fuzz
2019-04-04Reject negative e parameter to avoid division by zeroEven Rouault
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14044 Credit to OSS Fuzz
2019-04-02Make sure that ISO19111 C++ code sets pj_errno on errorsKristian Evers
2019-03-26pj_gc_findgrid(): annotate likely memory leak. Coverity CID 193539Even Rouault
2019-03-14Reject eccentricity values larger than oneEven Rouault
Valid eccentricity should be between 0 (included) or 1 (excluded) Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=13665 Credit to OSS Fuzz
2019-02-20vgridshift: propagate multiplier to avoid false-positive detection of nodata ↵Even Rouault
values in the grids with US VERTCON grids that are in millimeters
2019-02-14Merge pull request #1264 from kbevers/remove-t_obsKristian Evers
Clean up time handling in helmert and deformation
2019-02-14deformation: Replace +t_obs with +dtKristian Evers
The +t_obs parameter was confusing for users since it effectively overwrote the observation time in input coordinates. To make it more clear what is the operation is doing, users are now required to directly specify the time span for which they wish to apply a given deformation. The parameter +dt has been added for that purpose. The new parameter is mutually exclusive with +t_epoch. +dt is used when deformation for a set amount of time is needed and +t_epoch is used (in conjunction with the observation time of the input coordinate) when deformation from a specific epoch to the observation time is needed.
2019-02-13Add push and pop operationsKristian Evers
This commit introduces the concept of a pipeline coordinate stack in which components of coordinates can be saved and loaded from. This makes it possible to moved values from one step of a pipeline to another, effectively overwriting parts of the output from a given step.
2019-02-10Completely remove Chebychev remains from codebaseEven Rouault
c6ab83f5742bc5ac6f9cb9a8b2a4f1ea241b6f63 already removed their availability in user facing application, but the library code remained, and appeared to be unused by the rest of the library, and not available to library users, the API being only in proj_internal.h. So remove all remains.
2019-02-05PROJStringParser::createFromPROJString(): avoid potential infinite loop. ↵Even Rouault
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=12913. Credit to OSS Fuzz
2019-01-22proj_create_crs_to_crs(): defer selection of actual coordinate operation ↵Even Rouault
until proj_trans() is called (fixes #1229)
2019-01-19Add support for spaces in grid name parameters (fixes #1152)Even Rouault
2019-01-17Remove proj_create_from_proj_string() and proj_create_from_user_input(), and ↵Even Rouault
make proj_create() do more or less what proj_create_from_user_input() did before (fixes #1214)
2019-01-17import/export PROJ strings from ISO19111 code: require/output +type=crs for ↵Even Rouault
CRS objects (refs #1214)
2019-01-09proj.h: add proj_context_set_file_finder() and ↵Even Rouault
proj_context_set_search_paths() (refs #1150)
2019-01-09Allocate projCtx_t as a C++ objectEven Rouault
2019-01-04Merge pull request #1205 from kbevers/masterKristian Evers
Better handling of pipelines including step with PJ_IO_UNITS_WHATEVER operations
2019-01-04Fix use-after-free in debug logging of pj_ellipsoid() (probably caused by a ↵Even Rouault
recent master commit)
2019-01-03Rename PJ_IO_UNITS_ANGULAR to PJ_IO_UNITS_RADIANSKristian Evers
This communicates better what the unit actually is. It also opens the door for potentially adding PJ_IO_UNITS_DEGREES in the future in order to coordinates in degrees correctly as well.