<feed xmlns='http://www.w3.org/2005/Atom'>
<title>PROJ/src/pj_units.c, branch rfc4_dev</title>
<subtitle>Forked from https://github.com/OSGeo/PROJ</subtitle>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/'/>
<entry>
<title>cpp conversion: minimal steps to fix compilation errors, not warnings</title>
<updated>2018-12-26T09:08:53+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2018-12-18T19:24:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=610957f7035242f15743c399ffd429b92bc36206'/>
<id>610957f7035242f15743c399ffd429b92bc36206</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement RFC 2: Initial integration of "GDAL SRS barn" work</title>
<updated>2018-11-14T21:48:29+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2018-11-14T16:40:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=d928db15d53805d9b728b440079756081961c536'/>
<id>d928db15d53805d9b728b440079756081961c536</id>
<content type='text'>
This work mostly consists of:
- a C++ implementation of the ISO-19111:2018 / OGC Topic 2
  "Referencing by coordinates" classes to represent Datums,
  Coordinate systems, CRSs (Coordinate Reference Systems) and
  Coordinate Operations.
- methods to convert between this C++ modeling and WKT1, WKT2
  and PROJ string representations of those objects
- management and query of a SQLite3 database of CRS and Coordinate Operation definition
- a C API binding part of those capabilities

This is all-in-one squashed commit of the work of
https://github.com/OSGeo/proj.4/pull/1040
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This work mostly consists of:
- a C++ implementation of the ISO-19111:2018 / OGC Topic 2
  "Referencing by coordinates" classes to represent Datums,
  Coordinate systems, CRSs (Coordinate Reference Systems) and
  Coordinate Operations.
- methods to convert between this C++ modeling and WKT1, WKT2
  and PROJ string representations of those objects
- management and query of a SQLite3 database of CRS and Coordinate Operation definition
- a C API binding part of those capabilities

This is all-in-one squashed commit of the work of
https://github.com/OSGeo/proj.4/pull/1040
</pre>
</div>
</content>
</entry>
<entry>
<title>No longer declare pj_prime_meridians, pj_ellps and pj_units as extern C, but static'ify them</title>
<updated>2018-10-17T13:32:50+00:00</updated>
<author>
<name>Even Rouault</name>
<email>even.rouault@spatialys.com</email>
</author>
<published>2018-10-17T13:32:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=35eb793ff6b411cc88fc578b4d99e34cd25ca613'/>
<id>35eb793ff6b411cc88fc578b4d99e34cd25ca613</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move struct definitions for proj_list_* functions to proj.h</title>
<updated>2018-10-16T19:32:00+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2018-10-10T19:11:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=526fe4975e789e3437646adbe86608616eac21fe'/>
<id>526fe4975e789e3437646adbe86608616eac21fe</id>
<content type='text'>
With projects.h not being available to outside users anymore we need to
define PJ_UNITS, PJ_ELLPS, PJ_PRIME_MERIDIANS and PJ_OPERATIONS
elsewhere.

Related pj_get_*_ref() functions have been removed in favour
of their proj_ namespaced counterparts.

char pointers have been changed to const char pointers.

Resolves #983
Resolved #1147

Make char pointers const
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With projects.h not being available to outside users anymore we need to
define PJ_UNITS, PJ_ELLPS, PJ_PRIME_MERIDIANS and PJ_OPERATIONS
elsewhere.

Related pj_get_*_ref() functions have been removed in favour
of their proj_ namespaced counterparts.

char pointers have been changed to const char pointers.

Resolves #983
Resolved #1147

Make char pointers const
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert pj_units to_meters entries for US units.</title>
<updated>2018-07-11T15:10:28+00:00</updated>
<author>
<name>Charles Karney</name>
<email>charles@karney.com</email>
</author>
<published>2018-07-11T15:10:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=3efab3e9ee22de67651ee24c89ac750c212cc9a0'/>
<id>3efab3e9ee22de67651ee24c89ac750c212cc9a0</id>
<content type='text'>
Bletch, pj_init also decodes the to_meters field of pj_unit, but only
handles plain numbers or 1/nnn, but not 1./nnn or mmm/nnn.  (So the
original code would have not decoded the us-in entry properly.)

Probably pj_init should be changed to use the factor field instead.

