全国の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;
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>
/// 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;
/// 緯度、経度より、最も至近の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;
using (SqlCommand sqlCmdStored = new SqlCommand("GetNearestAmedasCode"))
{
sqlCmdStored.CommandType = CommandType.StoredProcedure;
SqlParameter sqlLatitude = new SqlParameter("@緯度", SqlDbType.Float);
sqlLatitude.Value = latitude;
sqlCmdStored.Parameters.Add(sqlLatitude);
sqlLatitude.Value = latitude;
sqlCmdStored.Parameters.Add(sqlLatitude);
SqlParameter sqlLongitude = new SqlParameter("@経度", SqlDbType.Float);
sqlLongitude.Value = longitude;
sqlCmdStored.Parameters.Add(sqlLongitude);
sqlLongitude.Value = longitude;
sqlCmdStored.Parameters.Add(sqlLongitude);
sqlConn.Open();
sqlCmdStored.Connection = sqlConn;
sqlCmdStored.Connection = sqlConn;
using (SqlDataReader dr = sqlCmdStored.ExecuteReader())
{
if (dr.Read())
{
return (int)dr["ID"];
}
}
}
return 0;
}
}
}
{
if (dr.Read())
{
return (int)dr["ID"];
}
}
}
return 0;
}
}
}