質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.52%

緯度経度から住所を取得したいのですが出力がずれてしまうのですが,,,,

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 1,297

qtakusora1014

score 12

google map APIを用いて緯度経度情報から住所をとってくるプログラムを書いています.エクリプスでjava言語を使用しています.
あらかじめcsvファイルに緯度経度情報を入力しているのですが,なぜか住所を取得しcsvファイルに出力した時に,結果がずれてしまいます.
なぜなのか教えていただきたいです.
開発環境はwindows7です.

コード

package google;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;

public class AP{

public static void main(String[] argv) throws NumberFormatException,Exception {

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("week2.csv")));
String read;

FileWriter fw = new FileWriter("C:\\Users\\konoLAB\\Documents\\卒研\\workspace\\API\\out11.csv", false);  //???P
PrintWriter pw = new PrintWriter(new BufferedWriter(fw));

double a;
double c;
double [] b;//??x?z??
double [] d;//?o?x?z??
String [] day;//?o?x?z??
day=new String[300000];
b=new double[300000];
d=new double[300000];
String [] timecsv;//?o?x?z??
timecsv=new String[300000];
double [] time_hour;//????v?f?????z??
double [] time_second;//????v?f?????z??
double [] time_minitue;//????v?f?????z??
String  time;//????
String [] time_para;//????v?f????
time_para=new String[300000];
time_hour=new double[300000];
time_second=new double[300000];
time_minitue=new double[300000];
int h=0;
double [] e;//?o?x?z??
e=new double[300000];
double [] f;//?o?x?z??
f=new double[300000];
double [] g;//?o?x?z??
g=new double[300000];
while((read=br.readLine())!=null)
{
String[] sp = read.split(",");//","?????????z???B
for(int j=0;j<sp.length;j++)
{
if(j==0)
{
day[h]=sp[j];

}

if(j==1)
{
time=sp[j];
timecsv[h]=sp[j];
//System.out.println(time);
time_para=time.split(":");
//System.out.println(time_para[1]);
time_hour[h]=Double.parseDouble(time_para[0]);
time_second[h]=Double.parseDouble(time_para[1]);
time_minitue[h]=Double.parseDouble(time_para[2]);
}

if(j==3)
{
b[h]=Double.parseDouble(sp[j]);
}

if(j==4)
{
d[h]=Double.parseDouble(sp[j]);

}
if(j==5)
{
e[h]=Double.parseDouble(sp[j]);

}
if(j==6)
{
f[h]=Double.parseDouble(sp[j]);

}
if(j==7)
{
g[h]=Double.parseDouble(sp[j]);
h++;
}
}
}
br.close();

///////////////////////http///////////////////////////////////////////////////////////////////////////
for(int x=0;x<h;x++)
{
String S = "https://maps.googleapis.com/maps/api/geocode/json?latlng=";
String S1 = ",";
String S2 = "&language=jp&sensor=false";

String last=S+b[x]+S1+d[x]+S2;

/**/
FileWriter f1 = new FileWriter("C:\\Users\\konoLAB\\Documents\\卒研\\workspace\\API\\out21.csv", true);  //???P
PrintWriter p1 = new PrintWriter(new BufferedWriter(f1));
URL url = new URL(last);
URLConnection conn = url.openConnection();

String charset = Arrays.asList(conn.getContentType().split(";") ).get(1);
String encoding = Arrays.asList(charset.split("=") ).get(1);

BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), encoding ));
StringBuffer response = new StringBuffer();
String line;
int count=0;

while ((line= in.readLine()) != null)
{
//System.out.println(line);
if (line.contains("\"formatted_address\" :")) 
{

/*if(count==0)
{
final String start = "\"formatted_address\" : \"";
final int start1 = line.indexOf(start) + start.length();

final String finish = "\",";
final int finish1 = line.indexOf(finish);

System.out.println(line.substring(start1, finish1));
pw.print(line.substring(start1, finish1));
pw.println();
}*/

if(count==1)
{
String start = "\"formatted_address\" : \"";
int start1 = line.indexOf(start) + start.length();

String finish = "\",";
int finish1 = line.indexOf(finish);

System.out.println(line.substring(start1, finish1));
p1.print(line.substring(start1, finish1));
p1.println();

break;
}

/*if(count==2)
{
final String start = "\"formatted_address\" : \"";
final int start1 = line.indexOf(start) + start.length();

final String finish = "\",";
final int finish1 = line.indexOf(finish);

System.out.println(line.substring(start1, finish1));
pw.print(line.substring(start1, finish1));
pw.println();
}*/

count++;

}
response.append(line+"\n");

}

p1.close();
in.close();

/**/

//String title  = AP.getTitle(last);

}

pw.close();
//////////////////////////////////////////////////////////////////////////////////////////////////////

}
}

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • yona

    2016/10/20 13:06

    何と何がずれるんですか?住所から緯度経度を取得し、緯度経度から住所を取得すると元の住所とは異なる住所が取得できるということですか?

    キャンセル

  • qtakusora1014

    2016/10/20 13:34

    そうです.ある緯度経度情報を入力すると,本来でてくる住所ではなく時系列順で次にあたる緯度経度情報の住所がでてきたりするんです...

    キャンセル

  • kei344

    2016/10/20 13:37

    コードブロックが適切に設定されていません。記入エリアの右部分あたりにリアルタイムに結果が表示されていると思うので、そこを見ながら調整してください。また、コード内のコメントが全て文字化けしているようなのですが、そこも修正いただけませんか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る