<feed xmlns='http://www.w3.org/2005/Atom'>
<title>PROJ/src/apps, branch master</title>
<subtitle>Forked from https://github.com/OSGeo/PROJ</subtitle>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/'/>
<entry>
<title>Transformation: no longer do vertical trasnformation when doing compound CRS to 2D CRS / add --3d to cs2cs</title>
<updated>2022-03-16T11:24:25+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2022-03-16T11:24:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=3e7984f3b26e408e69b960f8e0d03b6ac0576188'/>
<id>3e7984f3b26e408e69b960f8e0d03b6ac0576188</id>
<content type='text'>
Previously, when computing transformation between a compound CRS and a
geographic/projected 2D CRS, the behaviour was similar to implicitly
promoting the 2D CRS to 3D CRS in the pipeline computation logic, hence
a geoid model could be applied. But note that when doing a geographic 3D
to geographic/projected 2D CRS transformation, we *did* not do this implicit
promotion and if a Helmert transformation existed between the datums, it
was done only in 2D. So this is a bit inconsistent and triggered the
comment in https://github.com/OSGeo/PROJ/issues/2318#issuecomment-1068924513

With this commit, we no longer do any vertical transformation when doing
compound CRS to the 2D CRS, but just take the transformation of the
horizontal part of the compound CRS to the 2D CRS.
Said otherwise, NAD83+NAVD88 to NAD83 will no longer lead to the
application of the geoid model. Unless you explicitly ask for the
promotion NAD83 to 3D.

Also related, in https://github.com/OSGeo/PROJ/issues/1563 that went to 6.3.0,
I changed cs2cs to automatically promote to 3D the CRS as soon as one of
them was compound, for the sake of being consistent with the past
behaviour. But it then becomes difficult to predict PROJ behaviour
depending on which level of it you consider...
This commit undoes that and adds an explicit --3d switch to cs2cs, similarly to
projinfo, to ask for promotion.

Other bug fix found in the process, when using legacy syntax, +init=epsg:4979,
(WGS 84 3D), the resulting CRS was 2D and not 3D.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, when computing transformation between a compound CRS and a
geographic/projected 2D CRS, the behaviour was similar to implicitly
promoting the 2D CRS to 3D CRS in the pipeline computation logic, hence
a geoid model could be applied. But note that when doing a geographic 3D
to geographic/projected 2D CRS transformation, we *did* not do this implicit
promotion and if a Helmert transformation existed between the datums, it
was done only in 2D. So this is a bit inconsistent and triggered the
comment in https://github.com/OSGeo/PROJ/issues/2318#issuecomment-1068924513

With this commit, we no longer do any vertical transformation when doing
compound CRS to the 2D CRS, but just take the transformation of the
horizontal part of the compound CRS to the 2D CRS.
Said otherwise, NAD83+NAVD88 to NAD83 will no longer lead to the
application of the geoid model. Unless you explicitly ask for the
promotion NAD83 to 3D.

Also related, in https://github.com/OSGeo/PROJ/issues/1563 that went to 6.3.0,
I changed cs2cs to automatically promote to 3D the CRS as soon as one of
them was compound, for the sake of being consistent with the past
behaviour. But it then becomes difficult to predict PROJ behaviour
depending on which level of it you consider...
This commit undoes that and adds an explicit --3d switch to cs2cs, similarly to
projinfo, to ask for promotion.

Other bug fix found in the process, when using legacy syntax, +init=epsg:4979,
(WGS 84 3D), the resulting CRS was 2D and not 3D.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix nullptr dereference in utilities whan argv[0] == NULL</title>
<updated>2022-02-19T11:38:28+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2022-02-19T11:34:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=61249e6606513295b9ba5ad9a42cbb3601694d13'/>
<id>61249e6606513295b9ba5ad9a42cbb3601694d13</id>
<content type='text'>
https://lwn.net/Articles/?offset=50 was an entertaining reading where we
learn that the fact that argv[0] contains the name of the binary is
purely a convention, normally taken by the shell that launches the
process, but not guaranteed by the execve() system call that does the
job.

The following test program tested against cct, cs2cs, geod, gie and proj
make them cause a null pointer dereference

