0

このメソッドを使用して、経度と緯度の座標を使用して高度を取得します

private double getAltitude(int long, int lat) {
    Double longitude=Double.valueOf((double)(long/1e6)); 
    Double latitude=Double.valueOf((double)(lat/1e6));
    double result = Double.NaN;
    HttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();
    String url = "http://gisdata.usgs.gov/"
            + "xmlwebservices2/elevation_service.asmx/"
            + "getElevation?X_Value=" + String.valueOf(longitude)
            + "&Y_Value=" + String.valueOf(latitude)
            + "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=true";
    HttpGet httpGet = new HttpGet(url);
    try {
        HttpResponse response = httpClient.execute(httpGet, localContext);
        HttpEntity entity = response.getEntity();
        if (entity != null) {
            InputStream instream = entity.getContent();
            int r = -1;
            StringBuffer respStr = new StringBuffer();
            while ((r = instream.read()) != -1)
                respStr.append((char) r);
            String tagOpen = "<double>";
            String tagClose = "</double>";
            if (respStr.indexOf(tagOpen) != -1) {
                int start = respStr.indexOf(tagOpen) + tagOpen.length();
                int end = respStr.indexOf(tagClose);
                String value = respStr.substring(start, end);
                result = Double.parseDouble(value);
            }
            instream.close();
        }
    } catch (ClientProtocolException e) {} 
    catch (IOException e) {}
    return result;
}

これは Web サービスhttp://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmxを使用します

渡された座標は、Google マップから取得した int です

int long=(int)(map.getLong()*1e6);
int lat=(int)(map.getLatitude()*1e6);

この方法を使用すると、-1,8398598E4 のように完全に間違った高度または負の値が得られるため、パラメーターの形式に問題があります。

フランスの場所の座標でテストしました

44.783333 緯度10.516667 経度

4

0 に答える 0