Alternatively pj_init should look for a "/" anywhere in the field and
decode the numerator and denominator as separate doubles.  This would
be needed if ratios are ever to be entered directly by the user (this
is the strategy used by GeographicLib).  And then, of course, the
functionality should be provided by a separate utility function.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bletch, pj_init also decodes the to_meters field of pj_unit, but only
handles plain numbers or 1/nnn, but not 1./nnn or mmm/nnn.  (So the
original code would have not decoded the us-in entry properly.)

Probably pj_init should be changed to use the factor field instead.

Alternatively pj_init should look for a "/" anywhere in the field and
decode the numerator and denominator as separate doubles.  This would
be needed if ratios are ever to be entered directly by the user (this
is the strategy used by GeographicLib).  And then, of course, the
functionality should be provided by a separate utility function.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix #1074.  Fix unit conversion factors for geod.</title>
<updated>2018-07-11T13:49:22+00:00</updated>
<author>
<name>Charles Karney</name>
<email>charles@karney.com</email>
</author>
<published>2018-07-11T13:49:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=3e03508e043123dbdc3ebb00ce6c67f12c8f8c47'/>
<id>3e03508e043123dbdc3ebb00ce6c67f12c8f8c47</id>
<content type='text'>
Previously, unit conversion using atof(unit_list[i].to_meter) which
gives the wrong answer with, e.g., "1/10".  Now it directly uses
unit_list[i].factor (e.g., 0.1).

Also fix all the conversion factors for the US Surveyor units so that
they are the closest doubles.  E.g., the conversion factors for US
feet are

        factor              rel error
    old 0.304800609601219   6e-16
        12/39.37            1e-16  
    now 1200/3937.0         5e-17

Maybe someone should check the Indian units (but it's possible that
India and Pakistan have different standards).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, unit conversion using atof(unit_list[i].to_meter) which
gives the wrong answer with, e.g., "1/10".  Now it directly uses
unit_list[i].factor (e.g., 0.1).

Also fix all the conversion factors for the US Surveyor units so that
they are the closest doubles.  E.g., the conversion factors for US
feet are

        factor              rel error
    old 0.304800609601219   6e-16
        12/39.37            1e-16  
    now 1200/3937.0         5e-17

