Website made with rich jQuery,Ajax & Perl,PHP
ジオステーション
Sponsor
使える関数郡
[最終更新日:2011/01/29]
$(this).corner("left");西暦を元号に変換

「2010/02/17」のような西暦の日付を「平成 22年2月17日」のような日本独自の日付表記「元号」に変換します。
  function gengo($date) {
 	list($y, $m, $d) = split("/", $date);
 	$jst = sprintf("%04d/%02d/%02d", $y, $m, $d);
 	if ($jst >= "1989/01/08") { $gengo = '平成'; $year = $y - 1988; }
 	elseif ($jst >= "1926/12/25") { $gengo = '昭和'; $year = $y - 1925; }
 	elseif ($jst >= "1912/07/30") { $gengo = '大正'; $year = $y - 1911; }
 	elseif ($jst >= "1868/09/08") { $gengo = '明治'; $year = $y - 1867; }
 	return("$gengo $year年$m月$d日");
 }
  
$date = gengo("2010/2/17");
Perlでは次のようになります。
  sub gengo {
 	my($date) = @_
 	my($y, $m, $d) = split(/\//, $date);
 	my $year = 0;
 	$jst = sprintf("%04d/%02d/%02d", $y, $m, $d);
 	if ($jst ge "1989/01/08") { $gengo = '平成'; $year = $y - 1988; }
 	elsif ($jst ge "1926/12/25") { $gengo = '昭和'; $year = $y - 1925; }
 	elsif ($jst ge "1912/07/30") { $gengo = '大正'; $year = $y - 1911; }
 	elsif ($jst ge "1868/09/08") { $gengo = '明治'; $year = $y - 1867; }
 	"$gengo $year年$m月$d日";
 }
  

$(this).corner("left");60進数を10進数に変換

角度や緯度経度、時刻などは60進法ですので、このままでは掛け算、割り算はもちろん、 足し算や引き算も行えません。そこで計算を可能にする10進法に変換するDEGを作成します。
  <?php
 	function deg($val) {
 		$val = "$val";
 		!preg_match("/\./", $val) && $val .= ".";
 		$val .= "0000";
 		preg_match("/^(\d+)\.(\d{2})(\d{2})(\d*)$/", $val, $m);
 		$d = $m[1]; $f = $m[2]; $b = "$m[3].$m[4]";
 		return($d + ($f * 60 + $b) / 3600);
 	}
 ?>
  
浮動小数点を2進数で計算されると誤差を生じますので、あえて数値を文字型にして変換しています。
この関数を使って「33゜28' 01"」を変換してみると
$deg = deg(33.2801);
33.46694444
となります。
上記はPHPの例ですが、Perlでは次のようになります。
  sub deg {
 	local($_) = "$_[0]";
 	!/\./ && ($_ .= ".");
 	$_ .= "0000";
 	/^(\d+)\.(\d{2})(\d{2})(\d*)$/;
 	$d = $1; $f = $2; $b = "$3.$4";
 	($d + ($f * 60 + $b) / 3600);
 }
  
こう見るとPerlの方が断然簡潔でシンプルですね。
それはさておき、この関数は技術的なものだけでなく、残業の計算でも重宝します。 時間単位なら問題ありませんが、タイムカードの「分」を1か月分足し算するのは厄介です。 この関数を使えば時刻をそのままプラスするだけです。
こちらはサンプルです。「33゜28' 01"」など「度分秒」のデータを「33.2801」のような形式で入力してみてください。
変換前:

変換後:


$(this).corner("left");日本測地系から世界測地系

インターネットでは無料で使用可能な地図サービスが数多くありますが、 それらの多くが日本独自の座標系を使用しており、唯一世界座標系を採用しているGoogleマップとの互換性がありません。 Yahooマップの座標をそのままGoogleマップで使用すると南東方向に約450mずれてしまいます。 この距離が全国一律なら簡単に変換できるのですが、厄介なことに東京で450m、北海道で400m、九州で420mとばらばらです。 そこで専用の変換式が必要になりますのでご紹介します。
  function geo_jw($la, $ln) {
 	$lat = $la - $la * 0.00010695 + $ln * 0.000017464 + 0.0046017;
 	$lng = $ln - $la * 0.000046038 - $ln * 0.000083043 + 0.010040;
 	return array($lat, $lng);
 }  
この関数に日本測地系の緯度と経度(度分秒形式)を渡して世界測地系の座標値を得ます。 たとえば、東京タワーの日本測地系、緯度 35度39分19.368秒(35.65538), 経度 139度44分55.539秒(139.74876111)を世界測地系に変換するには、
list($Lat, $Lng) = gio_jw(35.65538,139.74876111);
のように使用します。「60進法の度分秒」で与える場合は、上記10進法変換関数DEGを併用して、
list($Lat, $Lng) = gio_jw(deg(35.3919368),deg(139.4455539));
とします。それではテストしてみましょう。
緯度:
経度:
変換後:


簡単ですが一応Perlでも書いておきましょう。
  sub geo_jw {
 	my($la, $ln) = @_;
 	$lat = $la - $la * 0.00010695 + $ln * 0.000017464 + 0.0046017;
 	$lng = $ln - $la * 0.000046038 - $ln * 0.000083043 + 0.010040;
 	($lat, $lng);
 }  
($Lat, $Lng) = gio_jw(35.3919368, 139.4455539);
Comment
$(this).corner("left");コメントに関するお約束

  1. ご意見、ご希望、ご質問など、何かありましたらご投稿ください。
  2. ご質問に対する回答は、分かる範囲でお答えしますが、お約束は出来ません。
  3. 投稿していただいたコメントはこのページに記載されます。
  4. コメントは各ページごとに独立しています。それぞれのテーマに沿ったコメントをお願いします。
  5. タグはいっさい使用できません。タグもそのまま表示されます。
  6. 印は必須です。ハンドル名でも結構ですのでご記入ください。
  7. パスワードを記入しておけばご自分の記事を削除できます。
  8. 当サイトにふさわしくないと判断した記事は管理者の独断で削除することがあります。
お名前
パスワード
件名

Enquete
このページの情報、記事はお役に立ちましたでしょうか?
はい いいえ どちらとも言えない

※ご意見が有ればどうぞ(公開されません)
更新履歴
10/07/26 Winテーマの変更
10/06/08 まだまだ使えるXP
10/06/02 jQueryテーマ...
10/05/25 Win7は業務に...
10/04/11 携帯位置情報取得
10/03/09 カレンダーの追加
10/03/01 サービス開始
有料サービス
  1. データ変換サービス
    番地まで記載されたテキスト形式の住所データをお持ちの場合、「緯度」、「経度」及び、 「最寄り駅」と座標、「最寄のインター」と座標の情報を追加したCSVデータを作成してお返しします。 座標付ですので簡単にGoogleマップに位置表示することができます。
    【例】
    名称 住所
    東京タワー 東京都港区芝公園4丁目2-8

    名称 住所 緯度 経度 沿線 最寄り駅 緯度 経度 高速名 インター 緯度 経度
    東京タワー 東京都港区芝公園4丁目2-8 35.6585873 139.7454247 都営大江戸線 赤羽橋 35.655007 139.743642 首都高速都心環状線 芝公園 35.6544767 139.745769
    ※住所データは必須です。電話番号では特定できません。

    費用は1件当たり、わずか32円。100件で3,200円、1000件でも32,000円です。
    追加される最寄り駅、最寄のインター共に直線距離で最も近いもの1件です。複数必要な場合はお問合せください。
  2. システム開発
    Googleマップや最寄り駅、最寄のインターを利用したWEBシステムを開発します。
    自社製品が全国どこで購入可能で、どの駅で降りれば1番近いのかなどをユーザにお知らせすることができ、販売促進にも貢献します。 また、ご自分の住所を指定して最も近い店舗を検索したり、距離を指定して範囲内の店舗を検索して地図を表示するシステムの開発もできます。
    もちろん、携帯版も可能です。
    携帯版はGIF形式の静止画ですのでキャリヤや機種を選びません。 ほぼ、全て機種で使用可能なシステムになります。

    携帯電話ですからWEBのようなパフォーマンスは望めませんが、 静止画でも地図の「縮小」、「拡大」をサポートします。
    お見積もりは「お問合せ」から、 ご希望の機能をできるだけ詳しくお書きいただき、お送りください。
  3. 最新のユーザインターフェースの導入
    現在注目を集めているAjaxやJavascriptを使用したハイセンスなインターフェースの導入をお手伝いします。
    jQueryプラグインのオーバーレイを複数使用した最先端のドキュメントの生成が可能になります。 また、オーバーレイやAjaxを使用する事で、無駄なリロードを減らすことができ、パフォーマンスも向上します。
お問合せフォーム
  1. 全てのお問合せはこちらの専用フォームをご使用ください。 もちろん、ご意見/ご希望でも結構です。
  2. システムに存在しない路線や、新たに開通した路線をご存知の場合はお知らせください。
  3. 有料サービスで新たなシステム開発のお見積もりをご希望の場合は、 出来る限りご希望の機能を詳しくお願いします。
  4. は必須項目です。必ずご記入ください。
お名前
フリガナ
Email
Email(確認) ※確認のためもう一度 (コピー禁止)
タイトル お問合せ お見積もり ご意見/ご希望
内容