#1 楼
如果您的位移不太大(不到几公里)并且您不在极点,请使用快速而肮脏的估计,y方向上的111111米(111.111公里)为1度(纬度), 111,111 * x方向的cos(纬度)米为1度(经度)。评论
@托马斯:实际上,您可以非常接近两极。我使用1400 m的x和y位移对UTM计算进行了检查(因此总位移为2 km)。结果好到8.6米或更高。最差的纬度(对于这个方向和位移量)为81度:实际向北移动时,近似值实际上会更准确,并且误差会保持在10米以下,直到超过89.6度为止!
– hu
2010-10-27 21:36
顺便说一句,通过知道一些历史记录就很容易记住这些111111的魔幻数字:法国人最初对电表进行了定义,以使10 ^ 7米为从巴黎赤道到北极的子午线距离。因此,两个世纪前的法国测量师能力范围内,10 ^ 7/90 = 111,111.1米等于一个纬度。
– hu
10-10-27在21:38
因此,使用公式,如果我想在y方向上从10.0 N,10.0 E向+ 100m移动,我是否只需加上100/111111?如果沿x方向+ 100m移动,它将是100÷(111,111×(cos 10))?只要确保我做对了。
– Thomas O
10-10-27在21:47
@Thomas是的,是的。请注意,第二个公式应如何按原样扩展视x位移(通过除以小于1的数字),这是因为当您从赤道移向两极时,经度会变小。唯一可能的障碍是确保您和您的软件平台就“ cos”的含义达成共识:最好将cos(10)解释为10度的余弦,而不是10弧度! (如果不是,则10度= 10 * pi / 180弧度说明了简单的转换。)此时,@ haakon_d提供的代码对您来说应该是完全有意义的。
– hu
2010-10-27 21:54
有人试图编辑此答案,用“ km”代替“ meters”。他们可能在欧洲用小数点表示逗号。我遵循美国的约定(我也相信这也是国际出版物的约定),即使用逗号将长数字字符串分成三组和小数点“”。而不是逗号。 (在前面的注释中清楚地显示了此用法。)为避免歧义,我对答案进行了编辑以清楚地显示逗号和点的含义。
– hu
13年2月11日在16:20
#2 楼
就像利德曼在回答中所说的那样,威廉姆斯的航空公式是无价的,要使位移1公里以内的精度保持在10米以内,您可能需要使用更复杂的公式。如果您愿意接受点距大于200m的点超过10m的误差,则可以使用简化的平地计算。我认为对于1公里以内的偏移,误差仍将小于50m。 //Position, decimal degrees
lat = 51.0
lon = 0.0
//Earth’s radius, sphere
R=6378137
//offsets in meters
dn = 100
de = 100
//Coordinate offsets in radians
dLat = dn/R
dLon = de/(R*Cos(Pi*lat/180))
//OffsetPosition, decimal degrees
latO = lat + dLat * 180/Pi
lonO = lon + dLon * 180/Pi
这应该返回:
评论
我只想指出,这与我提供的答案相同,只是您用111,319.5代替了我的每度111,111米的值。在高纬度时,您的值会稍好一些,而在低纬度(0至约40度)时,您的值会稍差。任一值均满足规定的精度要求。
– hu
10-10-27在21:42
+1用于提供代码。请注意,它比您怀疑的要准确(误差通常在2000 m内小于5 m)。
– hu
2010-10-27 21:55
我想知道是否应该在我的回答中加上一句话,即除了R的值外,这与您的解决方案相同,但为简洁起见,省略了它。谈到精度,只要您不对系统增加任何旋转误差,就对。使用在局部投影坐标系中测量的偏移量,旋转误差可能会变得非常大。
– haakon_d
10-10-28在8:33
这是一个很好的观点:我们隐式地假设x位移至少接近真实的东西向,而y位移接近南北。如果不是,则必须在计算它们的经纬度等效值之前将其转换为等效的E-W和N-S位移(不仅仅是“ eastings”和“ northings”)。
– hu
2010年11月2日,21:35
航空公式方程的d距离参数以弧度为单位,例如(距离/地球半径)。
–user1089933
2012年11月15日21:10
#3 楼
我发现航空公式对于这些类型的公式和算法非常有用。对于您的问题,请查看“纬度/经度给定的半径和距离”:此处请注意,如果您想使三角函数的使用率保持在较低水平,则此算法可能对于您的使用而言过于复杂等
评论
谢谢你-看起来很理想。虽然我不知道距离是米还是其他度量单位。
– Thomas O
10-10-27在11:25
#4 楼
首先投影点可能很有意义。您可以编写以下伪代码:falt_coordinate = latlon_to_utm(original_koordinate)
new_flat_coordinate = flat_coordinate + (x,y)
result_coordinate = utm_to_latlon(new_flat_coordinate)
其中(x,y)是所需的偏移量。
需要使用utm,任何在您所在地区有意义的平面坐标系都可以。
您正在使用什么软件?
#5 楼
我在Google Maps上创建了一个简单的自定义地图,该地图说明了公认的答案(1/111111 ==一米)中提到的估算算法。请随时在此处查看和使用它:https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing
#6 楼
应采用Vincenty的直接配方。
评论
欢迎使用GIS SE!作为新用户,请参观。一个好的答案应该是独立的,并包括所有必需的步骤和细节。请编辑您的答案以添加有关如何使用您的建议以及原因的解释。
– Midavalo♦
7月27日1:54
评论
因此,您可以很好地将地球建模为一个球体吗?是的,这很好,因为我期望的偏移量小于1公里。