[PROJ] The state of PROJ C++ 2020

Martin Desruisseaux martin.desruisseaux at geomatys.com
Thu May 7 08:57:10 PDT 2020


Hello Søren

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

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.

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.

     Regards,

         Martin


Le 07/05/2020 à 16:57, Søren Holm a écrit :

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20200507/3e0dc21e/attachment.html>


More information about the PROJ mailing list