public class ToTokyo { long lon,lat; /* public static void main(String[] args){ try{ // 緯度(lat)経度(lon)を文字列で入手 // 例: +35.08.36.05 , +135.48.56.08 String lat = args[0]; String lon = args[1]; ToTokyo con = new ToTokyo(lat,lon); System.out.println("緯度:"+con.getLat()+" 経度:"+con.getLon()); }catch(Exception e){ System.out.println(e.toString()); } }*/ public ToTokyo(String slat,String slon){ // wgs84の文字列を数値化 long w_lat = toMS(slat); long w_lon = toMS(slon); // wgs84からtokyoに変換 lat = w_lat + ((106960*w_lat - 17464*w_lon - 4602000L*360000L)/1000000000); lon = w_lon + ((46047*w_lat + 83049*w_lon - 10041000L*360000L)/1000000000); } public String getLon(){ return toDMS(lon); } public String getLat(){ return toDMS(lat); } public static long toMS(String sd){ int dd,mm,ss,ms; if(sd.startsWith("+")) sd = sd.substring(1); try{ int index = sd.indexOf("."); dd = Integer.parseInt(sd.substring(0,index)); sd = sd.substring(index+1); index = sd.indexOf("."); mm = Integer.parseInt(sd.substring(0,index)); sd = sd.substring(index+1); index = sd.indexOf("."); ss = Integer.parseInt(sd.substring(0,index)); ms = Integer.parseInt(sd.substring(index+1)); }catch(Exception e){ System.out.println(e.toString()); return -1; } return (dd*(60*60*100)+mm*(60*100)+ss*100+ms); } public static String toDMS(long _ms){ int dd,mm,ss,ms = (int)_ms; dd = ms/360000; mm = (ms/6000)%60; ss = (ms/100)%60; ms %= 100; return "+"+dd+"."+mm+"."+ss+"."+ms; } }