Bing MapsとSQL Server連携
アプリケーションに関するTips
Microsoft MVP Data Platform
兵庫県立神戸甲北高等学校 主幹教諭
松本 吉生(まつもと よしお)
hotikisu@gmail.com
Yoshio Matsumoto
JSSUG 第20回 SQL Server 2019勉強会 in Osaka
略歴
• 1985 夢野台高等学校(理科:化学)
• 1989 明石高等学校
コンピュータ教室整備 ネットワーク管理
文部科学省「光ファイバー網」研究事業
• 2003 西宮香風高等学校(情報)
SQL Serverによる学籍管理システム
• 2004 - 2020 マイクロソフトMVP - 16年連続受賞
日本では唯一の高校教員
• 2015 神戸工業高等学校(工業:情報技術)
• 2016 - 2019 マイクロソフト MIEE
世界規模の教員アワード C# プログラミング教育
• 2018 神戸甲北高等学校
hotikisu@gmail.com
Yoshio Matsumoto
SQL Server DB アプリケーション概要
• データベース構築
• SQL Server Management Studio (SSMS)
• データ処理
• ストアドプロシージャ (SSMS)
• データ入出力
• Windows フォームアプリケーション開発
• InfoPath (OBA開発)
• 帳票印刷
• Windows フォームアプリケーション開発
(Crystal Report → Microsoft Reports)
• SQL Server Reporting Service
データ接続の歴史
• DAO (Data Access Objects) 1992年
• ADO (ActiveX Data Object) 1996年
• ADO.NET (.NET Framework) 2000年
Visual Studio 2019 による開発
• データソース構成ウィザードによるデータ接続の作成
• DataGridViewの作成
• 検索条件ビルダーによるクエリの作成
• DataGridViewタスク – クエリの追加
• コードの再利用
• Data Set デザイナの利用
• ストアドプロシージャの実行
BingMapsを使うTips
• 緯度経度値を利用したカスタムURL
• embedオプションの利用
• Bing Maps APIを利用した緯度経度値の取得
緯度経度値を利用したカスタムURL
• 神戸三宮駅の緯度経度値
緯度34.694840
経度135.194900
• https://www.bing.com/maps?cp=34.694840~135.194900
緯度経度値を中心とした
地図を表示
緯度経度値を利用したカスタムURL
• https://www.bing.com/maps?cp=34.694840~135.194900&lvl
=18
• LVL値 拡大率を決める
1 全地球
20 最詳
緯度経度値を利用したカスタムURL
• https://www.bing.com/maps?cp=34.694840~135.194900&lvl
=18&sp=point.34.694840_135.194900
• spオプション アイテム表示
位置の指定はpoint
緯度経度値を利用したカスタムURL
• https://www.bing.com/maps?cp=34.694840~135.194900&lvl
=18&sp=point.34.694840_135.194900_神戸三ノ宮駅
• spオプション 場所名の表示
日本語は文字化けする
緯度経度値を利用したカスタムURL
• https://www.bing.com/maps?cp=34.694840~135.194900&lvl
=18&sp=point.34.694840_135.194900_%e7%a5%9e%e6%88%
b8%e4%b8%89%e3%83%8e%e5%ae%ae%e9%a7%85
• spオプション 場所名の表示
日本語を
URLエンコードする
WebBrowserコントロールを使う
• WebBrowserコントロール 大きさ300×300
• webBrowser1.Navigate("https://www.bing.com/maps?cp=34
.694840~135.194900&lvl=18&sp=point.34.694840_135.19490
0_%e7%a5%9e%e6%88%b8%e4%b8%89%e3%83%8e%e5%ae
%ae%e9%a7%85");
Embedオプションを使う
Embedオプションを使う
Embedオプションを使う
Embedオプションを使う
Embedオプションを使う
• https://www.bing.com/maps/embed?h=300&w=300&cp=34.
7151247122281~135.11419677734372&lvl=11&typ=d&sty=r
&src=SHELL&FORM=MBEDV8
• https://www.bing.com/maps/embed?lvl=18&w=300&h=300
&cp=34.694840~135.194900&pp=~~34.694840~135.194900
オプション h、w
pp ポイント表示
SQL Serverとの連携
• テーブル
世界の都市データ
• Wikipediaより
Bing Maps APIの利用
Bing Maps からXMLを取得
string BingMapsKey = “myBingMapsKey";
string strAdress = "三ノ宮駅";
string strURL =
string.Format("http://dev.virtualearth.net/REST/v1/Locations
?query={0}&key={1}&c=ja-jp&o=xml", strAdress,
BingMapsKey);
XmlDocument getXMLDoc = GetXML(strURL);
GetXMLメソッド:System.Data名前空間
SQL Serverの都市データを利用する
• XMLデータを取得する GetXml メソッド
private XmlDocument GetXml(string rUrl)
{
HttpWebRequest req = WebRequest.Create(rUrl) as HttpWebRequest;
using (HttpWebResponse res = req.GetResponse() as
HttpWebResponse)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(res.GetResponseStream());
return xmlDoc;
}
}
SQL Serverの都市データを利用する
• 構造体 LatiLongi
public struct LatiLongi
{
public string latitude;
public string longitude;
}
SQL Serverの都市データを利用する
• 緯度経度値を取得する getLatiLongi メソッド
public LatiLongi getLatiLongi(string strAdress)
{
string BingMapsKey = “myBingMapsKey";
string strURL =
string.Format(http://dev.virtualearth.net/REST/v1/Locations?query={0}&key={1}&c=ja
-jp&o=xml, strAdress, BingMapsKey);
XmlDocument geoValue = GetXml(strURL);
XmlNamespaceManager XNM = new
XmlNamespaceManager(geoValue.NameTable);
nsmgr.AddNamespace("rest",
"http://schemas.microsoft.com/search/local/ws/rest/v1");
XmlNodeList locationElements =
geocodeResponse.SelectNodes("//rest:Location", XNM);
SQL Serverの都市データを利用する
string latitude = null;
string longitude = null;
XmlNodeList NL = locationElements[0].SelectNodes(".//rest:Point", XNM);
latitude = NL[0].SelectSingleNode(".//rest:Latitude", XNM).InnerText;
longitude = NL[0].SelectSingleNode(".//rest:Longitude", XNM).InnerText;
LatiLongi myLatiLongi = new LatiLongi();
myLatiLongi.latitude = latitude.ToString();
myLatiLongi.longitude = longitude.ToString();
return myLatiLongi;
}
SQL Serverの都市データを利用する
• SQL Serverにストアされた都市名に対してBing Mapsから緯度経度
値を取得する。
for (int i = 0; i < 10; i++)
{
myDataStr =
mapdataDataGridView.Rows[i].Cells[2].Value.ToString();
myLatiLongi = getLatiLongi(myDataStr);
mapdataDataGridView.Rows[i].Cells[4].Value =
myLatiLongi.latitude;
mapdataDataGridView.Rows[i].Cells[5].Value =
myLatiLongi.longitude;
}
Bing Maps APIライセンス
Bing maps Dev Center
Bing maps Portal
Bing MapsとSQL Server連携
アプリケーションに関するTips
Microsoft MVP Data Platform
兵庫県立神戸甲北高等学校 主幹教諭
松本 吉生(まつもと よしお)
hotikisu@gmail.com
Yoshio Matsumoto
JSSUG 第20回 SQL Server 2019勉強会 in Osaka

20190713 jssug ms_kansai_bing_maps_and_sql_server