geolocation - 使用控制点将纬度/经度坐标转换为 X、Y 平面
问题描述
我有一个任意的地图图像,它可能会也可能不会准确地投影到某些标准的地理地图上。不过,可能不是,因为它是艺术家的演绎。考虑这张地图是 0,0 之前像素的 2D 图像。
我想将世界空间中的纬度/经度点映射到这张地图。由于地图不一定是已知或准确的投影,因此我必须提出其他解决方案。我认为在 2D 图像上建立与已知纬度/经度值相关的控制点是第 1 步。至少 3 个,但可能更多,以防需要解决地图图像中的失真问题。
我将寻找什么算法或方程来获取这些控制点,并根据任何给定的纬度/经度输入识别图像上的 X、Y 位置?
我希望它不准确,具体取决于控制点的数量。而且我希望,对于一些更奇怪的图像,必须在某些区域添加许多控制点以使其正确排列。
解决方案
当所描绘的区域很小时(例如,它适合侧面几公里的平方),下面描述了要尝试的一件事。如果您觉得描述过于简洁,我很抱歉,我想保持合理的简短。
这个想法是假设图像处于某个未知的共形投影中,并尝试对其进行近似。当然,如果图像实际上不能以这种方式合理地近似,这当然可能会失败。
给定您的控制点 P[],使用等角投影将它们投影到地图坐标 Q[],并获取它们的图像坐标 R[]。在一米左右内 - 鉴于上述假设 - R[] 可以通过转换 T 从 Q[] 获得,该转换 T 是平移、(各向同性)缩放和旋转。然后,您可以使用 Q[] 和 R[] 找到 T,例如通过最小二乘法。您有一个从控制点地理坐标 P[] 到它们的图像坐标 R[] 的两阶段地图:首先使用所选投影进行投影,然后应用 T。您可以使用此地图的倒数从任意图像坐标到地理坐标坐标。
如果图像大于几公里,您可能无法通过这种方式获得足够的精度。一切都没有丢失。尽管平移、缩放和旋转可能不够,但任何两个保角投影都通过(复杂的)解析图相关联。因此,您可以尝试使用上述控制点来拟合(近似)该地图。合适的近似可能是复多项式或复有理函数。
如果我这样做,我想我会首先在人工数据上进行测试。例如,您可以使用某种投影(不同于上面使用的投影)生成各种尺寸的图像,并查看您在这些图像中拟合已知点的程度。
推荐阅读
- python - 纸浆和 OR-Tools 替代品
- search - 在 wooocmmerece 网站上应用无限滚动未按预期工作
- angular - 有 Promise 的 Jasmine 测试构造函数
- architecture - 架构:微服务、多重需求和共享数据
- phpmyadmin - 白名单客户端 IP 地址,但 CentOS 中 phpMyAdmin 仍然出现 403 禁止错误
- javascript - Traccar Web 界面:计算相对时间的上次更新逻辑在哪里?
- javascript - 如何解析存储在数组中的数据
- javascript - 将数组中的项目相乘并找到数组中所有行的相乘结果的总和
- javascript - 如何从 HTML 表格中获取数据到 DJango
- docker - 如何连接我的 docker 容器(前端)连接到在不同 VM 上运行的容器化数据库