{"id":6627,"date":"2017-09-20T14:36:21","date_gmt":"2017-09-20T13:36:21","guid":{"rendered":"https:\/\/www.geomatys.com\/?p=6627"},"modified":"2026-02-04T11:25:43","modified_gmt":"2026-02-04T10:25:43","slug":"proj-4-versus-apache-sis-an-accuracy-comparison","status":"publish","type":"post","link":"https:\/\/www.geomatys.com\/en\/2017\/09\/20\/proj-4-versus-apache-sis-an-accuracy-comparison\/","title":{"rendered":"Proj.4 versus Apache SIS: an accuracy comparison"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6627\" class=\"elementor elementor-6627\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-59e7f256 elementor-section-full_width elementor-section-height-default elementor-section-height-default exad-glass-effect-no wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no exad-sticky-section-no\" data-eae-slider=\"80423\" data-id=\"59e7f256\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3a819ec5 exad-glass-effect-no exad-sticky-section-no\" data-eae-slider=\"50656\" data-id=\"3a819ec5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6e3e7041 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-shortcode\" data-id=\"6e3e7041\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6348\" class=\"elementor elementor-6348\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-ed073a7 elementor-section-full_width elementor-section-height-default elementor-section-height-default exad-glass-effect-no wpr-particle-no wpr-jarallax-no wpr-parallax-no exad-sticky-section-no\" data-eae-slider=\"91060\" data-id=\"ed073a7\" data-element_type=\"section\" data-e-type=\"section\" id=\"header\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-7ab1d90 exad-glass-effect-no exad-sticky-section-no\" data-eae-slider=\"67446\" data-id=\"7ab1d90\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a2d436c exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-image\" data-id=\"a2d436c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/geomatys.com\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"768\" height=\"148\" src=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?fit=768%2C148&amp;ssl=1\" class=\"attachment-medium_large size-medium_large wp-image-3137\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?w=982&amp;ssl=1 982w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?resize=300%2C58&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?resize=768%2C148&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?w=188&amp;ssl=1 188w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-66 elementor-top-column elementor-element elementor-element-53d36e8 exad-glass-effect-no exad-sticky-section-no\" data-eae-slider=\"44313\" data-id=\"53d36e8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-49481ed wpr-pointer-none wpr-nav-menu-bp-mobile wpr-main-menu-align-left wpr-main-menu-align--tablet_extraleft wpr-main-menu-align--tabletleft wpr-main-menu-align--mobileleft wpr-sub-icon-caret-down wpr-sub-menu-fx-fade wpr-mobile-menu-display-dropdown wpr-mobile-menu-full-width wpr-mobile-toggle-v1 wpr-sub-divider-yes wpr-mobile-divider-yes exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-wpr-mega-menu\" data-id=\"49481ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;menu_layout&quot;:&quot;horizontal&quot;}\" data-widget_type=\"wpr-mega-menu.default\">\n\t\t\t\t\t<nav class=\"wpr-nav-menu-container wpr-mega-menu-container wpr-nav-menu-horizontal\" data-trigger=\"hover\"><ul id=\"menu-1-49481ed\" class=\"wpr-nav-menu wpr-mega-menu\"><li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-7251\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-logicielles\/\" class=\"wpr-menu-item wpr-pointer-item\"><span>Solutions Logicielles<\/span><i class=\"wpr-sub-icon fas\" aria-hidden=\"true\"><\/i><\/a>\n<ul  class=\"sub-menu wpr-sub-menu\">\n\t<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-8212\"><a target=\"_blank\" href=\"http:\/\/www.examind.com?utm_source=geomatys\" class=\"wpr-sub-menu-item\"><span>Suite Examind<\/span><\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7250\"><a href=\"https:\/\/www.geomatys.com\/en\/apache-sis\/\" class=\"wpr-sub-menu-item\"><span>Apache-SIS<\/span><\/a><\/ul>\n<\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-7253\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-metier\/\" class=\"wpr-menu-item wpr-pointer-item\"><span>Solutions m\u00e9tier<\/span><i class=\"wpr-sub-icon fas\" aria-hidden=\"true\"><\/i><\/a>\n<ul  class=\"sub-menu wpr-sub-menu\">\n\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-9571\"><a href=\"https:\/\/www.geomatys.com\/en\/vigiearth\/\" class=\"wpr-sub-menu-item\"><span>VigiEarth<\/span><\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7254\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-metier\/aqualit\/\" class=\"wpr-sub-menu-item\"><span>AQUALIT<\/span><\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7830\"><a href=\"https:\/\/www.geomatys.com\/en\/shoreint\/\" class=\"wpr-sub-menu-item\"><span>ShoreInt &#8211; OPAT<\/span><\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7256\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-metier\/epiwise\/\" class=\"wpr-sub-menu-item\"><span>EpiWise<\/span><\/a><\/ul>\n<\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7259\"><a href=\"https:\/\/www.geomatys.com\/en\/qui-sommes-nous\/\" class=\"wpr-menu-item wpr-pointer-item\"><span>Qui sommes nous ?<\/span><\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-8317\"><a href=\"https:\/\/www.geomatys.com\/en\/rse\/\" class=\"wpr-menu-item wpr-pointer-item\"><span>RSE<\/span><\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7258\"><a href=\"https:\/\/www.geomatys.com\/en\/contact\/\" class=\"wpr-menu-item wpr-pointer-item\"><span>Contact<\/span><\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-8286\"><a href=\"https:\/\/www.geomatys.com\/en\/blog\/\" class=\"wpr-menu-item wpr-pointer-item\"><span>Blog<\/span><\/a><\/li>\n<li class=\"trp-language-switcher-container menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-8210\"><a href=\"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/posts\/6627#TRPLINKPROCESSED\" class=\"wpr-menu-item wpr-pointer-item\"><span><span data-no-translation><img data-recalc-dims=\"1\" decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/fr_FR.png?resize=18%2C12&#038;ssl=1\" width=\"18\" height=\"12\" alt=\"fr_FR\" title=\"French\"><span class=\"trp-ls-language-name\">FR<\/span><\/span><\/span><\/a><\/li>\n<\/ul><\/nav><nav class=\"wpr-mobile-nav-menu-container\"><div class=\"wpr-mobile-toggle-wrap\"><div class=\"wpr-mobile-toggle\"><span class=\"wpr-mobile-toggle-line\"><\/span><span class=\"wpr-mobile-toggle-line\"><\/span><span class=\"wpr-mobile-toggle-line\"><\/span><\/div><\/div><div class=\"wpr-mobile-mega-menu-wrap \" toggle-backface=\"\"><ul id=\"mobile-menu-2-49481ed\" class=\"wpr-mobile-nav-menu wpr-mobile-mega-menu\"><li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-7251\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-logicielles\/\" class=\"wpr-mobile-menu-item\">Solutions Logicielles<i class=\"wpr-mobile-sub-icon\"><\/i><\/a>\n<ul  class=\"sub-menu wpr-mobile-sub-menu\">\n\t<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-8212\"><a target=\"_blank\" href=\"http:\/\/www.examind.com?utm_source=geomatys\" class=\"wpr-mobile-sub-menu-item\">Suite Examind<\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7250\"><a href=\"https:\/\/www.geomatys.com\/en\/apache-sis\/\" class=\"wpr-mobile-sub-menu-item\">Apache-SIS<\/a><\/ul>\n<\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-7253\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-metier\/\" class=\"wpr-mobile-menu-item\">Solutions m\u00e9tier<i class=\"wpr-mobile-sub-icon\"><\/i><\/a>\n<ul  class=\"sub-menu wpr-mobile-sub-menu\">\n\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-9571\"><a href=\"https:\/\/www.geomatys.com\/en\/vigiearth\/\" class=\"wpr-mobile-sub-menu-item\">VigiEarth<\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7254\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-metier\/aqualit\/\" class=\"wpr-mobile-sub-menu-item\">AQUALIT<\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7830\"><a href=\"https:\/\/www.geomatys.com\/en\/shoreint\/\" class=\"wpr-mobile-sub-menu-item\">ShoreInt &#8211; OPAT<\/a>\t<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7256\"><a href=\"https:\/\/www.geomatys.com\/en\/solutions-metier\/epiwise\/\" class=\"wpr-mobile-sub-menu-item\">EpiWise<\/a><\/ul>\n<\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7259\"><a href=\"https:\/\/www.geomatys.com\/en\/qui-sommes-nous\/\" class=\"wpr-mobile-menu-item\">Qui sommes nous ?<\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-8317\"><a href=\"https:\/\/www.geomatys.com\/en\/rse\/\" class=\"wpr-mobile-menu-item\">RSE<\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-7258\"><a href=\"https:\/\/www.geomatys.com\/en\/contact\/\" class=\"wpr-mobile-menu-item\">Contact<\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-8286\"><a href=\"https:\/\/www.geomatys.com\/en\/blog\/\" class=\"wpr-mobile-menu-item\">Blog<\/a><\/li>\n<li class=\"trp-language-switcher-container menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-8210\"><a href=\"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/posts\/6627#TRPLINKPROCESSED\" class=\"wpr-mobile-menu-item\"><span data-no-translation><img data-recalc-dims=\"1\" decoding=\"async\" class=\"trp-flag-image\" src=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/images\/flags\/fr_FR.png?resize=18%2C12&#038;ssl=1\" width=\"18\" height=\"12\" alt=\"fr_FR\" title=\"French\"><span class=\"trp-ls-language-name\">FR<\/span><\/span><\/a><\/li>\n<\/ul><\/div><\/nav>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-3580bd7 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"89977\" data-id=\"3580bd7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-542f4bd exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"542f4bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Proj.4 versus Apache SIS: an accuracy comparison<\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-0ee1885 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"9016\" data-id=\"0ee1885\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-45b30fe wpr-post-info-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-wpr-post-info\" data-id=\"45b30fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-post-info.default\">\n\t\t\t\t\t<ul class=\"wpr-post-info wpr-post-info-horizontal\"><li class=\"wpr-post-info-date\"><span>20\/09\/2017<\/span><\/li><li class=\"wpr-post-info-author\"><span>Martin Desruisseaux<\/span><\/li><\/ul>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-d613c95 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"20633\" data-id=\"d613c95\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d320cb8 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"d320cb8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>In August 17<sup>th<\/sup> 2017, we presented an introduction to Apache SIS in the Free and Open Source Software for Geospatial (FOSS4G) conference. A discussion about accuracy were planed, but skipped because of lack of time. The results that we intended to show are below.<\/p><p>Disclaimer: the author of this blog is an Apache SIS contributor.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-587168e e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"17093\" data-id=\"587168e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1cf9bea exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"1cf9bea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Summary<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f49042f exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"f49042f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The accuracy of two map projection libraries were compared:<\/p><ul><li>Proj.4, a library in the C language.<\/li><li>Apache Spatial Information System (SIS), a library in the Java language.<\/li><\/ul><p>The benchmark code was written in Java. The code measured both performance and accuracy. Those two measurements were done together in order to ensure that performance comparisons were applied on equivalent coordinate operations. Results of performance comparisons were presented in a <a href=\"http:\/\/www.geomatys.com\/fr\/2017\/08\/28\/proj-4-versus-apache-sis-a-performance-comparison-2\/\">previous blog post<\/a>. Present blog post is about the accuracy part.<\/p><p>Tests done for this blog post expand on the <a href=\"http:\/\/www.iogp.org\/Geomatics\/#gigs\">Geospatial Integrity of Geoscience Software<\/a> (GIGS) tests procedure. We require an accuracy of one centimetre, unless the coordinate operation is documented in the EPSG database as having a larger accuracy. In every cases, we require the results after 100 \u201cforward projection \u2013 inverse projection\u201d round trips to drift by less than one meter. However while we used some procedures, we didn\u2019t used GIGS data for this blog. A subset of GIGS tests is executed by the Apache SIS project and a smaller subset is executed in the GeoAPI project for Proj4 and UCAR libraries, but they need to be expanded before further discussion.<\/p><p>The ISO 19111 standard recognizes two broad categories of coordinate operations: <i>conversions<\/i>and <i>transformations<\/i>. Those two categories need to be analyzed separately.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-4026d54 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"90816\" data-id=\"4026d54\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dceb1ba exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"dceb1ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Coordinate conversions<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fb7f1c3 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"fb7f1c3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This category includes map projections. For all tested conversions, Apache SIS and Proj.4 are in close agreement. Both implementations show drifts much smaller than one meter (and almost always smaller than 1 millimetre) after 100 \u201cforward projection \u2013 inverse projection\u201d round trips. Apache SIS has smaller drifts for projections implemented by exact formulas (mostly projections on sphere), presumably because of stricter trigonometric functions in Java compared to C\/C++ and because of Apache SIS aggressive concatenation of linear steps. Proj.4 has smaller drifts (except for <i>Cylindrical Equal Area<\/i> \u2014 <code>\u201ccea\u201d<\/code>) for projections on Earth approximated by series expansions or iterative algorithms, presumably because of more conservative formulas in series expansions and because of iteration stop conditions controlled by smaller tolerance thresholds. However in both libraries the drift still much smaller than the accuracy requested by EPSG.<\/p><p>For map projections on planets having higher eccentricity than Earth (e.g. Jupiter), two behaviors are observed: map projections implemented by iterative algorithms keep a stable accuracy, at the cost of more iterations. But map projections implemented by series expansions have growing errors as the eccentricity increases. For a planet flattened like Jupiter but scaled at Earth size (only for comparison purpose with other projections in this test), the Proj.4 <code>\u201ccea\u201d<\/code> projection has a drift of 9 km after 100 iterations. Apache SIS drift for the same projection is still below a millimetre, because of SIS dual implementation (series expansion completed by iterations when necessary). Such dual implementation is possible for Mercator (<b>not<\/b> transverse) and a few other projections.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-3b21084 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"42959\" data-id=\"3b21084\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-66f9853 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"66f9853\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Coordinate transformations<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4985ab0 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"4985ab0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This category includes datum shifts. Apache SIS and Proj.4 produce the same results when they use the same operation method with the same Bursa-Wolf parameters, but their results can differ by 1 or 2 meters when those two libraries selected different parameter values. The Bursa-Wolf parameters are the same for tested datum shifts from\/to WGS84 except in North America. But the parameters differ for datum shifts between other datums than WGS84, for example <i>Martinique 1938 to RGAF09<\/i>. In all tested cases, Apache SIS uses the Bursa-Wolf parameters as specified by the EPSG geodetic dataset (<i>late-binding<\/i> approach) while the Proj.4 <i>early-binding<\/i> approach puts a 0.9 \u00b1 0.4 meter error in Martinique case, which is about 10 times the expected accuracy. Proj.4 does not give any indication to users about such inaccuracy; currently, only informed users could suspect a problem by inspecting the Proj.4-specific <code>+towgs84<\/code> elements in definition strings and guessing how Proj.4 may use them.<\/p><p>For coordinate transformations in North America, Apache SIS and Proj.4 may agree or disagree depending on the geographic area. The EPSG registry does not provide Bursa-Wolf parameters covering North America as a whole (both USA and Canada). But it provides parameters for smaller areas, for example a particular state. Apache SIS takes the geographic area in account when selecting Bursa-Wolf parameters, while Proj.4 API does not have this option. Proj.4 may use NADCON grids instead, but has no standard way to tell what it actually does. For this reason, while both Proj.4 and Apache SIS can handle NADCON grids, their usages have not been compared yet.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-f76f2ee e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"70300\" data-id=\"f76f2ee\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ab6f5b exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"4ab6f5b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Material and method<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0b181ce exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"0b181ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The comparison has been performed between Proj.4 release 4.9.3 (August 2016) and Apache SIS 0.8-jdk8-SNAPSHOT (August 2017). The environment is Java 1.8.0_144-b01 on MacOS 10.12.6. The comparison program uses the GeoAPI interfaces. GeoAPI 3.0 is an OGC standard which allows to write code once and run it on different implementations. It is similar in this respect to Java DataBase Connectivity (JDBC) interfaces. The \u201c<a href=\"http:\/\/www.geomatys.com\/fr\/2017\/08\/28\/proj-4-versus-apache-sis-a-performance-comparison-2\/\">Proj.4 versus Apache SIS: a performance comparison<\/a>\u201d blog post gives more details about GeoAPI implementations, which Coordinate Reference System (CRS) are used and how operations are instantiated. The table of CRS is repeated here for convenience:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-35dda4b eael-dt-th-align-center eael-table-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-data-table\" data-id=\"35dda4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-data-table.default\">\n\t\t\t\t\t\t\t<div class=\"eael-data-table-wrap\" data-table_id=\"35dda4b\" id=\"eael-data-table-wrapper-35dda4b\" data-custom_responsive=\"false\">\n\t\t\t<table class=\"tablesorter eael-data-table center\" id=\"eael-data-table-35dda4b\">\n\t\t\t    <thead>\n\t\t\t        <tr class=\"table-header\">\n\t\t\t\t\t\t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">SOURCE CRS<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TARGET CRS<\/span><\/th>\n\t\t\t        \t\t\t\t        <\/tr>\n\t\t\t    <\/thead>\n\t\t\t  \t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4053 \u2013 International 1924 Authalic Sphere\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3410 \u2013 NSIDC EASE-Grid Global\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4326 \u2013 WGS 84\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:6933 \u2013 WGS 84 \/ NSIDC EASE-Grid 2.0 Global\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4326 \u2013 WGS 84\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3857 \u2013 WGS 84 \/ Pseudo-Mercator\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4326 \u2013 WGS 84\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3395 \u2013 WGS 84 \/ World Mercator\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4269 \u2013 NAD83\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3978 \u2013 NAD83 \/ Canada Atlas Lambert\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4326 \u2013 WGS 84\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3031 \u2013 WGS 84 \/ Antarctic Polar Stereographic\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4269 \u2013 NAD83\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:5070 \u2013 NAD83 \/ Conus Albers\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3994 \u2013 WGS 84 \/ Mercator 41\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:3395 \u2013 WGS 84 \/ World Mercator\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4301 \u2013 Tokyo\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4612 \u2013 JGD2000\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4277 \u2013 OSGB 1936\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4230 \u2013 ED50\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:4625 \u2013 Martinique 1938\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEPSG:5489 \u2013 RGAF09\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t    <\/tbody>\n\t\t\t<\/table>\n\t\t<\/div>\n\t  \t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1582174 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"1582174\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Tested coordinate operation pairs<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-1e33d73 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"77884\" data-id=\"1e33d73\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-3e8e97c e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"28681\" data-id=\"3e8e97c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-59f746c exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"59f746c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Note that Transverse Mercator projections are not tested yet, for reasons given later. Some statements in the following paragraphs do not apply to Transverse Mercator, Krovak and a few other projection methods.<\/p><p>All forward projections tested in this benchmark use exact formulas. Implementation of those formulas in Proj.4 and Apache SIS are assumed correct; we do not verify the projection results correctness (such verification is the topic of another test suite, based on <a href=\"http:\/\/www.iogp.org\/Geomatics\/#gigs\">Geospatial Integrity of Geoscience Software<\/a> tests). The inverse operations however are often more complex, and most inverse projections have no exact formulas. They use approximations given in two ways:<\/p><ul><li><p><b>By series expansion:<\/b> there is no programmatic loop and the number of terms is hard-coded. Apache SIS and Proj.4 use the same number of terms, as given in Snyder\u2019s book (Map projections \u2013 a working manual) and in EPSG guidance notes.<\/p><\/li><li><p><b>By iterative algorithm:<\/b> a loop is executed until the change between two iterations is below a tolerance threshold. Apache SIS uses a larger tolerance threshold than Proj.4, thus saving a few iterations at the expense of accuracy.<\/p><\/li><\/ul><p>Those approximations produce the same results (in the limit of the accuracy required by EPSG) for Mercator (<b>not<\/b> Transverse), Lambert Conic Conformal, Stereographic, Albers Equal Area and Cylindrical Equal Area projections. Consequently we do not consider whether Apache SIS and Proj.4 use the same approximations. We do not include the Transverse Mercator projection in this analysis because series expansions and iterative algorithms published for that projection are known to produce different results, which leads EPSG to consider them as different map projection methods.<\/p><p>For all comparisons done, we verify that Proj.4 and Apache SIS perform the same coordinate operation (ignoring the approximation algorithms described above) by looking at the Well Known Text 2 (ISO 19162) representation. WKT 2 specification defines a representation not only for Coordinate Reference Systems, but also for Coordinate Operations between two CRS. The CRS WKT tells us what were the inputs and what are the outputs after the fact, but does not tell us what happened between the two. The coordinate operation WKT allows us to inspect what the library actually does. For example in the case of a transformation from EPSG:4269 to EPSG:3978, Apache SIS gives us:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-c17f93b e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"53808\" data-id=\"c17f93b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-74dc27e exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"74dc27e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-74dc27e\" id=\"eael-code-snippet-74dc27e\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                                 <div class=\"line-number\">2<\/div>\n                                 <div class=\"line-number\">3<\/div>\n                                 <div class=\"line-number\">4<\/div>\n                                 <div class=\"line-number\">5<\/div>\n                                 <div class=\"line-number\">6<\/div>\n                                 <div class=\"line-number\">7<\/div>\n                                 <div class=\"line-number\">8<\/div>\n                                 <div class=\"line-number\">9<\/div>\n                                 <div class=\"line-number\">10<\/div>\n                                 <div class=\"line-number\">11<\/div>\n                                 <div class=\"line-number\">12<\/div>\n                                 <div class=\"line-number\">13<\/div>\n                                 <div class=\"line-number\">14<\/div>\n                                 <div class=\"line-number\">15<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>CoordinateOperation[&quot;Canada Atlas Lambert&quot;,\r\n  SourceCRS[\u2026definition omitted for brevity\u2026, Id[&quot;EPSG&quot;, 4269, &quot;9.1&quot;]]],\r\n  TargetCRS[\u2026definition omitted for brevity\u2026, Id[&quot;EPSG&quot;, 3978, &quot;9.1&quot;]]],\r\n  Method[&quot;Lambert Conic Conformal (2SP)&quot;],\r\n    Parameter[&quot;semi_major&quot;, 6378137.0, Unit[&quot;metre&quot;, 1]],\r\n    Parameter[&quot;semi_minor&quot;, 6356752.314140356, Unit[&quot;metre&quot;, 1]],\r\n    Parameter[&quot;Latitude of false origin&quot;, 49.0, Unit[&quot;degree&quot;, 0.017453292519943295]],\r\n    Parameter[&quot;Longitude of false origin&quot;, -95.0, Unit[&quot;degree&quot;, 0.017453292519943295]],\r\n    Parameter[&quot;Latitude of 1st standard parallel&quot;, 49.0, Unit[&quot;degree&quot;, 0.017453292519943295]],\r\n    Parameter[&quot;Latitude of 2nd standard parallel&quot;, 77.0, Unit[&quot;degree&quot;, 0.017453292519943295]],\r\n    Parameter[&quot;Easting at false origin&quot;, 0.0, Unit[&quot;metre&quot;, 1]],\r\n    Parameter[&quot;Northing at false origin&quot;, 0.0, Unit[&quot;metre&quot;, 1]],\r\n    \u2026scope, area and remarks omitted for brevity\u2026\r\n  BBox[40.04, -141.01, 86.46, -47.74],\r\n  Id[&quot;EPSG&quot;, 3977, &quot;9.1&quot;]]<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7175e9d exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"7175e9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Complete WKT 2 output can be obtained on the command-line as below (require Apache SIS 0.7 or later):<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-3bbd8d3 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"45598\" data-id=\"3bbd8d3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa8aca8 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"aa8aca8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-aa8aca8\" id=\"eael-code-snippet-aa8aca8\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>sis transform --sourceCRS EPSG:4269 --targetCRS EPSG:3978 --verbose<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-dd98e6b e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"32712\" data-id=\"dd98e6b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e1afdb4 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"e1afdb4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>For an operation backed by Proj.4, we get the description shown below. Since GDAL\/Proj.4 does not support WKT 2 yet, Apache SIS does part of the work by formatting the <code>CoordinateOperation<\/code>, <code>SourceCRS<\/code> and <code>TargetCRS<\/code> elements itself using the information provided by Proj.4 through the GeoAPI interfaces. But for the <code>Parameter<\/code> elements, SIS simply lists the Proj.4 parameters verbatim without translating them to EPSG parameters (that translation can be seen in the <code>SourceCRS<\/code> and <code>TargetCRS<\/code> elements).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-219b79e e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"45947\" data-id=\"219b79e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8837012 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"8837012\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-8837012\" id=\"eael-code-snippet-8837012\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                                 <div class=\"line-number\">2<\/div>\n                                 <div class=\"line-number\">3<\/div>\n                                 <div class=\"line-number\">4<\/div>\n                                 <div class=\"line-number\">5<\/div>\n                                 <div class=\"line-number\">6<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>CoordinateOperation[&quot;From NAD83 to NAD83 +proj=lcc&quot;,\r\n  SourceCRS[\u2026definition omitted for brevity\u2026],\r\n  TargetCRS[\u2026definition omitted for brevity\u2026],\r\n  Method[&quot;pj_transform&quot;],\r\n    Parameter[&quot;srcdefn&quot;, &quot;+init=EPSG:4269 +proj=longlat +datum=NAD83 +no_defs +ellps=GRS80 +towgs84=0,0,0&quot;],\r\n    Parameter[&quot;dstdefn&quot;, &quot;+init=EPSG:3978 +proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0&quot;]]<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-58c9663 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"48217\" data-id=\"58c9663\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d74231c exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"d74231c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Complete WKT 2 output can be obtained on the command-line as below (require Apache SIS 0.8-SNAPSHOT or later):<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-6489765 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"94847\" data-id=\"6489765\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82751ee exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"82751ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-82751ee\" id=\"eael-code-snippet-82751ee\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>sis transform --sourceCRS Proj4::+init=EPSG:4269 --targetCRS Proj4::+init=EPSG:3978 --verbose<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-facd855 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"facd855\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Equivalence between the Proj.4 and EPSG parameter names is given below for the <code>lcc<\/code> \u2013 <i>Lambert Conic Conformal (2SP)<\/i> projection method. Note that EPSG parameter names vary with projection methods; a more complete mapping <a href=\"http:\/\/sis.apache.org\/tables\/CoordinateOperationMethods.html\">is given here<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-7f3e531 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"64711\" data-id=\"7f3e531\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-001bcf9 eael-dt-th-align-center eael-table-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-data-table\" data-id=\"001bcf9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-data-table.default\">\n\t\t\t\t\t<style>\n\t\t\t@media (max-width: 767px) {\n\t\t\t   #eael-data-table-wrapper-001bcf9.custom-responsive-option-enable .eael-data-table thead {\n                    display: none;\n               }\n               #eael-data-table-wrapper-001bcf9.custom-responsive-option-enable .eael-data-table tbody tr td {\n                    float: none;\n                    clear: left;\n                    width: 100%;\n                    text-align: left;\n                    display: flex;\n                    align-items: center;\n                }\n\t\t\t}\n\t\t\t<\/style>\t\t<div class=\"eael-data-table-wrap custom-responsive-option-enable\" data-table_id=\"001bcf9\" id=\"eael-data-table-wrapper-001bcf9\" data-custom_responsive=\"true\">\n\t\t\t<table class=\"tablesorter eael-data-table center\" id=\"eael-data-table-001bcf9\">\n\t\t\t    <thead>\n\t\t\t        <tr class=\"table-header\">\n\t\t\t\t\t\t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">PROJ.4<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">ESPG NAME<\/span><\/th>\n\t\t\t        \t\t\t\t        <\/tr>\n\t\t\t    <\/thead>\n\t\t\t  \t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tlon_0\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLongitude of false origin\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tlat_o\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLatitude of false origin\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tlat_1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLatitude of 1st standard parallel\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tlat_2\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLatitude of 2nd standard parallel\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tx_0\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tEasting at false origin\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\ty_0\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tNorthing at false origin\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t    <\/tbody>\n\t\t\t<\/table>\n\t\t<\/div>\n\t  \t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-94ededf exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"94ededf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Name mapping for Lambert Conic Conformal (2SP) projection<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-f7b290c e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"42026\" data-id=\"f7b290c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ea3f208 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"ea3f208\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Using those WKT representations and equivalence tables, we verified that all coordinate <i>conversions<\/i> (map projections) tested here use the same parameter values. Coordinate <i>transformations<\/i> however sometime use different values. This will be discussed in the next section.<\/p><p>Since <i>forward<\/i> projections are assumed exact (ignoring rounding errors) in this blog, errors are assumed to occur mostly in <i>inverse<\/i> projections and in the choice of Bursa-Wolf parameters. Those errors are evaluated in two different ways:<\/p><ul><li><p><b>Errors in inverse projections:<\/b> those errors are evaluated by applying forward projections (assumed exact) followed by inverse projections and measuring the distance with original coordinate points.<\/p><\/li><li><p><b>Errors caused by datum shift parameters choice:<\/b> those errors are identified by comparing the Bursa-Wolf parameter values selected by tested libraries against the parameter values given by the EPSG registry. The library in agreement with EPSG is taken as the reference implementation used for estimating the error of the other library.<\/p><\/li><\/ul><p>A related test is to apply 100 \u201cforward operation \u2013 inverse operation\u201d round trips and verifying that all final coordinates are less than 1 metre away from the original coordinates. This is not necessarily equivalent to verifying that coordinates are less than 1 centimetre away after a single \u201cforward projection \u2013 inverse projection\u201d round trip because the drift does not always increase linearly with the number of round trips. Furthermore we require the drift to be less than 1 meter regardless the operation accuracy (it can even be many meters) because the drift test measures internal consistency (or numerical stability), not the absolute operation accuracy.<\/p><p>The source code used for this test and for benchmarking is <a href=\"https:\/\/svn.apache.org\/repos\/asf\/sis\/release-test\/maven\/src\/main\/java\/org\/apache\/sis\/test\/referencing\/CoordinateOperationComparator.java\">available in the Apache SIS project<\/a> as part of a Maven project.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-ecf77fa e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"63196\" data-id=\"ecf77fa\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-74bbfae exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"74bbfae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Results and discussion<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ce03a6 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"9ce03a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>For all coordinate operations, we measured how the drift increases with the number of round-trips. Our data show only two behaviors: either the drift increases linearly (as we would intuitively expect), or either the drift increases asymptomatically, sometime with oscillations around a value. An example is given below for the Albers Equal Area projection:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bfab68d exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-image\" data-id=\"bfab68d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"384\" src=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/11\/projection-drift.png?fit=800%2C384&amp;ssl=1\" class=\"attachment-large size-large wp-image-6635\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/11\/projection-drift.png?w=955&amp;ssl=1 955w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/11\/projection-drift.png?resize=300%2C144&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/11\/projection-drift.png?resize=768%2C368&amp;ssl=1 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-22758e0 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"22758e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Some projections (e.g. Pseudo-Mercator) takes more time to reach a plateau, but in every tested cases the plateau (when it exists) is reached before 50 round trips. Consequently the GIGS recommendation to tests 100 round trips seems more than sufficient; we found no need to test 1000 round trips for instance. In every tested cases, the drift after 100 round trips stay below one meter. Numbers are below:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4df97ad eael-dt-th-align-center eael-table-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-data-table\" data-id=\"4df97ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-data-table.default\">\n\t\t\t\t\t<style>\n\t\t\t@media (max-width: 767px) {\n\t\t\t   #eael-data-table-wrapper-4df97ad.custom-responsive-option-enable .eael-data-table thead {\n                    display: none;\n               }\n               #eael-data-table-wrapper-4df97ad.custom-responsive-option-enable .eael-data-table tbody tr td {\n                    float: none;\n                    clear: left;\n                    width: 100%;\n                    text-align: left;\n                    display: flex;\n                    align-items: center;\n                }\n\t\t\t}\n\t\t\t<\/style>\t\t<div class=\"eael-data-table-wrap custom-responsive-option-enable\" data-table_id=\"4df97ad\" id=\"eael-data-table-wrapper-4df97ad\" data-custom_responsive=\"true\">\n\t\t\t<table class=\"tablesorter eael-data-table center\" id=\"eael-data-table-4df97ad\">\n\t\t\t    <thead>\n\t\t\t        <tr class=\"table-header\">\n\t\t\t\t\t\t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">OPERATION<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">SIS DRIFT (MM)<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">PROJ.4 DRIFT (MM)<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">SIS \/ PROJ.4<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TREND<\/span><\/th>\n\t\t\t        \t\t\t\t        <\/tr>\n\t\t\t    <\/thead>\n\t\t\t  \t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tCylindrical Equal Area (Spherical)\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,71\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tAsymptotic\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tCylindrical Equal Area (Ellipsoidal)\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t64 \u00b1 55\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,00\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tPseudo Mercator\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,59\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tAsymptotic\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tMercator\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t14,64\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLambert Conic Conformal\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t3,53\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tPolar Stereographic\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t15,85\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tAlbers Equal Area\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,37\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tAsymptotic\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tMercator 41\u00b0S \u2192 World Mercator\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t&lt; 1\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,00\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tGeocentric translations\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t418 \u00b1 290\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t418 \u00b1 290\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,00\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tPosition Vector transformation\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t9 \u00b1 6\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t14 \u00b1 6\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,60\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tPosition Vector transformation\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t255 \u00b1 7\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t264 \u00b1 8\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0.97\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tLinear\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t    <\/tbody>\n\t\t\t<\/table>\n\t\t<\/div>\n\t  \t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bec62c4 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"bec62c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Drift after 100 round trips<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-95b2954 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"95b2954\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Apache SIS shows a smaller drift than Proj.4 (SIS \u2215 Proj.4 &lt; 1) for map projections implemented by exact formulas (e.g. projections on a sphere). This may be explained by stricter trigonometric functions in Java compared to C\/C++ (at the expense of performance), or by the more aggressive decomposition of map projections in linear and non-linear components done by Apache SIS (this decomposition reduces a little bit the rounding errors). Proj.4 shows a smaller drift (SIS \u2215 Proj.4 &gt; 1) for map projections implemented by iterative algorithms, maybe because Proj.4 uses smaller tolerance threshold than Apache SIS. But in all cases, the drift is well below EPSG requirement.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-a2cc311 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"62174\" data-id=\"a2cc311\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7f15c8f exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"7f15c8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Comparison of transformation results<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c759f8e exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"c759f8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>For map projections (when no datum shift is involved), Proj.4 and Apache SIS are in agreement within a nanometre. For coordinate transformations (i.e. operations involving a datum shift), Proj.4 and Apache SIS are also in agreement within a nanometre if one of the source or target datum is WGS84, but can disagree by 1 or 2 metres if neither the source and target datum is WGS84. This difference is explained by the architectural choice of the two libraries: Proj.4 is an <i>early-binding<\/i>implementation using WGS84 as a pivot datum (except when using datum shift grid files like NADCON), while Apache SIS is a <i>late-binding<\/i> implementation with no pivot datum. Instead, Apache SIS fetches the datum-shift parameters from the EPSG geodetic dataset for any pair of Coordinate Reference System (CRS) with no requirement to go through the WGS84 datum. This may result in a choice of different Bursa-Wolf parameter values. For example for a transformation from EPSG:4277 to EPSG:4230, Apache SIS gives us:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-3732308 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"77772\" data-id=\"3732308\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-01ec497 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"01ec497\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-01ec497\" id=\"eael-code-snippet-01ec497\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                                 <div class=\"line-number\">2<\/div>\n                                 <div class=\"line-number\">3<\/div>\n                                 <div class=\"line-number\">4<\/div>\n                                 <div class=\"line-number\">5<\/div>\n                                 <div class=\"line-number\">6<\/div>\n                                 <div class=\"line-number\">7<\/div>\n                                 <div class=\"line-number\">8<\/div>\n                                 <div class=\"line-number\">9<\/div>\n                                 <div class=\"line-number\">10<\/div>\n                                 <div class=\"line-number\">11<\/div>\n                                 <div class=\"line-number\">12<\/div>\n                                 <div class=\"line-number\">13<\/div>\n                                 <div class=\"line-number\">14<\/div>\n                                 <div class=\"line-number\">15<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>CoordinateOperation[&quot;OSGB 1936 to ED50 (UKOOA)&quot;,\r\n  SourceCRS[\u2026definition omitted for brevity\u2026, Id[&quot;EPSG&quot;, 4277, &quot;9.1&quot;]]],\r\n  TargetCRS[\u2026definition omitted for brevity\u2026, Id[&quot;EPSG&quot;, 4230, &quot;9.1&quot;]]],\r\n  Method[&quot;Position Vector transformation (geog2D domain)&quot;],\r\n    Parameter[&quot;X-axis translation&quot;, 535.948, Unit[&quot;metre&quot;, 1]],\r\n    Parameter[&quot;Y-axis translation&quot;, -31.357, Unit[&quot;metre&quot;, 1]],\r\n    Parameter[&quot;Z-axis translation&quot;, 665.16, Unit[&quot;metre&quot;, 1]],\r\n    Parameter[&quot;X-axis rotation&quot;, 0.15, Unit[&quot;arc-second&quot;, 4.84813681109536E-6]],\r\n    Parameter[&quot;Y-axis rotation&quot;, 0.247, Unit[&quot;arc-second&quot;, 4.84813681109536E-6]],\r\n    Parameter[&quot;Z-axis rotation&quot;, 0.998, Unit[&quot;arc-second&quot;, 4.84813681109536E-6]],\r\n    Parameter[&quot;Scale difference&quot;, -21.689, Unit[&quot;parts per million&quot;, 1.0E-6]],\r\n  OperationAccuracy[2.0],\r\n    \u2026scope, area and remarks omitted for brevity\u2026\r\n  BBox[49.79, -8.82, 60.94, 1.92],\r\n  Id[&quot;EPSG&quot;, 1315, &quot;9.1&quot;]]<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e46b867 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"e46b867\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>For Proj.4<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2889a64 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"2889a64\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-2889a64\" id=\"eael-code-snippet-2889a64\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                                 <div class=\"line-number\">2<\/div>\n                                 <div class=\"line-number\">3<\/div>\n                                 <div class=\"line-number\">4<\/div>\n                                 <div class=\"line-number\">5<\/div>\n                                 <div class=\"line-number\">6<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>CoordinateOperation[&quot;From OSGB36 to intl&quot;,\r\n  SourceCRS[\u2026definition omitted for brevity\u2026],\r\n  TargetCRS[\u2026definition omitted for brevity\u2026],\r\n  Method[&quot;pj_transform&quot;],\r\n    Parameter[&quot;srcdefn&quot;, &quot;+init=epsg:4277 +over +proj=longlat +datum=OSGB36 +no_defs +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894&quot;],\r\n    Parameter[&quot;dstdefn&quot;, &quot;+init=epsg:4230 +over +proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +no_defs&quot;]]<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8408a09 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"8408a09\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Proj.4 does not tell us which Bursa-Wolf parameter values are effectively used; we assume that Proj.4 uses the parameters listed in <code>srcdefn +towgs84<\/code> element, followed by the inverse of the parameters listed in <code>dstdefn +towgs84<\/code> element. Those parameters are repeated in the two first rows of the table below. Since <code>dstdefn<\/code> parameters have no rotation and no scale difference, this sequence of operations is mathematically equivalent to performing a single operation using <code>srcdefn<\/code> parameters minus <code>dstdefn<\/code> parameters. This difference is given in the \u201cProj.4 presumed\u201d row below. The parameters used by Apache SIS are the ones given in the EPSG geodetic dataset for coordinate operation EPSG:1315, and are given in the last row.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5ee50a6 eael-dt-th-align-center eael-table-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-data-table\" data-id=\"5ee50a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-data-table.default\">\n\t\t\t\t\t<style>\n\t\t\t@media (max-width: 767px) {\n\t\t\t   #eael-data-table-wrapper-5ee50a6.custom-responsive-option-enable .eael-data-table thead {\n                    display: none;\n               }\n               #eael-data-table-wrapper-5ee50a6.custom-responsive-option-enable .eael-data-table tbody tr td {\n                    float: none;\n                    clear: left;\n                    width: 100%;\n                    text-align: left;\n                    display: flex;\n                    align-items: center;\n                }\n\t\t\t}\n\t\t\t<\/style>\t\t<div class=\"eael-data-table-wrap custom-responsive-option-enable\" data-table_id=\"5ee50a6\" id=\"eael-data-table-wrapper-5ee50a6\" data-custom_responsive=\"true\">\n\t\t\t<table class=\"tablesorter eael-data-table center\" id=\"eael-data-table-5ee50a6\">\n\t\t\t    <thead>\n\t\t\t        <tr class=\"table-header\">\n\t\t\t\t\t\t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\"><\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TX<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TY<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TZ<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">RX<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">RY<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">RZ<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">\u0394S<\/span><\/th>\n\t\t\t        \t\t\t\t        <\/tr>\n\t\t\t    <\/thead>\n\t\t\t  \t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tProj.4 srcdefn:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t446.448\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-125.157\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t542.060\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0.1502\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0.2470\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0.8421\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-20.4894\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tProj.4 dstdefn:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-87\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-98\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-121\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tProj.4 presumed:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t533.448\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-27,157\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t663,060\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,1502\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,2470\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,8421\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-20,4894\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tApache SIS:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t535,948\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-31,357\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t665,160\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,1500\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,2470\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0,9980\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-21,6890\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t    <\/tbody>\n\t\t\t<\/table>\n\t\t<\/div>\n\t  \t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9db48cb exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"9db48cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Bursa-Wolf parameters for OSGB 1936 to ED50 transformation<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c52e6b0 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"c52e6b0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We can see that the parameters obtained by <i>early-binding<\/i> approach are \u2013 in this case \u2013 close but not identical to the parameters obtained by <i>late-binding<\/i> approach. The average difference between Proj.4 and Apache SIS for points in the EPSG:1315 domain of validity (given by <code>BBox<\/code>element in above WKT) is 2.5 metres with a standard deviation of 0.6 metre. This is greater than the expected accuracy for EPSG:1315 transformation, which is 2 metres. If this particular case, given that <a href=\"http:\/\/epsg-registry.org\/?display=entity&amp;urn=urn:ogc:def:coordinateOperation:EPSG::1315\">EPSG:1315 is defined in the EPSG geodetic registry<\/a> as \u201cOSGB36 to WGS84 (Petroleum)\u201d (EPSG:1314) minus \u201cED50 to WGS84 (Common Offshore)\u201d (EPSG:1311), one may argue that the choice performed by Proj.4 is as valid. However Proj.4 gives no information about the domain of validity and accuracy of its choice. The user may think that correct transformation has been chosen or centimetric accuracy is achieved when it is not the case.<\/p><p>Another example is the transformation from Martinique 1938 (EPSG:4625) to RGAF09 (EPSG:5489). In this case, different possible methods (Molodensky, Molodensky Abridged and Geocentric Translation) produces slightly different results, and Proj.4 does not tell us which method it uses. Empirical comparisons with Apache SIS suggest that Proj.4 uses the geocentric translations method. The parameter values selected by Proj.4 and Apache SIS are shown below. The Apache SIS parameter values are taken from EPSG:5491 operation:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d7f014 eael-dt-th-align-center eael-table-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-data-table\" data-id=\"7d7f014\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-data-table.default\">\n\t\t\t\t\t<style>\n\t\t\t@media (max-width: 767px) {\n\t\t\t   #eael-data-table-wrapper-7d7f014.custom-responsive-option-enable .eael-data-table thead {\n                    display: none;\n               }\n               #eael-data-table-wrapper-7d7f014.custom-responsive-option-enable .eael-data-table tbody tr td {\n                    float: none;\n                    clear: left;\n                    width: 100%;\n                    text-align: left;\n                    display: flex;\n                    align-items: center;\n                }\n\t\t\t}\n\t\t\t<\/style>\t\t<div class=\"eael-data-table-wrap custom-responsive-option-enable\" data-table_id=\"7d7f014\" id=\"eael-data-table-wrapper-7d7f014\" data-custom_responsive=\"true\">\n\t\t\t<table class=\"tablesorter eael-data-table center\" id=\"eael-data-table-7d7f014\">\n\t\t\t    <thead>\n\t\t\t        <tr class=\"table-header\">\n\t\t\t\t\t\t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\"><\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TX<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TY<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">TZ<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">RX<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">RY<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">RZ<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">\u0394S<\/span><\/th>\n\t\t\t        \t\t\t\t        <\/tr>\n\t\t\t    <\/thead>\n\t\t\t  \t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tProj.4 srcdefn:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t186\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t482\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t151\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tProj.4 dstdefn:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0 \t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0 \t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t0 \t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tProj.4 presumed:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t186\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t482\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t151\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tApache SIS:\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t127,744\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t547,069\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t118,359\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-3,1116\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t4,9509\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t-0,8837\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t14,1012\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t    <\/tbody>\n\t\t\t<\/table>\n\t\t<\/div>\n\t  \t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23db1dd exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"23db1dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Bursa-Wolf parameters for Martinique 1938 to RGAF09 transformation<\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f15f589 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"f15f589\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The average difference between Proj.4 and Apache SIS for points in the EPSG:5491 domain of validity is 0.9 metre with a standard deviation of 0.4 metre. This is greater than the expected accuracy for this transformation, which is 0.1 metre. In this example and contrarily to the \u201cOSGB 1936 to ED50 (UKOOA)\u201d example, the parameter values published by EPSG were determined directly by the national mapping agency without using WGS84 as a proxy. Any indirect transformations arrived through concatenation through WGS84 can only put error into the output. Consequently in this particular example, we can said that Proj.4 has an error of about one meter. This error is not caused by a bug that could be easily fixed, but rather by architectural choice (early-binding approach).<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-9ef5caf e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"82246\" data-id=\"9ef5caf\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c67630 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"7c67630\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Transformations in North America<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-627f736 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"627f736\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Many coordinate operations may exist for the same pair of source and target CRS. For example the EPSG geodetic dataset contains about 85 operations from NAD27 to WGS84, each operation using a different set of parameter values for different state or geographic area. For making a choice, the Apache SIS <code>CRS<\/code> class provides a convenience method:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-81745e5 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-child\" data-eae-slider=\"24965\" data-id=\"81745e5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3d73b10 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-eael-code-snippet\" data-id=\"3d73b10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-code-snippet.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t      <div class=\"eael-code-snippet-wrapper theme-dark view-mode-default\" data-language=\"html\" data-copy-button=\"1\" data-snippet-id=\"eael-code-snippet-3d73b10\" id=\"eael-code-snippet-3d73b10\" >\n      \n         <div class=\"eael-code-snippet-content\">\n                        <div class=\"eael-code-snippet-line-numbers\" aria-hidden=\"true\">\n                                 <div class=\"line-number\">1<\/div>\n                           <\/div>\n                        <pre class=\"eael-code-snippet-code language-html\"><code>CoordinateOperation op = CRS.findOperation(sourceCRS, targetCRS, areaOfInterest);<\/code><\/pre>\n                     <\/div>\n      <\/div>\n      \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-652ea87 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"652ea87\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The <code>areaOfInterest<\/code> option is set to <code>null<\/code> in this test, which default to the widest domain of validity. Note that in the case of NAD27 to WGS84 transformations, the \u201cwidest domain of validity\u201d criterion causes Apache SIS to select a transformation for Canada, not for USA. In order to avoid unfitted transformations, specifying a non-null <code>areaOfInterest<\/code> is recommended. The Proj.4 API does not have such option; maybe Proj.4 uses NADCON grids instead than Bursa-Wolf parameters for better accuracy, but we currently have no easy way to verify what Proj.4 is doing because of lack of WKT support for <code>CoordinateOperation<\/code> objects (Apache SIS compensates this hole for Proj.4 <code>ProjectedCRS<\/code>, but still can\u2019t guess the details of Proj.4 operations). In order to avoid ambiguity, \u201cNAD27 to WGS84\u201d transformations have not been compared in this tests. Their comparisons will need further work.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-85e9143 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"85832\" data-id=\"85e9143\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fd67991 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"fd67991\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Map projections on planetary CRS<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-546f55e exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"546f55e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>For map projections on Earth, both libraries have shown drift smaller than 1 millimetre after 100 round trips. But for map projections on more flattened planets, two behaviors were observed:<\/p><ul><li><p>Map projections implemented by iterative algorithms keep a stable accuracy. Those algorithms compensate higher eccentricities with more iterations. However the calculation do not converge anymore if the eccentricity is too high.<\/p><\/li><li><p>Map projections implemented by hard-coded series expansions have their accuracy degraded, has shown by increasing drift as the planet eccentricity is increased. In general, there is no warning that the accuracy is degraded.<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79513ba exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"79513ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>For some map projections, the two above-cited approaches are available and produce the same results on Earth. This is the case of <i>Lambert Conic Conformal<\/i> for instance, but <b>not<\/b> the case of <i>Transverse Mercator<\/i>. When both algorithms are equivalent, series expansions are often preferred because they are faster than iterative algorithms. But series expansions are also less robust to extra-terrestrial CRS. In this blog post, we verified the effect on a planet flattened like Jupiter but scaled to the size of Earth for easier distance comparisons. The Jupiter inverse flattening factor is about 15.414, compared to 298.26 for Earth. All tested map projections except <i>Cylindrical Equal Area<\/i> have keep a centimetric accuracy for a single round trip, either because they are implemented by iterative methods or because the number of terms in their series expansions is still sufficient for Jupiter flattening factor. But in Proj.4 <code>\"cea\"<\/code> (Cylindrical Equal Area) projection, we observed an average error of 90 metres per round-trip (9 kilometres after 100 round trips), while Apache SIS keep a centrimetric accuracy. Both Proj.4 and Apache SIS uses the same series expansion with the same number of terms, but Apache SIS has <i>dual<\/i> implementation for that projection: if, after completion of series expansion, the accuracy is still insufficient, then Apache SIS continues the calculation with iterative algorithm. Apache SIS implements the same dual approach for Lambert Conic Conformal and a few other projections.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-f4a74a9 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"59472\" data-id=\"f4a74a9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fcae4e0 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-heading\" data-id=\"fcae4e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Conclusion and perspective<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4fc3335 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"4fc3335\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Apache SIS and Proj.4 are in agreement for all coordinate <i>conversions<\/i> (e.g. map projections) tested in this blog on a planet flattened like Earth. But they sometime disagree by 2 meters for coordinate <i>transformations<\/i> (e.g. datum shifts) on Earth and 90 meters for map projections on a Earth-sized planet flattened like Jupiter. In two of the three disagreements, the library providing the correct answer is Apache SIS. In the third disagreement, we may argue that both libraries are not wrong provided that distances between Proj.4 results and Apache SIS results are smaller than the transformation accuracy. But Proj.4 gives no indication about the accuracy of its operations.<\/p><p>The degree of confidence that we can put in a coordinate operation library depends on many factors, some at Proj.4 advantage and others at Apache SIS advantage:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6e0e6b1 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"6e0e6b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><b>Proj.4 advantage:<\/b><\/p><ul><li><p>Long history and large users base, which in theory increases the chances that bugs have been identified and fixed. However Proj.4 included GIGS in its test suite only recently, and as of September 2017 <a href=\"https:\/\/github.com\/OSGeo\/proj.4\/blob\/2edafb2504e3b20da6033e4a396636cfe22942f2\/test\/gigs\/TESTNOTES.md#drastic-tolerance-errors\">is known to produce different results for some GIGS tests<\/a> (this issue has also been observed years ago with Proj.4 wrappers in GeoAPI). Since Proj.4 is used by MapServer, PostGIS, QGIS and since Proj4J and Proj4JS are derived from Proj.4, any potential error in the library may not be immediately visible when using only above-cited software if they all reproduce the same errors.<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d3e7f4c exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"d3e7f4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><b>Apache SIS advantages:<\/b><\/p><ul><li><p>Run subset of GIGS tests since 2011 (indirectly). Apache SIS either passes those tests or have identified <a href=\"http:\/\/www.geoapi.org\/geoapi-conformance\/apidocs\/org\/opengis\/test\/referencing\/gigs\/doc-files\/changes.html\">corrections that need to be applied to GIGS tests<\/a>. However the tests implemented in GeoAPI and Apache SIS are incomplete.<\/p><\/li><li><p>Standard (ISO 19162) and more detailed description of coordinate operations. This capability allows users to verify what the library is actually doing (e.g. to see the effective Bursa-Wolf parameters). This information is often necessary when investigating why data do not appear where they should be.<\/p><\/li><li><p><i>Late-binding<\/i> implementation, which enables better compliance with authoritative definitions (EPSG) for choosing Bursa-Wolf parameters. For some pairs of CRS, the use of WGS84 as a pivotal system in <i>early-binding<\/i> implementations can only introduce errors (e.g. 1 metre in Martinique).<\/p><\/li><li><p>Domain of validity information. This reduce the risk that users apply the wrong transformation for a given pair of CRS (for example using in Canada the NAD27 to WGS84 transformations designed for USA).<\/p><\/li><li><p>Expected accuracy information. This avoid luring the users in thinking that a coordinate operation is accurate up to rounding errors while actually it may have a stochastic 20 metres error.<\/p><\/li><li><p>More robustness to high eccentricities. The is beneficial mostly to planetary CRS, but also improves <i>Cylindrical Equal Area<\/i> inverse projection accuracy as a side-effect.<\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"has_eae_slider elementor-element elementor-element-484fda1 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-eae-slider=\"79847\" data-id=\"484fda1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0cd2c67 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-text-editor\" data-id=\"0cd2c67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>At the time of writing this blog, work is underway for improving Proj.4 with a new API. But I do not know which of above issues would be addressed. Changing the current Proj.4 early-binding approach into a late-binding one would be a significant architectural change. Whether such improvement is needed or not depends on the desired accuracy. Unfortunately, <b>there is nothing in current implementation telling to user if Proj.4 is delivering the accuracy that (s)he need.<\/b> Ideally, this lack of critical information could be fixed by implementing Well Known Text (WKT) version 2 (ISO 19162) in Proj.4. The following points describe a possible path:<\/p><ul><li>Move the WKT parsing and formatting code from GDAL to Proj.4.<\/li><li>Provide WKT 2 support for <code>projPJ<\/code> data structure:<ul><li>Define some WKT 2 keywords as aliases of WKT 1 keywords (e.g. <code>\u201cPROJCRS\u201d<\/code> as alias of <code>\u201cPROJCS\u201d<\/code>).<\/li><li>When a WKT 2 keyword is detected, raise a flag changing the way GDAL\/Pro.4 applies units of measurement. While the WKT 2 standard defined by ISO 19162 is designed for backward compatibility with WKT 1 as defined in OGC 01-009 standard, the way that GDAL\/Proj.4 currently handles units of measurement other than degrees and meters is not conform to that WKT 1 standard. This is unlikely to change for GDAL compatibility reasons, but this error shall not be propagated to WKT 2 parser. This would require GDAL\/Proj.4 to implement a WKT parser working in two different modes depending on which keywords is found in the WKT definition.<\/li><li>Add support for mandatory WKT 2 elements, in particular <code>AXIS<\/code>.<\/li><\/ul><\/li><li>Provide WKT 2 support for <code>pj_transform(projPJ, projPJ, \u2026)<\/code> data structure (needs new Proj.4 API):<ul><li>Include the Bursa-Wolf parameters (or any other parameters) effectively used.<\/li><li>Include operation domain of validity and expected accuracy. Those metadata are better described with late-binding implementations, but an early-binding implementation can still give some idea for example by computing the intersection of the domain of validity of source and target CRS.<\/li><\/ul><\/li><\/ul><p>Since Apache SIS is already there (and beyond), it could be used for inter-operability experiments and validation during Proj.4 developments. The Java Native Interface (JNI) bindings in the <code>sis-gdal<\/code> module should make this process easy.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-5e6e888 elementor-section-full_width elementor-section-height-default elementor-section-height-default exad-glass-effect-no wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no exad-sticky-section-no\" data-eae-slider=\"3224\" data-id=\"5e6e888\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-70b8aaae exad-glass-effect-no exad-sticky-section-no\" data-eae-slider=\"36449\" data-id=\"70b8aaae\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-17cf9dc1 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-shortcode\" data-id=\"17cf9dc1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"5276\" class=\"elementor elementor-5276\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-267b5fb elementor-section-boxed elementor-section-height-default elementor-section-height-default exad-glass-effect-no wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no exad-sticky-section-no\" data-eae-slider=\"38024\" data-id=\"267b5fb\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-8dac029 exad-glass-effect-no exad-sticky-section-no\" data-eae-slider=\"14429\" data-id=\"8dac029\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ff0bb56 hfe-nav-menu__align-center hfe-nav-menu__breakpoint-mobile hfe-submenu-icon-arrow hfe-link-redirect-child exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-navigation-menu\" data-id=\"ff0bb56\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;padding_vertical_menu_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:7,&quot;sizes&quot;:[]},&quot;menu_space_between&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:15,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_menu_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_menu_item_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_menu_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_menu_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_space_between_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_space_between_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;menu_space_between_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;dropdown_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;dropdown_border_radius_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;dropdown_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;dropdown_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;padding_horizontal_dropdown_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_horizontal_dropdown_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:15,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;padding_vertical_dropdown_item_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;distance_from_menu_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_size_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_width_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius_tablet_extra&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;toggle_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"navigation-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"hfe-nav-menu hfe-layout-vertical hfe-nav-menu-layout vertical\" data-layout=\"vertical\">\n\t\t\t\t<div role=\"button\" class=\"hfe-nav-menu__toggle elementor-clickable\" tabindex=\"0\" aria-label=\"Menu Toggle\">\n\t\t\t\t\t<span class=\"screen-reader-text\">Menu<\/span>\n\t\t\t\t\t<div class=\"hfe-nav-menu-icon\">\n\t\t\t\t\t\t<i aria-hidden=\"true\"  class=\"fas fa-align-justify\"><\/i>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<nav class=\"hfe-nav-menu__layout-vertical hfe-nav-menu__submenu-arrow\" data-toggle-icon=\"&lt;i aria-hidden=&quot;true&quot; tabindex=&quot;0&quot; class=&quot;fas fa-align-justify&quot;&gt;&lt;\/i&gt;\" data-close-icon=\"&lt;i aria-hidden=&quot;true&quot; tabindex=&quot;0&quot; class=&quot;far fa-window-close&quot;&gt;&lt;\/i&gt;\" data-full-width=\"yes\">\n\t\t\t\t\t<ul id=\"menu-1-ff0bb56\" class=\"hfe-nav-menu\"><li id=\"menu-item-624\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy parent hfe-creative-menu\"><a href=\"https:\/\/www.geomatys.com\/en\/privacy-policy\/\" class = \"hfe-menu-item\">Privacy Policy<\/a><\/li>\n<li id=\"menu-item-4761\" class=\"menu-item menu-item-type-post_type menu-item-object-page parent hfe-creative-menu\"><a href=\"https:\/\/www.geomatys.com\/en\/mentions-legales\/\" class = \"hfe-menu-item\">Mentions l\u00e9gales<\/a><\/li>\n<li id=\"menu-item-625\" class=\"menu-item menu-item-type-custom menu-item-object-custom parent hfe-creative-menu\"><a href=\"#header\" class = \"hfe-menu-item\">Retour en haut<\/a><\/li>\n<\/ul> \n\t\t\t\t<\/nav>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-8da774f exad-glass-effect-no exad-sticky-section-no\" data-eae-slider=\"77027\" data-id=\"8da774f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-654cb58 exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-image\" data-id=\"654cb58\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/geomatys.com\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"58\" src=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?fit=300%2C58&amp;ssl=1\" class=\"attachment-medium size-medium wp-image-3137\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?w=982&amp;ssl=1 982w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?resize=300%2C58&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?resize=768%2C148&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/01\/logo-geomatys.png?w=188&amp;ssl=1 188w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-22e6314 elementor-shape-rounded elementor-grid-0 e-grid-align-center exad-sticky-section-no exad-glass-effect-no elementor-widget elementor-widget-social-icons\" data-id=\"22e6314\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"social-icons.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-social-icons-wrapper elementor-grid\" role=\"list\">\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-linkedin elementor-repeater-item-69ef169\" href=\"https:\/\/www.linkedin.com\/company\/geomatys\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Linkedin<\/span>\n\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fab fa-linkedin\"><\/i>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-twitter elementor-repeater-item-ae824dc\" href=\"https:\/\/twitter.com\/Geomatys\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Twitter<\/span>\n\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fab fa-twitter\"><\/i>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\" role=\"listitem\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-c0981b6\" href=\"https:\/\/www.youtube.com\/channel\/UCQK9UM2EbzdlKLqnq3ogJBA\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Youtube<\/span>\n\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fab fa-youtube\"><\/i>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Proj.4 versus Apache SIS: an accuracy comparison 20\/09\/2017 Martin Desruisseaux In August 17th 2017, we presented an introduction to Apache SIS in the Free and Open Source Software for Geospatial (FOSS4G) conference. A discussion about accuracy were planed, but skipped because of lack of time. The results that we intended to show are below. Disclaimer: the author of this blog is an Apache SIS contributor. Summary The accuracy of two map projection libraries were compared: Proj.4, a library in the C language. Apache Spatial Information System (SIS), a library in the Java language. The benchmark code was written in Java. The code measured both performance and accuracy. Those two measurements were done together in order to ensure that performance comparisons were applied on equivalent coordinate operations. Results of performance comparisons were presented in a previous blog post. Present blog post is about the accuracy part. Tests done for this blog post expand on the Geospatial Integrity of Geoscience Software (GIGS) tests procedure. We require an accuracy of one centimetre, unless the coordinate operation is documented in the EPSG database as having a larger accuracy. In every cases, we require the results after 100 \u201cforward projection \u2013 inverse projection\u201d round trips to drift by less than one meter. However while we used some procedures, we didn\u2019t used GIGS data for this blog. A subset of GIGS tests is executed by the Apache SIS project and a smaller subset is executed in the GeoAPI project for Proj4 and UCAR libraries, but they need to be expanded before further discussion. The ISO 19111 standard recognizes two broad categories of coordinate operations: conversionsand transformations. Those two categories need to be analyzed separately. Coordinate conversions This category includes map projections. For all tested conversions, Apache SIS and Proj.4 are in close agreement. Both implementations show drifts much smaller than one meter (and almost always smaller than 1 millimetre) after 100 \u201cforward projection \u2013 inverse projection\u201d round trips. Apache SIS has smaller drifts for projections implemented by exact formulas (mostly projections on sphere), presumably because of stricter trigonometric functions in Java compared to C\/C++ and because of Apache SIS aggressive concatenation of linear steps. Proj.4 has smaller drifts (except for Cylindrical Equal Area \u2014 \u201ccea\u201d) for projections on Earth approximated by series expansions or iterative algorithms, presumably because of more conservative formulas in series expansions and because of iteration stop conditions controlled by smaller tolerance thresholds. However in both libraries the drift still much smaller than the accuracy requested by EPSG. For map projections on planets having higher eccentricity than Earth (e.g. Jupiter), two behaviors are observed: map projections implemented by iterative algorithms keep a stable accuracy, at the cost of more iterations. But map projections implemented by series expansions have growing errors as the eccentricity increases. For a planet flattened like Jupiter but scaled at Earth size (only for comparison purpose with other projections in this test), the Proj.4 \u201ccea\u201d projection has a drift of 9 km after 100 iterations. Apache SIS drift for the same projection is still below a millimetre, because of SIS dual implementation (series expansion completed by iterations when necessary). Such dual implementation is possible for Mercator (not transverse) and a few other projections. Coordinate transformations This category includes datum shifts. Apache SIS and Proj.4 produce the same results when they use the same operation method with the same Bursa-Wolf parameters, but their results can differ by 1 or 2 meters when those two libraries selected different parameter values. The Bursa-Wolf parameters are the same for tested datum shifts from\/to WGS84 except in North America. But the parameters differ for datum shifts between other datums than WGS84, for example Martinique 1938 to RGAF09. In all tested cases, Apache SIS uses the Bursa-Wolf parameters as specified by the EPSG geodetic dataset (late-binding approach) while the Proj.4 early-binding approach puts a 0.9 \u00b1 0.4 meter error in Martinique case, which is about 10 times the expected accuracy. Proj.4 does not give any indication to users about such inaccuracy; currently, only informed users could suspect a problem by inspecting the Proj.4-specific +towgs84 elements in definition strings and guessing how Proj.4 may use them. For coordinate transformations in North America, Apache SIS and Proj.4 may agree or disagree depending on the geographic area. The EPSG registry does not provide Bursa-Wolf parameters covering North America as a whole (both USA and Canada). But it provides parameters for smaller areas, for example a particular state. Apache SIS takes the geographic area in account when selecting Bursa-Wolf parameters, while Proj.4 API does not have this option. Proj.4 may use NADCON grids instead, but has no standard way to tell what it actually does. For this reason, while both Proj.4 and Apache SIS can handle NADCON grids, their usages have not been compared yet. Material and method The comparison has been performed between Proj.4 release 4.9.3 (August 2016) and Apache SIS 0.8-jdk8-SNAPSHOT (August 2017). The environment is Java 1.8.0_144-b01 on MacOS 10.12.6. The comparison program uses the GeoAPI interfaces. GeoAPI 3.0 is an OGC standard which allows to write code once and run it on different implementations. It is similar in this respect to Java DataBase Connectivity (JDBC) interfaces. The \u201cProj.4 versus Apache SIS: a performance comparison\u201d blog post gives more details about GeoAPI implementations, which Coordinate Reference System (CRS) are used and how operations are instantiated. The table of CRS is repeated here for convenience: SOURCE CRS TARGET CRS EPSG:4053 \u2013 International 1924 Authalic Sphere EPSG:3410 \u2013 NSIDC EASE-Grid Global EPSG:4326 \u2013 WGS 84 EPSG:6933 \u2013 WGS 84 \/ NSIDC EASE-Grid 2.0 Global EPSG:4326 \u2013 WGS 84 EPSG:3857 \u2013 WGS 84 \/ Pseudo-Mercator EPSG:4326 \u2013 WGS 84 EPSG:3395 \u2013 WGS 84 \/ World Mercator EPSG:4269 \u2013 NAD83 EPSG:3978 \u2013 NAD83 \/ Canada Atlas Lambert EPSG:4326 \u2013 WGS 84 EPSG:3031 \u2013 WGS 84 \/ Antarctic Polar Stereographic EPSG:4269 \u2013 NAD83 EPSG:5070 \u2013 NAD83 \/ Conus Albers EPSG:3994 \u2013 WGS 84 \/ Mercator 41 EPSG:3395 \u2013 WGS 84 \/ World Mercator EPSG:4301 \u2013 Tokyo EPSG:4612 \u2013 JGD2000 EPSG:4277 \u2013<\/p>","protected":false},"author":3,"featured_media":6635,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_umich_oidc_access":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6627","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-actus"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.geomatys.com\/wp-content\/uploads\/2023\/11\/projection-drift.png?fit=955%2C458&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/posts\/6627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/comments?post=6627"}],"version-history":[{"count":15,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/posts\/6627\/revisions"}],"predecessor-version":[{"id":9809,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/posts\/6627\/revisions\/9809"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/media\/6635"}],"wp:attachment":[{"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/media?parent=6627"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/categories?post=6627"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.geomatys.com\/en\/wp-json\/wp\/v2\/tags?post=6627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}