我正在逆向工程运输可视化应用程序.我需要找出数据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
我需要找出纬度和经度x=0, y=0
是什么以及找出这个的公式.
它们有两个数据源,一个比另一个更新.具有最新数据的Feed不包括纬度,经度,但仅包括XY.我试图根据它们更少的电流,更多信息(包括lat,lon)数据馈送来推断0,0是什么,所以我可以简单地将它们(更新的)数据馈送的XY坐标转换为纬度和经度.
如果查看前两行数据,并减去纬度
47.7044 - 47.7741 = -0.06972 degrees
每纬度有60海里,每海里有6076英尺.
-.06972 * 60 * 6076 = 25,415 ft
减去两个'Y'值:
260662 - 286031 = 25,409 ft
事实上,这似乎证明X和Y值以英尺为单位.
例如,如果您取任何Y值,并转换回度数
260622 ft / ( 6076 ft/nm ) / ( 60 nm/degree ) = .71 286031 ft / 6076 / 60 = .78
因此,从纬度(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
随着纬度增加(负值减少),这些X数字会增加,所以我相信你应该增加5.1度,这意味着X基点是关于
-122.3 + 5.1 = 117.2 West longitude for your x=0 point.
这大致是斯波坎WA的位置.
因此,给定X = 1280532,Y = 211374
Lat = 47 + ( 211374 / 6096 / 60 ) = 47.58 Lon = -117.2 - ( 1280532 / ( 6096 * cos(47.58)) / 60 ) = -122.35
这大致相当于给定的数据47.57和-122.29
方差可能是由于不同的投影 - X,Y系统可能是"扁平"投影而不是适用于球形投影的纬度/长度?所以要准确你可能还需要更高级的数学或那个开源库:)
这个问题也可能有用,它包含用于计算大圆距离的代码:
计算两个纬度 - 经度点之间的距离?(Haversine配方)
有许多不同的坐标系.你需要找出lat/lon(例如WGS84等)和x/y的坐标系统(例如某种预测系统).
获得该信息后,您可以使用多种工具进行转换和操作.(免费开源编码库的一个例子)是proj4.
问他们他们正在使用什么坐标系!(或者如果你从某个数据库获得了数据集,请查看数据集的元数据,它应该告诉你.否则我会对它的值持怀疑态度)
这很可能是状态平面坐标系之一.它们用于地球的局部区域(有点像UTM),并且经常用于测量.
您可以使用CORPSCON(或其他GIS程序; 如果你有GIS选项包,ExpertGPS将执行此操作,但它不是免费的.我忘记GPSBabel是否进行转换)在lat/long和任何状态平面坐标系之间进行转换.您还需要知道坐标所在的数据 .WGS84和NAD83非常接近,但NAD27不同.