【问题标题】:Proj4JS - Transformation 2.3.3 vs 2.4.3Proj4JS - 转换 2.3.3 与 2.4.3
【发布时间】:2018-09-21 07:03:04
【问题描述】:

为什么在 Proj4JS 中使用相同代码的 2.4.3 转换坐标完全不同?看看这个小提琴。

如果你交换左边proj4js资源的顺序。您会看到 2.3.3 转换准确,而 2.4.3 转换完全错误。

我还提供了 2 个示例,您可以在此问题中正确使用。

http://jsfiddle.net/8ztfhes0/17/

编辑 - 所以在做更多的研究。我发现这个问题实际上出现在 2.3.16 版本中。到 2.3.15 就可以了。

提交评论 = 2.3.16“增加了更好的 tmerc 投影”

2.4.3 示例

proj4.defs("EPSG:26910","+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");
    var source = new proj4.Proj('EPSG:26910');  
    var dest = new proj4.Proj('EPSG:4326');      
    $("#lat").val(4970142.88145653);
    $("#lng").val(500532.52879695);
    $("#convert").on("click", function(){
        var p = new proj4.Point($("#lng").val(), $("#lat").val() );
        proj4.transform(source, dest, p);
        console.log("X : " +p.x + " \nY : " + p.y);
        alert("X : " +p.x + " \nY : " + p.y);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.3/proj4.js"></script>
    
    Lng : <input type="number" id="lng" />
    Lat : <input type="number" id="lat" />
    <button id="convert">Convert</button>
    

2.3.3 示例

proj4.defs("EPSG:26910","+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");
    var source = new proj4.Proj('EPSG:26910');  
    var dest = new proj4.Proj('EPSG:4326');      
    $("#lat").val(4970142.88145653);
    $("#lng").val(500532.52879695);
    $("#convert").on("click", function(){
        var p = new proj4.Point($("#lng").val(), $("#lat").val() );
        proj4.transform(source, dest, p);
        console.log("X : " +p.x + " \nY : " + p.y);
        alert("X : " +p.x + " \nY : " + p.y);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.3/proj4.js"></script>
    
    Lng : <input type="number" id="lng" />
    Lat : <input type="number" id="lat" />
    <button id="convert">Convert</button>
    

【问题讨论】:

    标签: javascript gis proj4js proj


    【解决方案1】:

    看起来问题在于您使用的是输入参数p,而不是proj4.transform 返回的值。另外,附带说明一下,当前 proj4js 版本(撰写本文时为 2.4.3)的 documentation 表明您可以直接调用 proj4 而不是 proj4.transform

    以下说明了区别:

    proj4.defs("EPSG:26910","+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");
    var source = new proj4.Proj('EPSG:26910');  
    var dest = new proj4.Proj('EPSG:4326');      
    var p = {x: 500532.52879695, y: 4970142.88145653};
    var result = proj4(source, dest, p);
    console.log('Correct:', result);
    console.log('Wrong:', p);
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.3/proj4.js"&gt;&lt;/script&gt;

    (我通过删除所有与 HTML/jQuery 相关的内容稍微简化了示例。)

    【讨论】:

    • 非常感谢 :) -- 哦,是的,我对此很熟悉。我使用 trans 是有原因的。不过没关系。
    • 这告诉我他们删除了第三个参数的更新函数并返回直接值。
    猜你喜欢
    • 2016-06-05
    • 2011-04-30
    • 2021-12-23
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多