我有以下详细信息列表
Latitude and Longitude,
Date/Time
Altitude and Azimuth
我尝试做的是计算我的计算中使用的相对纬度和经度,以便我可以使用Google Maps V3(JavaScript)绘制椭圆
这是可能的,还是应该将我的lat / lng转换为页面像素并按照这种方式进行(但这不是我想要完成任务的方式)
[编辑]
我试图根据单个观察者观察到的高度和方位角来收集纬度和经度坐标,因此我的地图上的一个点我希望在整个白天/时间内可视化太阳的路径。
答案 0 :(得分:2)
更新:与Dave聊天后,我相信以下方法可以准确地将太阳位置投影到地图上。
以下是投影效果的快速草图。它(应该是)3D。我们希望将太阳投射到2D表面上,其中x和y是观察者的偏移量,z是投射太阳的距离:
已知:
我们真正想要的是z(距离)和phi,轴承。 phi是已知的,所以我们需要z。请记住,S是巨大的,所以我们应该将其缩小到较小的数字,以便我们的坐标可以在地图上看到。只要我们保持新的S不变,这应该不重要。现在,找到z:
sin(theta) = z / S, therefore z = S * sin(theta)
一旦我们有距离z和轴承phi,我们可以使用movable-type中的这些方程来计算纬度/经度坐标:
var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 + Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
其中d = distance traveled = our z
和R = earth's radius = 6371000 (meters)
这很简单!现在只需遍历所有太阳位置并在地图上绘制它们。
以下是一些快速结果,使用S = 1000:
Azimuth altitude z
110 5 87
150 20 342
180 70 939
210 20 342
请注意,如果您处理非常大的距离,由于地球建模的困难,这将不完全准确。