Maybe someone should check the Indian units (but it's possible that
India and Pakistan have different standards).
</pre>
</div>
</content>
</entry>
<entry>
<title>IWYU: Partial PJ_natearth.c..rtodms.c</title>
<updated>2018-05-15T20:42:20+00:00</updated>
<author>
<name>Kurt Schwehr</name>
<email>schwehr@google.com</email>
</author>
<published>2018-05-15T20:42:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=1e8824517900d37232468b9e3d7f3724e7ffa786'/>
<id>1e8824517900d37232468b9e3d7f3724e7ffa786</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove angle brackets for proj headers (#849)</title>
<updated>2018-03-11T12:17:07+00:00</updated>
<author>
<name>Thomas Knudsen</name>
<email>busstoptaktik@users.noreply.github.com</email>
</author>
<published>2018-03-11T12:17:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=ab87b8ef0af7ef888b7d810db610ead6eb784d71'/>
<id>ab87b8ef0af7ef888b7d810db610ead6eb784d71</id>
<content type='text'>
* Avoid using angle brackets for PROJ headers.

Switching from #include &lt;proj.h&gt; to #include "proj.h",
and correspondingly for projects.h and proj_api.h,
reduces the risk of accidentally picking up a system
installed older version of the header while building
a new version of PROJ.

* Also handle geodesic.h
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Avoid using angle brackets for PROJ headers.

Switching from #include &lt;proj.h&gt; to #include "proj.h",
and correspondingly for projects.h and proj_api.h,
reduces the risk of accidentally picking up a system
installed older version of the header while building
a new version of PROJ.

* Also handle geodesic.h
</pre>
</div>
</content>
</entry>
<entry>
<title>Declare non-local variables as const where possible</title>
<updated>2017-12-17T22:34:40+00:00</updated>
<author>
<name>Aaron Puchert</name>
<email>aaron.puchert@sap.com</email>
</author>
<published>2017-11-17T16:46:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=a07501a165e6f2521c9aa13fa63fab33cf67d876'/>
<id>a07501a165e6f2521c9aa13fa63fab33cf67d876</id>
<content type='text'>
Having non-const variables of static lifetime or even global scope is
usually a bad idea. These variables are inherently constants, and this
should be enforced.

This required marking some functions as not modifying input parameters
and marking some pointers as pointers to const.

One advantage is that the compiler usually puts const static variables
in a read-only code segment, so they can't be modified physically.
This can be verified with `nm` (on POSIX systems).

To avoid changes to the public API, functions returning non-const
pointers to data tables were left intact, but the returned data may not
be modified. Internally we prefer using the proj_list_* functions over
the pj_get_*_ref functions, because the former return const pointers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Having non-const variables of static lifetime or even global scope is
usually a bad idea. These variables are inherently constants, and this
should be enforced.

This required marking some functions as not modifying input parameters
and marking some pointers as pointers to const.

One advantage is that the compiler usually puts const static variables
in a read-only code segment, so they can't be modified physically.
This can be verified with `nm` (on POSIX systems).

To avoid changes to the public API, functions returning non-const
pointers to data tables were left intact, but the returned data may not
be modified. Internally we prefer using the proj_list_* functions over
the pj_get_*_ref functions, because the former return const pointers.
</pre>
</div>
</content>
</entry>
<entry>
<title>Unit conversion pseudo-projection.</title>
<updated>2017-05-19T11:03:41+00:00</updated>
<author>
<name>Kristian Evers</name>
<email>kristianevers@gmail.com</email>
</author>
<published>2017-05-19T11:03:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.otimperi.dev/PROJ/commit/?id=2851ac9f7971f5a2c528d58338da42f71aec31cc'/>
<id>2851ac9f7971f5a2c528d58338da42f71aec31cc</id>
<content type='text'>
A pseudo-projection that can be used to convert units of input and
output data. Primarily useful in pipelines.

Unit conversion is performed by means of a pivot unit. The pivot unit
for distance units are the meter and for time we use the modified julian
date. A time unit conversion is performed like

    Unit A -&gt; Modified Julian date -&gt; Unit B

distance units are converted in the same manner, with meter being the
central unit.

The modified Julian date is chosen as the pivout unit since it has a
fairly high precision, goes sufficiently long backwards in time, has no
danger of hitting the upper limit in the near future and it is a fairly
common time unit in astronomy and geodesy. Note that we are using the
Julian date and not day. The difference being that the latter is defined
as an integer and is thus limited to days in resolution. This approach
has been extended wherever it makes sense, e.g. the GPS week unit also
has a fractional part that makes it possible to determine the day, hour
and minute of an observation.

In- and output units are controlled with the parameters

    +xy_in, +xy_out, +z_in, +z_out, +t_in and +t_out

where xy denotes horizontal units, z vertical units and t time units.

Distance units are converted similar to what is already in use in PROJ.4.
To ease usage of the already defined conversion factors a new column
with the factors defined as doubles has been added to the pj_units array.
This simplifies the code significantly, since parsing the defined strings
can be avoided.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A pseudo-projection that can be used to convert units of input and
output data. Primarily useful in pipelines.

Unit conversion is performed by means of a pivot unit. The pivot unit
for distance units are the meter and for time we use the modified julian
date. A time unit conversion is performed like

    Unit A -&gt; Modified Julian date -&gt; Unit B

distance units are converted in the same manner, with meter being the
central unit.

The modified Julian date is chosen as the pivout unit since it has a
fairly high precision, goes sufficiently long backwards in time, has no
danger of hitting the upper limit in the near future and it is a fairly
common time unit in astronomy and geodesy. Note that we are using the
Julian date and not day. The difference being that the latter is defined
as an integer and is thus limited to days in resolution. This approach
has been extended wherever it makes sense, e.g. the GPS week unit also
has a fractional part that makes it possible to determine the day, hour
and minute of an observation.

In- and output units are controlled with the parameters

    +xy_in, +xy_out, +z_in, +z_out, +t_in and +t_out

where xy denotes horizontal units, z vertical units and t time units.

Distance units are converted similar to what is already in use in PROJ.4.
To ease usage of the already defined conversion factors a new column
with the factors defined as doubles has been added to the pj_units array.
This simplifies the code significantly, since parsing the defined strings
can be avoided.</pre>
</div>
</content>
</entry>
</feed>
