如何获得知道其经纬度坐标的点的像素坐标x,y?

问题描述

我有什么:

  • 感兴趣区域的卫星图像。
  • 图片大小为 512 像素 x 512 像素。
  • 图像的中心 (256,256) 具有经纬度坐标(假设 center_lon = -100.577580center_lat = 60.312079
  • 图像的缩放级别为 15(此处定义:Openstreetmap Resolution and Scale)。

问题:现在我有一组经纬度坐标为 points = [(lon1,lat1),(lon2,lat2) ...] 的点。如何将这些点投影到 points_xy = [(x1,y1),(x2,y2) ...],以便在地图画布上绘制这些点?

我能想到的一种乏味的方法

  1. 首先找到分辨率(每像素米数):resolution = (earth_radius * 2 * math.pi / 512) * math.cos(center_lat * math.pi / 180) / (2 ** zoom_level) 使用此处给出的公式:Openstreetmap Resolution and Scale
  2. 计算查询点与中心点 (d1x,d1y)...间的物理距离(以米为单位)(如此处所述:How to convert latitude or longitude to meters?)。然后我可以计算点x1 = (256 + d1x) / resolutiony1 = (256 + d1y) / resolution
  3. 的像素坐标

其他想法:

我也可以使用线性插值,但是我们需要知道角点的经纬度坐标。 (如何?)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...