<feed xmlns='http://www.w3.org/2005/Atom'>
<title>PROJ/src/conversions, branch 8.0</title>
<subtitle>Forked from https://github.com/OSGeo/PROJ</subtitle>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/'/>
<entry>
<title>Remap ENOMEM from PROJ_ERR_INVALID_OP to PROJ_ERR_OTHER</title>
<updated>2020-12-15T16:53:29+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-12-15T16:53:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=a27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80'/>
<id>a27c0255e7b8e6aab1b91e49fd7870d1ee4e1a80</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Various operations: remove explicit short name prefixing in log messages now that it is automatically added</title>
<updated>2020-12-15T16:24:55+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-12-15T14:32:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=df96a13d2c9b70bc18cec1b08eea5b2b068127d7'/>
<id>df96a13d2c9b70bc18cec1b08eea5b2b068127d7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revise error codes to have a reduced set exposed in the public API.</title>
<updated>2020-12-15T00:13:43+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-12-14T23:51:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=244a24104ded3a4573aeffa32160af21f76cbce6'/>
<id>244a24104ded3a4573aeffa32160af21f76cbce6</id>
<content type='text'>
Fixes #2482

And also add proj_context_errno_string()

Revise gie 'expect failure errno XXXX' strings
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #2482

And also add proj_context_errno_string()

Revise gie 'expect failure errno XXXX' strings
</pre>
</div>
</content>
</entry>
<entry>
<title>fix build</title>
<updated>2020-12-02T14:22:48+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-12-02T14:22:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=ebe00831b7d6de3aae01ddd5f3074e53ac6d981e'/>
<id>ebe00831b7d6de3aae01ddd5f3074e53ac6d981e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #2444 from rouault/topocentric</title>
<updated>2020-12-02T13:42:33+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-12-02T13:42:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=b7fb045ebde07ca461b08269697b25128ed503a1'/>
<id>b7fb045ebde07ca461b08269697b25128ed503a1</id>
<content type='text'>
Add +proj=topocentric geocentric-&gt;topocentric conversion (fixes #500)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add +proj=topocentric geocentric-&gt;topocentric conversion (fixes #500)</pre>
</div>
</content>
</entry>
<entry>
<title>Add +proj=topocentric geocentric-&gt;topocentric conversion (fixes #500)</title>
<updated>2020-11-23T19:58:26+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-11-22T14:08:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=d8fe9964bcbc6d1eeaddf6f5d47ca6d444dc8744'/>
<id>d8fe9964bcbc6d1eeaddf6f5d47ca6d444dc8744</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove old pj_ memory (de)allocation functions</title>
<updated>2020-11-20T15:40:40+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2020-11-20T15:37:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=046270a85faf20f38d01e02942d197db74bb8542'/>
<id>046270a85faf20f38d01e02942d197db74bb8542</id>
<content type='text'>
Gone are pj_malloc, pj_calloc, pj_dalloc and pj_dealloc. Their primary
function as API memory functions in proj_api.h is no longer there and
the other use as a workaround for old errno problems is no longer valid
either.

Replaced with malloc and free across the codebase.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Gone are pj_malloc, pj_calloc, pj_dalloc and pj_dealloc. Their primary
function as API memory functions in proj_api.h is no longer there and
the other use as a workaround for old errno problems is no longer valid
either.

Replaced with malloc and free across the codebase.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #2144 from kbevers/proj_degree_inoutput</title>
<updated>2020-04-13T08:32:05+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2020-04-13T08:32:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=031b6ab95e4bedbf2f8f5d55407562b2b69ce98f'/>
<id>031b6ab95e4bedbf2f8f5d55407562b2b69ce98f</id>
<content type='text'>
Add proj_degree_input() and proj_degree_output()</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add proj_degree_input() and proj_degree_output()</pre>
</div>
</content>
</entry>
<entry>
<title>Add proj_degree_input() and proj_degree_output()</title>
<updated>2020-04-12T10:20:44+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2020-04-11T10:13:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=925ae56c40b0cfa7d861f55e4332cb5603168a2c'/>
<id>925ae56c40b0cfa7d861f55e4332cb5603168a2c</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>Inverse cart: speed-up computation by 33%</title>
<updated>2020-04-11T17:37:55+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2020-04-11T17:32:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=78c1df51e0621a4e0b2314f3af9478627e018db3'/>
<id>78c1df51e0621a4e0b2314f3af9478627e018db3</id>
<content type='text'>
Saves 2 sincos() and 1 atan2() calls.

With the following bench
```
 #include "proj.h"
 #include &lt;stdlib.h&gt;
 #include &lt;stdio.h&gt;
 #include &lt;string.h&gt;

int main(int argc, char* argv[])
{
    if( argc != 2 ) {
        fprintf(stderr, "Usage: bench_inv_cart fwd/inv\n");
        exit(1);
    }
    PJ* p = proj_create(0, "+proj=cart");
    const int dir = strcmp(argv[1], "inv") == 0 ? PJ_INV : PJ_FWD;
    PJ_COORD coord;
    if( dir == PJ_FWD )
    {
        coord.xyz.x = 3.14159/2;
        coord.xyz.y = 3.14159/2;
        coord.xyz.z = 100;
    }
    else
    {
        coord.xyz.x = 3e6;
        coord.xyz.y = 3e6;
        coord.xyz.z = 3e6;
    }
    for(int i = 0; i &lt; 10* 1024 * 1024; i++ )
    {
        proj_trans(p, dir, coord);
    }

    proj_destroy(p);
    return 0;
}
```

On Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Time before: 2.37s
Time after:  1.57s
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Saves 2 sincos() and 1 atan2() calls.

With the following bench
```
 #include "proj.h"
 #include &lt;stdlib.h&gt;
 #include &lt;stdio.h&gt;
 #include &lt;string.h&gt;

int main(int argc, char* argv[])
{
    if( argc != 2 ) {
        fprintf(stderr, "Usage: bench_inv_cart fwd/inv\n");
        exit(1);
    }
    PJ* p = proj_create(0, "+proj=cart");
    const int dir = strcmp(argv[1], "inv") == 0 ? PJ_INV : PJ_FWD;
    PJ_COORD coord;
    if( dir == PJ_FWD )
    {
        coord.xyz.x = 3.14159/2;
        coord.xyz.y = 3.14159/2;
        coord.xyz.z = 100;
    }
    else
    {
        coord.xyz.x = 3e6;
        coord.xyz.y = 3e6;
        coord.xyz.z = 3e6;
    }
    for(int i = 0; i &lt; 10* 1024 * 1024; i++ )
    {
        proj_trans(p, dir, coord);
    }

    proj_destroy(p);
    return 0;
}
```

On Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Time before: 2.37s
Time after:  1.57s
</pre>
</div>
</content>
</entry>
</feed>