```
 #include &lt;unistd.h&gt;
 #include &lt;stdio.h&gt;
extern char **environ;

int main()
{
    char* argv[] = { NULL };
    printf("%d\n", execve("/path/to/some/proj/binary", argv, environ));
    return 0;
}
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://lwn.net/Articles/?offset=50 was an entertaining reading where we
learn that the fact that argv[0] contains the name of the binary is
purely a convention, normally taken by the shell that launches the
process, but not guaranteed by the execve() system call that does the
job.

The following test program tested against cct, cs2cs, geod, gie and proj
make them cause a null pointer dereference

```
 #include &lt;unistd.h&gt;
 #include &lt;stdio.h&gt;
extern char **environ;

int main()
{
    char* argv[] = { NULL };
    printf("%d\n", execve("/path/to/some/proj/binary", argv, environ));
    return 0;
}
```
</pre>
</div>
</content>
</entry>
<entry>
<title>CMake: split configuration files for apps and tests (#3048)</title>
<updated>2022-02-14T09:07:34+00:00</updated>
<author>
<name>Mike Taves</name>
<email>mwtoews@gmail.com</email>
</author>
<published>2022-02-14T09:07:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=cb35cb17ace5d16c63d700378d78e0b057531e25'/>
<id>cb35cb17ace5d16c63d700378d78e0b057531e25</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Minor cppcheck fixes</title>
<updated>2022-01-09T12:05:31+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2022-01-09T12:05:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=f62fab9e3c839c150f22d013bcdfd6aed63a7e60'/>
<id>f62fab9e3c839c150f22d013bcdfd6aed63a7e60</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>geod / proj: accept lt-inv[geod/proj] name for older libtool versions</title>
<updated>2021-10-09T17:58:02+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-10-09T17:57:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=ca15e42b699a04a7391eefa2f7542aec97d2e9ec'/>
<id>ca15e42b699a04a7391eefa2f7542aec97d2e9ec</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>projinfo --list-crs / proj_get_crs_info_list_from_database(): make it work with IAU generic authority name</title>
<updated>2021-09-28T14:37:39+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-09-28T13:09:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=5d6bdadfca419c1d54d455e240743791e6cea44e'/>
<id>5d6bdadfca419c1d54d455e240743791e6cea44e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add a mapping for versioned authorities, so that one can use IAU:xxxx or IAU_2015:xxxx transparently</title>
<updated>2021-09-28T12:47:09+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-09-28T12:47:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=e6e6e4ca345e774910afa5bbe485c3d9f7851cd4'/>
<id>e6e6e4ca345e774910afa5bbe485c3d9f7851cd4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>createOperations(): deal with spherical planetocentric geodetic CRS</title>
<updated>2021-09-08T15:05:45+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-09-08T10:50:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=85733181ee7c2777139f5d1db94f2beabb737e96'/>
<id>85733181ee7c2777139f5d1db94f2beabb737e96</id>
<content type='text'>
This also fixes conversion between geocentric latlong and geodetic latlong
with cs2cs. This was dealt with in PR 1093, but in the wrong direction
(the geocentric latitude must be &lt;= in absolute value to the geodetic one)
The issue here was linked to the semantics of the +geoc specifier, which
affects the semantics of the input coordinates in the forward direction
(+geoc means that the input coordinate is is a geocentric latitude),
which defeats the logic of doing A to B by using the inverse path of A
and the forward path of B.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This also fixes conversion between geocentric latlong and geodetic latlong
with cs2cs. This was dealt with in PR 1093, but in the wrong direction
(the geocentric latitude must be &lt;= in absolute value to the geodetic one)
The issue here was linked to the semantics of the +geoc specifier, which
affects the semantics of the input coordinates in the forward direction
(+geoc means that the input coordinate is is a geocentric latitude),
which defeats the logic of doing A to B by using the inverse path of A
and the forward path of B.
</pre>
</div>
</content>
</entry>
<entry>
<title>Workaround 'Overlapping read/write of union is undefined behavior' cppcheck warning (but really fixing them would be more involved)</title>
<updated>2021-09-04T16:01:11+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-09-04T16:00:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=a767ae5d14063f3df1a3af994f26915f973de408'/>
<id>a767ae5d14063f3df1a3af994f26915f973de408</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>projinfo: fix error message regarding --output-id</title>
<updated>2021-05-23T10:58:06+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2021-05-23T10:58:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=08d4b05771ada2a57dd5f96a6e852a52b6084014'/>
<id>08d4b05771ada2a57dd5f96a6e852a52b6084014</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
