将纬度/经度转换为地理配准地图上的相对X / Y坐标

问题描述 投票:3回答:3

在我知道三个角(或任何三个非对齐点)的坐标(lat / lng)的地图上,我有位于地图上的几个点的坐标(lat / lng)。

我想要的是相对于地图的点的相对坐标(相对于左上角的x / y)。

我也对其他转换感兴趣(x / y到lat / lng)。

我的地图非常小(小于10公里x 10公里)我需要使用投影系统还是我可以假设我的表面是完全平坦的并使用线性转换?

编辑:我不知道(我无法知道)我的背景地图使用哪个投影。我只知道3个地理参考点。

解决方案是使用线性转换:

如果我的三个点是A(xA,yA),B(xB,yB),C(xC,yC)和我想要定位X(x,y)的点。

我可以在lat / lng参考中计算ab作为AX = aAB + bAC然后

x = xA + a * (xB-xA) + b * (xC - xA) y = yA + a * (yB-yA) + b * (yC - yA)

但看起来我错过了一些东西?

相关问题:How to map a latitude/longitude to a distorted map?

maps coordinate-systems coordinate-transformation map-projections
3个回答
0
投票

这取决于地图,但线性变换很简单。您还可以使用Kavrayskiy转换。我也发现了反面:Get latitude and longitude from X and Y coordinates。这是一个关于mercantor投影的问题:Convert lat/lon to pixel coordinate?


0
投票

如果您想获得准确的转换,则需要使用国家/地区的本地投影,这些坐标属于。你可以通过查找谷歌地图中的一个坐标(假设整个坐标集不跨越一个巨大的区域)轻松识别出来,这将告诉你坐标在哪个国家/地区。从那里,您可以查找该国家/地区使用的本地投影系统。除非此处的目的是为您自己提供转换算法/实用程序,否则您可以使用一些库来实现所有需要的计算,以从多个投影系统重新投影坐标:

proj4jmpl,这是proj4的部分java端口


0
投票

你是对的,你错过了什么。你的公式(我没有深入研究过)看起来是线性的,因此似乎只适用于仿射变换。地图(通常)不是从(lat,lon)到(x,y)的仿射变换。

如果事情那么简单,你就可以确定变换,即使你知道10x10平方的点(0,0),(10,0)和(5,10)的坐标 - 但你不能,因为x方向可以保存距离或经度或其他东西(当纬度,即y变化时),你不能区分这些情况。您将不得不使用其他信息。

© www.soinside.com 2019 - 2024. All rights reserved.