aboutsummaryrefslogtreecommitdiff
path: root/src/lib_proj.cmake
AgeCommit message (Collapse)Author
2016-12-15Horner and helmert (#456)Thomas Knudsen
Introducing the Horner polynomial evaluator also introduces the need for very long +init:tag arguments (a n'th order 2D polynomium has (n+1)(n+2)/2 coefficients, and n is typically in the range 5-10, i.e. up to around 60 coefficients for each polynomium, and there are 4 polynomia in a complete back/forward transformation set). Hence, in this commit, along with the first part of the Horner code, the code for reading +init files has been modified in a (for all practical purposes) backwards compatible way, by making it possible to introduce line continuations by escaping line breaks, i.e. preceding them with a backslash. An escaped line break works (as it would in TeX), by skipping all following whitespace, including interspersed #-comments. This simple extension makes it possible to create very long initialization elements without losing track of the structure (cf. s45b.pol and pj_init_test.c in the examples-directory for a demo). The s45b.pol file was created by hand-editing the output of the software doing the original constrained adjustment for the polynomial coefficients. The simple adding of the “skip following whitespace and comments” feature has made it possible to retain almost all metadata from the source material. This is considered very important, since 1) For the lack of a prior common file format for geodetic polynomial coefficients, there is a good chance that this will become THE standard, at least for the time being, and 2) Without the metadata represented, it will be very hard for a human to debug code involving a slightly misrepresented polynomium. Due to the current architecture of the pj_init.c code (mostly around the fill_buffer() function), it is next to impossible to implement the line continuation functionality in full generality. Hence, it has been necessary to limit this format extension to files smaller than 64 kB. * Correction of spherical HEALpix test case The first HEALpix test case in nad/testvarious is clearly intended to invoke the spherical form of HEALpix. It does, however, specify the spheroid using the +a=1 size parameter, without specifying any shape parameter. But since +no_defs is not specified either, a shape parameter is picked up from the nad/proj_def.dat file (where ellps=WGS84 is given in the <general> section). It appears that this has not happened before I updated the pj_init code to support projection pipelines (see below). I do, however, believe that the present behaviour is the correct one, and rather than retrohacking the pj_init code, to (incorrectly, I believe) reproduce the prior behaviour, I have corrected the test case invocation in nad/testvarious to specify the spheroid using the +R=1 size parameter (which was already used in the following test case). * Repair scaling of projections stomping on value of semimajor axis * Workaround MSVC HUGE_VAL misimplementation. The "return const err object" idiom (i.e. const <type> err = {HUGE_VAL,...}; ... if (bad) return err) is problematic to implement due to MSVC's misimplementation of HUGE_VAL as a non-const. Hence, we need to run-time initialize these. In the pj_inv functions, this was mistakenly done to the wrong object. For pj_fwdobs/invobs and the remaining part of the obs-based API, this is now worked around by providing functions returning a run time HUGE_VAL initialized PJ_OBS or PJ_COO resp. Obnoxious, but given MSVC's market penetration there is really not much else we can do.
2016-11-20Plumbing for pipelines (#453)Thomas Knudsen
* re-enter pipeline The pipeline interface is now internally based on the pj_obs_api, which simplifies the implementation significantly. This is the first mock up - it compiles fine, but is currently untested * pipeline code cleaned up The pipeline code is now based on the PJ_OBS api (although you can still invoke a pipeline through pj_fwd/pj_inv and their 3D brethren). This has made it possible to eliminate scores of funky casts and convoluted workarounds. The code is now way more straightforward and mostly conforming with common C idioms.. Also, the proj.h / obs_api interface to the logging system has been streamlined through the introduction of the pj_log_error, pj_log_debug, and pj_log_trace functions. * Geodesics + minor changes First proj.h style interface to Charles Karney's geodesics code: pj_lp_dist. Also, renamed pj_apply -> pj_trans * Extended Ellipsoidal Parameters Second eccentricity, second and third flattening etc. * Rename pj_debug_set -> pj_log_level ... and add self test code for PJ_pipeline * Clean up missing pj_apply->pj_trans * Clean up missing pj_obs_dist_2d rename * pj_strerrno bug fixed. Some doc/comments added (In response to a review by @kbevers)
2016-11-12Pipeline plus api - in continuation of the Genereic Coordinates pull request ↵Thomas Knudsen
(#445) This commit reflects continued work on the new rationalized API with geodetic extensions (see rationale in proj.h). It also reflects the parallel work on the transformation pipeline reimplementation, by introducing the PJ_cart cartesian/ellipsoidal converter. See example/pj_obs_api_test.c for demo example code
2016-10-24Generic coordinates (#431)Thomas Knudsen
* Pipeline preliminaries Introducing the PJ_OBSERVATION data type as the basis for generic geodetic transformations. Also introducing the elements of a new minimalistic API focused on generic geodetic transformations. This API is documented in the new proj.h header, and is orthogonal (non-intrusive) wrt. the existing API from proj_api.h Finally added a large amount of comments to the somewhat intractable projects.h, and extended the PJ object with a number of additional ellipsoidal parameters of general geodetic usefulness. The PJ elements fwdobs and invobs extend fwd3d and inv3d in a homologous way to how fwd3d and inv3d extend fwd and inv.
2016-07-28Implemented Times projectionKristian Evers
2016-04-05Merge remote-tracking branch 'refs/remotes/OSGeo/master' into ↵Thomas Knudsen
sdfe-refactor-macros--and-repair-generic-constructor-bug
2016-04-05Some initial work on internal regression testsThomas Knudsen
Need these to reduce the chance I'm screwing up something during this rather intrusive code surgery
2016-04-04Adding Natural Earth II and Compact MillerBojan Savric
2016-03-27Add Patterson Cylindrical projection. Add tests for projection.Micah Cochran
2016-02-24Add support for MISR SOM projectionmbull
2016-01-06adapt patch for #325 to fix static-only library buildingHoward Butler
2015-10-23- API Extension to include fwd3d / inv3dPiyush Agram
- New SCH coordinate system for radar imaging systems
2015-07-07Make pj_init() locale safe and no longer modify locale (#226)Even Rouault
Remove setlocale() use in pj_init_ctx(), and replace uses of atof() & strtod() by their locale safe variants pj_atof() and pj_strtod(). Proj versions from now advertize #define PJ_LOCALE_SAFE 1 in proj_api.h and export pj_atof() & pj_strtod()
2015-02-22More CMake churn #264Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2632 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-21align CMake SOVERSION with autotools #263Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2629 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-21clean up include installation for CMake #262Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2628 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-21define default PROJ_LIB location for CMake build #261Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2626 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-21cmake build: install nad.lst, geodesic.h. But not emess.h and pj_list.h ↵Even Rouault
(from Charles Karney) git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2625 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-21src/lib_proj.cmake: remove space from variable name to suppress policy ↵Even Rouault
warning. (from Charles Karney) git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2622 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-21adapt Charles Karney's patches for smoother CMake #258Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2614 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-17#256: CMake tweaksHoward Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2608 4e78687f-474d-0410-85f9-8d5e500ac6b2
2015-02-17apply #248 for CMake healpix compilation typoHoward Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2607 4e78687f-474d-0410-85f9-8d5e500ac6b2
2014-09-13one more CMake-related fixup #243Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2532 4e78687f-474d-0410-85f9-8d5e500ac6b2
2014-09-13mostly working CMake configuration #243Howard Butler
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2525 4e78687f-474d-0410-85f9-8d5e500ac6b2