緯度、経度より、最も至近のAmedasの観測所コードを取得する XML Web Service

全国のAmedas コードをデータベースに入れて、経度、緯度から、至近の観測ポイントのIDを取り出すストアドを作って、XML Web Service化した。
 
呼び出しは、
int code = amedas.GetNearestCode(35.1239f, 139.455f);
ああっ、なんて楽チンな。
 
緯度、経度をとる方法は分かったが、こたさんの情報によると、InterOpしなきゃ・・だめか・・・
あと2日。
————-
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Configuration;
using System.Data.SqlClient;
namespace WebServiceAmedas
{
    /// <summary>
    /// WebServiceAmedas の概要の説明です
    /// </summary>
    [WebService(Namespace = "http://uchukamen.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class Amedas : System.Web.Services.WebService
    {
        /// <summary>
        /// 緯度、経度より、最も至近のAmedasのエリアコードを取得する。
        /// </summary>
        /// <param name="latitude">緯度</param>
        /// <param name="longitude">経度</param>
        /// <returns></returns>
        [WebMethod]
        public int GetNearestCode(float latitude, float longitude)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["uchukamen_comConnectionString1"].ConnectionString;
            using (SqlConnection sqlConn = new SqlConnection(connectionString))
            using (SqlCommand sqlCmdStored = new SqlCommand("GetNearestAmedasCode"))
            {
                sqlCmdStored.CommandType = CommandType.StoredProcedure;
                SqlParameter sqlLatitude = new SqlParameter("@緯度", SqlDbType.Float);
                sqlLatitude.Value = latitude;
                sqlCmdStored.Parameters.Add(sqlLatitude);
                SqlParameter sqlLongitude = new SqlParameter("@経度", SqlDbType.Float);
                sqlLongitude.Value = longitude;
                sqlCmdStored.Parameters.Add(sqlLongitude);
                sqlConn.Open();
                sqlCmdStored.Connection = sqlConn;
                using (SqlDataReader dr = sqlCmdStored.ExecuteReader())
                {
                    if (dr.Read())
                    {
                        return (int)dr["ID"];
                    }
                }
            }
            return 0;
        }
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です