我正在使用爱荷华州地图服务提供美国的天气雷达图像,就像在这里一样:http://mesonet.agron.iastate.edu/ogc/googlemaps_v3.html("示例"(。
<script>
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(42.5, -95.5),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
var tileNEX = new google.maps.ImageMapType({
getTileUrl: function(tile, zoom) {
return "https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/" + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime();
},
tileSize: new google.maps.Size(256, 256),
opacity:0.60,
name : 'NEXRAD',
isPng: true
});
var goes = new google.maps.ImageMapType({
getTileUrl: function(tile, zoom) {
return "https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/goes-east-vis-1km-900913/" + zoom + "/" + tile.x + "/" + tile.y +".png?"+ (new Date()).getTime();
},
tileSize: new google.maps.Size(256, 256),
opacity:0.60,
name : 'GOES East Vis',
isPng: true
});
map.overlayMapTypes.push(null); // create empty overlay entry
map.overlayMapTypes.setAt("0",goes);
map.overlayMapTypes.push(null); // create empty overlay entry
map.overlayMapTypes.setAt("1",tileNEX);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
这显示了美国大陆最后一张天气雷达图像的拼接版本,效果非常好。现在,我希望能够请求过去24小时的雷达图像,就像这样。
有一些方法可以轻松获取最后50分钟的雷达图像,如下所述:https://mesonet.agron.iastate.edu/ogc/例如使用nexrad-n0q-900913-m40m
(40分钟前(。这里提到了历史雷达数据图像,例如:http://mesonet.agron.iastate.edu/GIS/ridge.phtml但我无法像上面给出的"例子"那样思考如何使用它。
在"示例"中,获取了整个美国的雷达图像,但似乎在所有其他API中,你只能获取特定雷达站的图像。
我应该如何获取瓦片中最后24小时的历史雷达图像数据,例如"示例"中的数据?例如,4小时前的相应雷达图像。
将getTileUrl末尾的时间戳更改为以前的时间戳是无效的。我不知道如何使用WMS(这是唯一的方法吗?(。我解决这个问题的唯一想法是每5分钟将平铺的PNG保存到服务器上,并调用我自己的服务器——但必须有更好的解决方案。
事实证明,可以使用以下url访问以前的雷达图像:
https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/ridge::USCOMP-N0Q-" + formatTimestamp() + "/" + zoom + "/" + tile.x + "/" + tile.y +".png
其中formatTimestamp((是一个时间戳,类似于yyyymmddhhmm'202201201345',其中最后一分钟需要取模5,即5或0。