rwl*_*wl4 7 gis latitude-longitude
我正在逆向工程运输可视化应用程序.我需要找出数据Feed来源的纬度.具体是XY 0,0是什么.我找到的唯一公式计算两点之间的距离,或轴承/距离的位置.
他们使用XY在非常遗留的应用程序中显示地图.XY处于FEET状态.
我有这些坐标:
47.70446615506108, -122.34469839507263: x=1268314, y=260622
47.774182540800616,-122.3412994737105: x=1269649, y=286031
47.60024792289405, -122.32767331735774: x=1271767, y=222532
47.57012494413499, -122.29129609983679: x=1280532, y=211374
Run Code Online (Sandbox Code Playgroud)
我需要找出纬度和经度x=0, y=0是什么以及找出这个的公式.
它们有两个数据源,一个比另一个更新.具有最新数据的Feed不包括纬度,经度,但仅包括XY.我试图根据它们更少的电流,更多信息(包括lat,lon)数据馈送来推断0,0是什么,所以我可以简单地将它们(更新的)数据馈送的XY坐标转换为纬度和经度.
如果查看前两行数据,并减去纬度
47.7044 - 47.7741 = -0.06972 degrees
Run Code Online (Sandbox Code Playgroud)
每纬度有60海里,每海里有6076英尺.
-.06972 * 60 * 6076 = 25,415 ft
Run Code Online (Sandbox Code Playgroud)
减去两个'Y'值:
260662 - 286031 = 25,409 ft
Run Code Online (Sandbox Code Playgroud)
事实上,这似乎证明X和Y值以英尺为单位.
例如,如果您取任何Y值,并转换回度数
260622 ft / ( 6076 ft/nm ) / ( 60 nm/degree ) = .71
286031 ft / 6076 / 60 = .78
Run Code Online (Sandbox Code Playgroud)
因此,从纬度(47.70和47.77)中减去这些值会使您非常接近47度,这应该是您的y = 0点.
对于经度,赤道60海里,极点0英里.因此,每度的英里数必须乘以纬度的余弦,因此近似(47度)或.68.因此,每度不是6076 nm,而是大约4145 nm.
所以对于X值,
1268314 ft / ( 4145 ft/nm ) / ( 60 nm/degree ) = 5.10 degrees
1269649 ft / 4145 / 60 = 5.10 degrees
Run Code Online (Sandbox Code Playgroud)
随着纬度增加(负值减少),这些X数字会增加,所以我相信你应该增加5.1度,这意味着X基点是关于
-122.3 + 5.1 = 117.2 West longitude for your x=0 point.
Run Code Online (Sandbox Code Playgroud)
这大致是斯波坎WA的位置.
因此,给定X = 1280532,Y = 211374
Lat = 47 + ( 211374 / 6096 / 60 ) = 47.58
Lon = -117.2 - ( 1280532 / ( 6096 * cos(47.58)) / 60 ) = -122.35
Run Code Online (Sandbox Code Playgroud)
这大致相当于给定的数据47.57和-122.29
方差可能是由于不同的投影 - X,Y系统可能是"扁平"投影而不是适用于球形投影的纬度/长度?所以要准确你可能还需要更高级的数学或那个开源库:)
这个问题也可能有用,它包含用于计算大圆距离的代码:
计算两个纬度 - 经度点之间的距离?(Haversine配方)