緯度、経度より標高を返すクラス


緯度、経度より標高を返す web service を発見。
 
とりあえず、Windows Formsで作ってみた。
Compact Framework 5.0 で、ネームスペースサポートされているのかな・・・
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Web;
using System.Diagnostics;
using System.Xml;
namespace Uchukamen.WZero3
{
    class Altitude
    {
        private const string webServiceUrl = "http://lab.uribou.net/ll2h/";
        public static float GetAltitude(string latitude, string longitude)
        {
            string encodedUrl = GetEncodedUrl(latitude, longitude);
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(encodedUrl);
            req.Method = "GET";
            float height = 0F;
            int err = 0;
            string msg = "";
            // レスポンスの取得と読み込み
            WebResponse res = req.GetResponse();
            using (Stream resStream = res.GetResponseStream())
            using (XmlTextReader reader = new XmlTextReader(resStream))
            {
                while (!reader.EOF)
                {
                    if (reader.IsStartElement("height"))
                        height = reader.ReadElementContentAsFloat();
                    else if (reader.IsStartElement("error"))
                        err = reader.ReadElementContentAsInt();
                    else if (reader.IsStartElement("message"))
                        msg = reader.ReadElementString("message");
                    else
                        reader.Read();
                }
                if (err != 0)
                    throw (new Exception(msg));
            }
            return height;
        }
        private static string GetEncodedUrl(string latitude, string longitude)
        {
            string url = webServiceUrl + "?ll="
                + latitude + "," + longitude;
            string encodedUrl = HttpUtility.HtmlEncode(url);
            return encodedUrl;
        }
    }
}
呼び出し
            textBoxAltitude.Text= Altitude.GetAltitude(textBoxLatitude.Text, textBoxLongitude.Text).ToString();

コメント / トラックバック3件 to “緯度、経度より標高を返すクラス”

  1. 仮面 Says:

    >Compact Framework 5.0 で、ネームスペースサポートされているのかな・・・
    ゲッ、System.Web がない。
    HttpUtility.HtmlEncodeしか使ってなくてよかった。
     
    using System;using System.Collections.Generic;using System.Text;using System.Net;using System.IO;using System.Diagnostics;using System.Xml;namespace Uchukamen.WZero3{    class Altitude    {        private const string webServiceUrl = "http://lab.uribou.net/ll2h/";        public static float GetAltitude(string latitude, string longitude)        {            string encodedUrl = webServiceUrl + "/?ll=" + latitude + "," + longitude;            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(encodedUrl);            req.Method = "GET";            float height = 0F;            int err = 0;            string msg = "";            // レスポンスの取得と読み込み            WebResponse res = req.GetResponse();            using (Stream resStream = res.GetResponseStream())            using (XmlTextReader reader = new XmlTextReader(resStream))            {                while (!reader.EOF)                {                    if (reader.IsStartElement("height"))                        height = reader.ReadElementContentAsFloat();                    else if (reader.IsStartElement("error"))                        err = reader.ReadElementContentAsInt();                    else if (reader.IsStartElement("message"))                        msg = reader.ReadElementString("message");                    else                        reader.Read();                }                if (err != 0)                    throw (new Exception(msg));            }            return height;        }    }}

  2. Bianchi Says:

    WGS84形式で標高を取得する方法が判りました。ありがとうございます。同じく、コードを含め教えて欲しいのですが、移動前:緯度a、経度a、高度a移動先:緯度b、経度b、高度bが判るとします。この移動前-移動先の距離 これを算出したいのですが、どのようにやればいいのかわかりません。国土地理院もみましたが、数式が難しく、ちっともわかりません。GPSでデータ計測をしてますので、5~10sec毎に1pointを取得した情報データにこの処理をしたいと思っています。すいませんが、教えてください。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。