GIS奮闘記

元GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

C# の WebRequest を使って標高API を使ってみる

さて、本日は C# のWebRequest を使って標高API を使ってみようと思います。最近はまっている標高APIですが、以下エントリーでは C# で作った画面から標高APIを呼び出している Python スクリプトを実行して、実行結果を画面に表示しました。今回はそれを C# オンリーで標高APIを使ってみたいと思います。

www.gis-py.com

今回実装するもの

簡単な画面を作りました。処理は以下のような流れです。

  • 作成した画面で緯度経度を入力し実行
  • 標高APIで標高値を取得し、それを標高のテキストボックスに表示

f:id:sanvarie:20190719232535p:plain

インストール

以下をNuget でインストールしてください。

  • System.Net.Http
  • Newtonsoft.Json

環境

Windows10(64bit)
Visual Studio2017
.NET Framework4.7.2

サンプルコード

実行ボタンの処理を記述します。

private async void BtnExecute_Click(object sender, RoutedEventArgs e)
{
    // パラメータ作成
    var parameters = new Dictionary<string, string>()
    {
        { "lon", LonText.Text },
        { "lat", LatText.Text },
        { "outtype", "JSON" },
    };

    // URL作成
    var url = $"http://cyberjapandata2.gsi.go.jp/general/dem/scripts/getelevation.php?{await new FormUrlEncodedContent(parameters).ReadAsStringAsync()}";

    // 標高APIにリクエスト投げる
    WebRequest request = WebRequest.Create(url);

    using (Stream response_stream = request.GetResponse().GetResponseStream())
    {
        using (StreamReader reader = new StreamReader(response_stream))
        {
            // 標高取得
            var jObject = JObject.Parse(reader.ReadToEnd());
            ElevationText.Text = jObject.GetValue("elevation").ToString();
        }
    }
}

実行

このように入力し、実行を押します。
f:id:sanvarie:20190719232749p:plain

実行後、標高APIから取得した標高が表示されます。
f:id:sanvarie:20190719232801p:plain

この緯度経度の場所がどこか気になる方は以下エントリーを読んでみてください。

www.gis-py.com

簡単ですが、本日は以上です。