[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