<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:2072726703;
        mso-list-template-ids:257954624;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:2106728035;
        mso-list-template-ids:-1000177610;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="DA" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;mso-fareast-language:EN-US">Just a few comments regarding early-binding EPSG definitions in PROJ.4. This is indeed a shortcoming . The good news is
 that we are actively working towards changing the situation. With the new version, that will be released soon(-ish), we introduce “transformation pipelines” that lays the foundation for a late-binding implementation in the future. Specifically, &nbsp;the a late-binding
 implementation logic is destined to go into the proj_create_crs_to_crs function in the new API. The discussion about this has been spread out across several GitHub issues on both the PROJ.4 and QGIS pages. Here’s a link to one of the discussions touching on
 the need for the possibility to specify the area for which a given transformation is needed:
<a href="https://github.com/OSGeo/proj.4/issues/559">https://github.com/OSGeo/proj.4/issues/559</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;mso-fareast-language:EN-US">The actual work towards a late-binding implementation will probably be started in the second half of 2018. At least if
 I am going to take lead on it. I have a rough idea how to do it, but haven’t got the time until after summer to actually do it.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;mso-fareast-language:EN-US">/Kristian<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p>&nbsp;</o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:windowtext">Fra:</span></b><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:windowtext"> proj-bounces@lists.maptools.org [mailto:proj-bounces@lists.maptools.org]
<b>På vegne af </b>Martin Desruisseaux<br>
<b>Sendt:</b> 22. januar 2018 10:52<br>
<b>Til:</b> proj@lists.maptools.org<br>
<b>Emne:</b> Re: [Proj] Correction of definition of CRS EPSG 5456 and 5457<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p>&nbsp;</o:p></p>
<div>
<p>Hello Eduardo<o:p></o:p></p>
<p>Le 22/01/2018 à 03:51, Eduardo Rojas Rodríguez a écrit&nbsp;:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p>By having proj LCC 1SP with a scale factor is basically the same as LCC 2SP.<o:p></o:p></p>
</blockquote>
<p>Indeed, EPSG <i>&quot;Lambert Conic Conformal (1SP)&quot;</i> and <i>&quot;Lambert Conic Conformal (2SP)&quot;</i> are basically the same projection with different way to specify parameters. After those parameters have been converted to internal coefficients, both projections
 can be implemented by the same formulas. The same observation applies to some other projections, for example
<i>&quot;Mercator (variant A)&quot;</i>, <i>&quot;Mercator (variant B)&quot;</i> and <i>&quot;Mercator (variant C)&quot;</i>. As a side note, the Mercator projection itself is the limit case of Lambert Conic Conformal projection when the standard parallel is at the equator, and similar
 relationships exists between some other projections.<o:p></o:p></p>
<p><o:p>&nbsp;</o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p>the only thing then is to ask the EPSG for a transformation of EPSG :: 5470 Coordinate Transformation [Ocotepeque 1935 to WGS 84 (1) more presiding using 7 parameters. maybe?<o:p></o:p></p>
</blockquote>
<p>Here we reach a known issue with the way Proj.4 stores its definitions. Proj.4 is what EPSG calls an
<i>&quot;early-binding implementation&quot;</i>, meaning that datum shift parameters (the <tt>
<span style="font-size:10.0pt">&quot;&#43;towgs84&quot;</span></tt> element) are specified together with the Coordinate Reference System (CRS) definitions (the
<tt><span style="font-size:10.0pt">&quot;&#43;lat_0&quot;</span></tt>, <tt><span style="font-size:10.0pt">&quot;&#43;lat_1&quot;</span></tt>,
<tt><span style="font-size:10.0pt">&quot;&#43;k_0&quot;</span></tt>, <i>etc.</i> elements). In the EPSG database, map projection definitions and datum shifts information are two separated tables, for at least two reasons:<o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
Datum shifts are not necessarily between the CRS and WGS84. In some cases (e.g. in Martinique), passing through WGS84 can only introduce errors in the results.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
Many datum shifts may be defined between the same pair of CRS for different area of validity.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
(side note: with ongoing revision of ISO 19111 standard taking in account tectonic plate motions, dissociating the two tables will be yet more important).<o:p></o:p></li></ul>
<p>In your case, the EPSG database gives me 3 coordinate operations from EPSG:5451 to EPSG:4326 (in addition of two operations to NAD27 and to CR05; this illustrates what I said before, that datum shift operations are not necessarily toward WGS84). Among them:<o:p></o:p></p>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2">
EPSG:6891 (looks similar but not identical to what you reported the Proj.4 does), the domain of validity is
<b>&quot;Costa Rica; El Salvador; Guatemala; Honduras; Nicaragua&quot;</b> and the reported accuracy is
<b>14 metres</b>.<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2">
EPSG:5470, the domain of validity is <b>&quot;Costa Rica - onshore&quot;</b> and the reported accuracy is
<b>8 metres</b>.<o:p></o:p></li></ul>
<p>So the datum shifts to choose depends of the desired compromise between accuracy and domain of validity. I think that by default, parameters in Proj.4 CSV files were selected for the datum shift operation which is valid over the widest area. An improvement
 over that would be to change Proj.4 design from <i>&quot;early-binding implementation&quot;</i> to
<i>&quot;late-binding implementation&quot;</i>, when datum shifts operation are fetched from a separated table once Proj.4 know the source and target CRS, the desired domain of validity and the epoch. They were some discussion one or two years ago about replacing the
 Proj.4 CSV file by a full EPSG database on SQLite, in order to prepare Proj.4 for such evolution.<o:p></o:p></p>
<p>&nbsp;&nbsp;&nbsp; Martin<o:p></o:p></p>
<p><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>