<feed xmlns='http://www.w3.org/2005/Atom'>
<title>PROJ/examples, branch 8.2</title>
<subtitle>Forked from https://github.com/OSGeo/PROJ</subtitle>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/'/>
<entry>
<title>DOC: Refresh Development/Quickstart and remove Development/Threads (#2863)</title>
<updated>2021-09-27T07:17:58+00:00</updated>
<author>
<name>Brendan Jurd</name>
<email>direvus@gmail.com</email>
</author>
<published>2021-09-27T07:17:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=e27c4424ea84160ddc957032cb65e444f7d7944a'/>
<id>e27c4424ea84160ddc957032cb65e444f7d7944a</id>
<content type='text'>
* DOC: Refresh Development/Quickstart and remove Development/Threads

The document Development/Threads was severely out of date, and was
focussed on contrasting the current API with an old API that was
deprecated several years ago, and removed from the current PROJ earlier
this year.

Update Development/Quickstart to give more information about the use of
threading context, as a replacement for the content that was previously
in Threads.

Also give the example code examples/pj_obs_api_mini_demo.c a cleanup
pass to make it at least internally consistent with its own code style.

The header comments of the example code are still, much like the Threads
document, fixated on comparing proj.h against proj_api.h, which is an
interesting historical curio to be sure, but probably doesn't need to
persist here.  It might be worth cleaning this up further as a separate
exercise.

Fixes #2451</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* DOC: Refresh Development/Quickstart and remove Development/Threads

The document Development/Threads was severely out of date, and was
focussed on contrasting the current API with an old API that was
deprecated several years ago, and removed from the current PROJ earlier
this year.

Update Development/Quickstart to give more information about the use of
threading context, as a replacement for the content that was previously
in Threads.

Also give the example code examples/pj_obs_api_mini_demo.c a cleanup
pass to make it at least internally consistent with its own code style.

The header comments of the example code are still, much like the Threads
document, fixated on comparing proj.h against proj_api.h, which is an
interesting historical curio to be sure, but probably doesn't need to
persist here.  It might be worth cleaning this up further as a separate
exercise.

Fixes #2451</pre>
</div>
</content>
</entry>
<entry>
<title>s45b.pol: remove trailing backslashes that prevent it from being used</title>
<updated>2021-03-09T11:45:11+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-03-09T11:45:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=7aa6383566516d9d43c61a0378370a66e496df30'/>
<id>7aa6383566516d9d43c61a0378370a66e496df30</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Doc: update quickstart with PROJ 6 API (fixes #1403)</title>
<updated>2019-04-19T20:55:56+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2019-04-19T20:53:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=a8080f3f17f96449a6c706bfed9ab3d7f9a75e5b'/>
<id>a8080f3f17f96449a6c706bfed9ab3d7f9a75e5b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>pj_obs_api_mini_demo.c: fix typo: en -&gt; enu for PJ_COORD</title>
<updated>2018-05-06T00:00:07+00:00</updated>
<author>
<name>Kurt Schwehr</name>
<email>schwehr@google.com</email>
</author>
<published>2018-05-06T00:00:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=f739c12ae93701c652ff6e1cefa7f8fc29437c01'/>
<id>f739c12ae93701c652ff6e1cefa7f8fc29437c01</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Use the proper functions and variable names example program</title>
<updated>2018-03-23T17:23:18+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2018-03-23T17:23:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=445fdebcc29b909c8008ae8b4ff46c25aeba1e18'/>
<id>445fdebcc29b909c8008ae8b4ff46c25aeba1e18</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'osgeo/master' into docs-release-4.10.0</title>
<updated>2018-02-19T21:39:17+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2018-02-19T21:39:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=43d811d20598abde95a8d177123e9f26fe5229ab'/>
<id>43d811d20598abde95a8d177123e9f26fe5229ab</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Some corrections in response to a review by Kristian Evers (#718)</title>
<updated>2017-12-19T09:28:16+00:00</updated>
<author>
<name>Thomas Knudsen</name>
<email>busstoptaktik@users.noreply.github.com</email>
</author>
<published>2017-12-19T09:28:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=a885fbb2f1f285c2cdadacdaa4616bf60184f925'/>
<id>a885fbb2f1f285c2cdadacdaa4616bf60184f925</id>
<content type='text'>
* Some corrections in response to a review by Kristian Evers
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Some corrections in response to a review by Kristian Evers
</pre>
</div>
</content>
</entry>
<entry>
<title>Added more pages to 'development' chapter. Moved old API description to section named 'deprecated'. Created a quickstart page for the development chapter. Scaffolding in place for the rest of the chapter.</title>
<updated>2017-09-04T20:32:20+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2017-09-04T20:32:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=5dc4fb39db01bf06945b063116c10af7661a7999'/>
<id>5dc4fb39db01bf06945b063116c10af7661a7999</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>obs_api revision and improvements: new namespace etc. (#530)</title>
<updated>2017-07-07T15:14:28+00:00</updated>
<author>
<name>Thomas Knudsen</name>
<email>busstoptaktik@users.noreply.github.com</email>
</author>
<published>2017-07-07T15:14:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=e09e24eddbd49cd802ac1334f229f1698ea0b755'/>
<id>e09e24eddbd49cd802ac1334f229f1698ea0b755</id>
<content type='text'>
* obs_api revision and improvements: new namespace etc.

* Minor corrections: use unused functions, add missing prototype, added fwd/invcoord to PJ

* Minor correction: MSVC barfs on va_arg type specification. Trying once more with added parens

* Reverting paren correction, which appears to be a non-solution

* Significant improvements to the OBS_API, plus a number of corrections, mostly in test code, to reflect API changes

* Added two missing prototypes

* Adding the proj_transform function and some related checks

* Improvements to proj_transform etc. based on suggestions from Even Rouault

* Reducing the libc include footprint of proj.h - again based on suggestions from Even Rouault

* A few minor corrections

* Eliminate a MSVC warning about non-initialized usage. Not an actual issue, as another check has locked the path, but at least this should calm down MSVC

* Improved support for the errno reset/restore paradigm

* Introduced the internal header proj_internal.h; Moved most non-API stuff from pj_obs_api.c to pj_internal.c

* Adding proj_internal.h to HEADERS_LIBPROJ to solve build problems

* Correcting a few pj...proj blunders in PJ_pipeline.c

* Correcting a few additional blunders in PJ_pipeline.c

* Changed angle-brackets to quotation marks in includes of proj_internal.h

* Some minor build system repairs

* Some PJ_CONTEXT usage simplifications following suggestions by Kristian Evers @kbevers

* Added version numbering to proj.h - Fixes #529

* remove proj_errno_restore macro, provide function implementation

* Add proj_get_definition. Fixes #538

* Added library specific deallocator proj_buffer_free, eliminating a potential cross heap issues on Windows. Thx to Even Rouault for spotting this

* Got rid of a meaningless cast in proj_buffer_free

* Added some missing functions to proj.def (again spotted by @rouault); removed some not-yet-implemented material from proj.h

* Renamed proj_get_definition/proj_buffer_free to proj_definition_create/proj_definition_destroy, for symmetry and clarity

* Renaming the definition handlers to proj_definition_retrieve / proj_free

* Renaming proj_free to proj_release
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* obs_api revision and improvements: new namespace etc.

* Minor corrections: use unused functions, add missing prototype, added fwd/invcoord to PJ

* Minor correction: MSVC barfs on va_arg type specification. Trying once more with added parens

* Reverting paren correction, which appears to be a non-solution

* Significant improvements to the OBS_API, plus a number of corrections, mostly in test code, to reflect API changes

* Added two missing prototypes

* Adding the proj_transform function and some related checks

* Improvements to proj_transform etc. based on suggestions from Even Rouault

* Reducing the libc include footprint of proj.h - again based on suggestions from Even Rouault

* A few minor corrections

* Eliminate a MSVC warning about non-initialized usage. Not an actual issue, as another check has locked the path, but at least this should calm down MSVC

* Improved support for the errno reset/restore paradigm

* Introduced the internal header proj_internal.h; Moved most non-API stuff from pj_obs_api.c to pj_internal.c

* Adding proj_internal.h to HEADERS_LIBPROJ to solve build problems

* Correcting a few pj...proj blunders in PJ_pipeline.c

* Correcting a few additional blunders in PJ_pipeline.c

* Changed angle-brackets to quotation marks in includes of proj_internal.h

* Some minor build system repairs

* Some PJ_CONTEXT usage simplifications following suggestions by Kristian Evers @kbevers

* Added version numbering to proj.h - Fixes #529

* remove proj_errno_restore macro, provide function implementation

* Add proj_get_definition. Fixes #538

* Added library specific deallocator proj_buffer_free, eliminating a potential cross heap issues on Windows. Thx to Even Rouault for spotting this

* Got rid of a meaningless cast in proj_buffer_free

* Added some missing functions to proj.def (again spotted by @rouault); removed some not-yet-implemented material from proj.h

* Renamed proj_get_definition/proj_buffer_free to proj_definition_create/proj_definition_destroy, for symmetry and clarity

* Renaming the definition handlers to proj_definition_retrieve / proj_free

* Renaming proj_free to proj_release
</pre>
</div>
</content>
</entry>
<entry>
<title>Horner and helmert (#456)</title>
<updated>2016-12-15T15:46:54+00:00</updated>
<author>
<name>Thomas Knudsen</name>
<email>busstoptaktik@users.noreply.github.com</email>
</author>
<published>2016-12-15T15:46:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=44c611c574f001267cd39c904c081e8f1f0d8c96'/>
<id>44c611c574f001267cd39c904c081e8f1f0d8c96</id>
<content type='text'>
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
&lt;general&gt; 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 &lt;type&gt; 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
&lt;general&gt; 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 &lt;type&gt; 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.
</pre>
</div>
</content>
</entry>
</feed>
