Javascript 将给定观察者位置的太阳路径投影到谷歌地图上
我有以下的详细清单Javascript 将给定观察者位置的太阳路径投影到谷歌地图上,javascript,google-maps,math,coordinates,astronomy,Javascript,Google Maps,Math,Coordinates,Astronomy,我有以下的详细清单 Latitude and Longitude, Date/Time Altitude and Azimuth 我想做的是计算一个相对的纬度和经度,这样我就可以用GoogleMapsV3(JavaScript)绘制一个椭圆形 这是可能的,还是我应该将我的lat/lng转换为页面像素并这样做(但这不是我想要实现任务的方式) [编辑] 我试图根据单个观察者观察到的高度和方位角来收集纬度和经度坐标,因此我想在地图上的一个点上可视化一天/一段时间内太阳的路径。更新:与Dave聊天后,
Latitude and Longitude,
Date/Time
Altitude and Azimuth
我想做的是计算一个相对的纬度和经度,这样我就可以用GoogleMapsV3(JavaScript)绘制一个椭圆形
这是可能的,还是我应该将我的lat/lng转换为页面像素并这样做(但这不是我想要实现任务的方式)
[编辑]
我试图根据单个观察者观察到的高度和方位角来收集纬度和经度坐标,因此我想在地图上的一个点上可视化一天/一段时间内太阳的路径。更新:与Dave聊天后,我相信下面的方法可以在地图上精确地投影太阳的位置 这里有一个投影的快速草图。它应该是3D的。我们希望将太阳投影到2D曲面上,其中x和y是观察者的偏移量,z是到投影太阳的距离: 已知:
- 从地球到太阳的距离,S=1495978700m
- φ(太阳方位角)
- θ(太阳高度)
sin(theta) = z / S, therefore z = S * sin(theta)
一旦我们有了距离z和方位角φ,我们就可以使用这些方程来计算纬度/液化天然气坐标:
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=行驶距离=我们的z
和R=地球半径=6371000(米)
那很容易!现在只需迭代所有太阳位置,并在地图上绘制它们
下面是一些使用S=1000的快速结果:
Azimuth altitude z
110 5 87
150 20 342
180 70 939
210 20 342
请注意,如果您处理的是非常大的距离,由于地球建模的困难,这将不会完全准确。什么是“相对”纬度和经度?相对于观察者。在我当前的纬度和经度周围有点像一个圆弧/圆圈。那么你想在地图上画一个圆圈,围绕列表中的每个坐标?或者在您当前位置附近?在我的地图上的一组坐标(纬度/经度)上显示当前太阳的位置/路径。我试图根据单个观察者观察到的高度和方位收集纬度和经度坐标,所以在我的地图上有一个点我想把太阳在一天/一段时间内的运行轨迹可视化,我想我明白了。我认为你仍然可以使用上述方法。对于每个azim/alt,确定您希望太阳标记显示的距离(对于d),然后确定您的方位角=方位角。谢谢,我现在就开始实现。我会回来报告的,有没有任何文章你可以参考这个计算,以便我可以进一步阅读它。只是我链接的网站。它有大量的资源来做这类事情。我以前也做过类似的事情。令人困惑,但也有可能。祝你好运突然的想法(和duh!瞬间)我没有距离,我只有一个不变的静态点。我错过什么了吗?