<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">
<p>Hello Søren</p>
<p align="justify">I will let other peoples answer for
maintenance, portability and performance parts. The one area I'm
more familiar with is the conceptual model behind PROJ 6 C++
API. The PROJ 4 model was designed for map projections, not
really for the more general topic of coordinate transformations
(including datum shifts). Even if PROJ 4 was capable to do some
datum shifts, the use of WGS 84 as an universal hub made
impossible to achieve sub-metric precision for some pairs of
source and target Coordinate Reference System (CRS).<br>
</p>
<p align="justify">On the question about whether it is worth or
not, it depends on the desired accuracy. Not everyone needs
centimetric precision. But my opinion is that it is okay to use
approximations provided that we tell users which accuracy (s)he
can expect, so (s)he can decide if it is sufficient for their
needs or not. The PROJ 4 model had no room for this information
and was luring users with a false sense of accuracy. It did not
had neither information for telling user that (s)he is using a
coordinate operation outside its domain of validity. The PROJ 6
model fixes those shortcomings, among other issues.</p>
<p align="justify">The PROJ 6 model is derived from an
international standard, ISO 19111, which has more capabilities
than what is currently implemented. By using this model, PROJ 6
also prepares itself for future evolution on topics like dynamic
datum. It is true that the ISO 19111 model is much more complex
than the PROJ 4 model, but this complexity reflects the
complexity of accurate geodesy on Earth.<br>
</p>
<p> Regards,</p>
<p> Martin</p>
<p><br>
</p>
<p>Le 07/05/2020 à 16:57, Søren Holm a écrit :</p>
</div>
<blockquote type="cite" cite="mid:4647631.x7YV6tmGiP@koontz">
<pre class="moz-quote-pre" wrap="">Hi
Because of some technical reasons we are still using proj 5.1.0 but we are
working on migrating to never versions. During that work to make sure
everything works no matter if it is compiled against 5.1 or 6.x I noticed the
horrors of modern C++ to it's full extend.
PROJ 5.1 (released 2018-05-24) contains around 204 c-files and 2 cpp-files. It
takes 12 seconds to compile on my system. PROJ 6.3.0.1 (released 2019-12-28)
contains 223 cpp-files and 17 c-files and takes 220 seconds to compile on my
system.
I know that PROJ 6.3.0 contains more code (approx x3) and the tests take a
long time to compile because of google-test but subtracting those 20 test-
files (2 seconds each) still leaves 6.3.0 with a compiletime 165 longer that
5.1.0.
It might just be that I am old or something (apparently 39 is old these days),
but it seems to me that taking a working software library and increasing
linecount x3 while increasing compiletime x10 without adding new files is just
crazy.
Is it realy worth it?
Is it easier to maintain?
Do we get better performance (I doubt it)?
How about portability?
</pre>
</blockquote>
<p><br>
</p>
</body>
</html>