【问题标题】:Convert coordinates to corresponding place in table将坐标转换为表格中对应的位置
【发布时间】:2021-12-16 08:41:37
【问题描述】:

我有一张包含西欧地区数据的表格。我想将坐标转换为该表中的值。问题类似于this question,但我不确定如何解决,因为我从未做过类似的事情。

假设我想获取阿姆斯特丹表中的值(纬度:52.35,经度:4.83)。我如何将其转换为表中正确的 x 和 y 值? 我首先尝试了线性插值,但发现由于投影而不起作用。 我知道 proj4js,但我不确定如何为投影定义这些值。

根据文档,我猜我需要做这样的事情:

const firstProjection = "something something";
const secondProjection = "WGS84"; // ?
proj4(firstProjection, secondProjection, [52.35, 4.83]);
// [x?, y?]

我的一些校准值是:

Row (x) Column (y)  Latitude    Longitude
173     157         54.429      2.352    
273     530         53.276      7.694    
245     412         53.640      6.038    
464     545         51.624      7.546    
262     130         53.663      1.903    
226     223         53.939      3.293    
236     563         53.555      8.244    
244     208         53.790      3.058    
248     289         53.710      4.240    
206     361         54.022      5.348    
233     372         53.779      5.472   

【问题讨论】:

    标签: javascript maps coordinates wgs84 proj4js


    【解决方案1】:

    没有将球体表面转换为平面的确切方法,尤其是矩形平面。在this question 的答案中探索了许多近似解决方案。

    如果您正在查看的区域很小,您可以使用 MvG 给出的近似值:

    x = r * longitude * cos(φ0)
    y = r  * latitude
    

    其中cos(φ0) = 纵横比,φ0 是靠近地图中心的纬度。

    我还找到了一个使用 UTM 的解决方案,您可以找到 here。在页面下方,他们提供了底层代码。

    【讨论】:

      【解决方案2】:

      您的“投影”将分两步完成:

      1. 从 WGS84 到某些投影坐标参考系统(最常见的是 Web Mercator GMap 使用 https://en.wikipedia.org/wiki/Web_Mercator_projection)。所以它将是从 Epsg:4326 到 Epsg:3857。
      const projection = proj4("EPSG:4326", "EPSG:3857");
      
      const geographicCoordinates = [52.35, 4.83]; // lat, lon
      const cartographicCoordinates = projection.forward(geographicCoordinates);
      
      
      1. 使用转换将 x 和 y 值从制图坐标投影到屏幕坐标:
      xScreen = (cartographicX - cartographicXMin) / (cartographicXMax - cartographicXMin) * (screenXMax - screenXMin);
      yScreen = (cartographicY - cartographicYMin) / (cartographicYMax - cartographicYMin) * (screenYMax - screenYMin);
      

      要获得制图 X 和 Y 最小值最大值,请使用相同的转换。

      但是,您需要注意,墨卡托投影会无限地扩展区域,使纬度更靠近两极,这意味着如果坐标在北方(例如格陵兰岛),则不得使用此投影。对于这些区域,您需要使用圆锥投影。

      【讨论】:

      • 嗨!感谢您的回答。我得到的结果很接近,但与我拥有的一些校准值不匹配。这个公式是不是不太准确,或者这意味着我有一个扭曲的投影?
      • 这取决于你所说的公式。你能举一些例子来检查吗?您可以尝试 EPSG:23095 或荷兰特定的坐标参考系统。
      • 与 EPSG:4289 (Amersfoort CRS) 一样,它应该为您提供 10m 左右的精度。
      • 我添加了一些我从数据中获得的校准值。稍后将试用 EPSG:4289 (Amersfoort)。地区确实主要是荷兰。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多