
緯度,経度,月,日,時,分をもとに太陽の位置を計算します。ある日における,日の出および日の入り時間(日本時間)の計算,日付と時間から太陽の位置を計算することもできます。
注意:この計算は,地形等を考慮していません。日の出,日の入り時間などは,周囲に山地等がない平坦地における,標高0mでの計算結果です。
アウトプットは2種類あります。
1. 太陽の日の出(時間,太陽方位),南中(時間,太陽高度),日没(時間,太陽方位)の計算
2. 指定日時の太陽の位置(高度,方位)
lat: 緯度 (20-50 度)
lon: 経度 (120-150 度)
month: 月
day: 日
hour: 時
minute: 分
http://webmodis.iis.u-tokyo.ac.jp/~tagchan/clanguage/sun_track.php?lat=30&lon=140&month=1&day=1
緯度経度,月,日をパラメータとすると, フォーマットはJSONです。monthは月,dayは日,hourは時,minuteは分です。elevationとdirectionはそれぞれ太陽高度角,方位角です(単位は度)。directionは真南が0度,マイナスになるほど東,プラスが西となります。
suntrackApi({
"date" : {
"month" : "1",
"day" : "1",
"location" : {
"latitude" : "30.000000",
"longitude" : "140.000000"
},
"sunRise" : {
"hour" : "6",
"minute" : "39",
"direction" : "-63.1"
},
"noon" : {
"hour" : "11",
"minute" : "42",
"elevation" : "36.9"
},
"sunSet" : {
"sunSet" : {
"hour" : "16",
"minute" : "45",
"direction" : "63.1"
}
}
});
太陽位置計算プログラムのソースコードは(sun_track.c)こちらにあります。
緯度経度,月,日,時,分をパラメータとすると,太陽の位置を計算します。
フォーマットはJSONです。monthは月,dayは日,hourは時,minuteは分です。elevationとdirectionはそれぞれ太陽高度角,方位角です(単位は度)。directionは真南が0度,マイナスになるほど東,プラスが西となります。
suntrackingApi({
"date" : {
"month" : "1",
"day" : "1",
"hour" : "14",
"minute" : "10"
},
"location" : {
"latitude" : "30.000000",
"longitude" : "140.000000"
},
"sunlocation" : {
"elevation" : "26.3",
"direction" : "37.9"
}
});
太陽位置計算プログラムのソースコードは(sun_track_time.c)こちらにあります。
クリックすると,本日の日の出日の入り時間の計算結果が表示されます。
//<![CDATA[
var map;
var marker;
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GScaleControl());
map.addMapType(G_PHYSICAL_MAP);
map.addControl(new GMenuMapTypeControl(true, false));
map.enableScrollWheelZoom();
map.enableGoogleBar();
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(34.985776660457525, 135.75848579406738), 7, G_PHYSICAL_MAP);
var icon = new GIcon();
icon.image = "http://www.google.com/intl/en_ALL/mapfiles/arrow.png";
icon.shadow = "http://www.google.com/intl/en_ALL/mapfiles/arrowshadow.png";
icon.iconSize = new GSize(39, 34);
icon.shadowSize = new GSize(39, 34);
icon.iconAnchor = new GPoint(10, 34);
GEvent.addListener(map, 'click', function(overlay, point){
getJSON(point.lat(), point.lng());
addMarker(point,icon);
});
}
}
function getJSON(lat, lon) {
date = new Date();
var month = date.getMonth()+1;
var date = date.getDate();
var req_url = "http://webmodis.iis.u-tokyo.ac.jp/~tagchan/clanguage/sun_track.php?lat="+lat+"&lon="+lon+"&month="+month+"&day="+date+"";
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = req_url;
document.getElementsByTagName("head")[0].appendChild(script);
return;
}
function suntrackingApi( obj ){
var mon = obj.date.month;
var day = obj.date.day;
var lat = obj.date.location.latitude;
var lon = obj.date.location.longitude;
var sunr_hour = obj.date.sunRise.hour;
var sunr_minute = obj.date.sunRise.minute;
var sunr_direction = obj.date.sunRise.direction;
var noon_hour = obj.date.noon.hour;
var noon_minute = obj.date.noon.minute;
var noon_elevation = obj.date.noon.elevation;
var suns_hour = obj.date.sunSet.hour;
var suns_minute = obj.date.sunSet.minute;
var suns_direction = obj.date.sunSet.direction;
var html = "Month: "+ mon +"<br>Day: "+ day +"<p>Latitude: "+ lat +"<br>Longitude: "+ lon +"<p>";
html = html+"Sunrise: "+ sunr_hour +":"+ sunr_minute +"<br>Sunrise direction: "+ sunr_direction +"<p>";
html = html+"Noon: "+ noon_hour +":"+ noon_minute +"<br>Noon sun elevation: "+ noon_elevation +"<p>";
html = html+"Sunset: "+ suns_hour +":"+ suns_minute +"<br>Sunset direction: "+ suns_direction +"<p>";
document.getElementById("list").innerHTML = html;
}
function addMarker(point, icon){
map.clearOverlays();
marker = new GMarker(point,icon);
map.addOverlay(marker);
}
//]]>
2007/11/5: α版を公開しました。
2007/12/15: 時・分で太陽位置を計算する機能を追加しました。
Copyright (c) Hitoshi Taguchi 2000-2007 All Rights Reserved.