<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>