Shape2SQL は以前の記事でも触れたが,ESRI 社の Shape ファイルを SQL Server のテーブルに直接アップロードしてくれるツールである.残念ながら更新は停止しており,最新の SQL Server とは互換性がない.今回,SQL Server 2008 R2 を新規インストールしたところ,アップロードがうまく行ったので報告する.
SQL Server 2008 R2 Express Service Pack 2 をインストールする
ダウンロード元は公式にある.ここで注意が必要だが,Service Pack 3 だと「機能の選択」が白紙で何も選択できず,それ以上作業が進まない.Service Pack 2 を選ぶこと.
ダウンロードボタンをクリックすると,バージョンを聞かれるので各自の環境に適したファイルを選択する.
SQL Server Management Studio から SQL Server 2008 R2 のインスタンスに接続する
SQL Server Management Studio のサーバーへの接続でインスタンスが2つあるのがわかる.SQLEXPRESS とあるのが 2008 R2 であり,こちらのインスタンスを選択して接続する.
データベースを新規作成する
オブジェクトエクスプローラのデータベースを右クリックして「新しいデータベース…」を選ぶ.名称を MEDICAL_AREADB とする.
これで準備が整った.
国土交通省数値情報ダウンロードサービスから Shape ファイルをダウンロードする
場所はこちらになる.新型コロナウイルスで医療崩壊が起きつつある 2020 年の年末,医療圏についてのデータを眺めてみよう.
ページをスクロールしていくと地図が見えてくる.ここからダウンロードできる.全国をクリックする.
実際のダウンロードボタンに遷移する.
「ダウンロード」をクリックすると警告が出るが,構わずOKをクリックする.
展開するとサイズは実に 1.23GB もある.巨大なファイルである.
メタデータを確認する
いきなりアップロードする前に,列名を確認しておく.
データ形状は「面」とあるので Geometry 型であることがわかる.
医療圏には一次,二次,三次がある..shp ファイルは3つあるが,ファイル名の数字がこれに対応する.
一次医療圏
属性名 | Column | 属性の型 | Data Type |
---|---|---|---|
行政区域コード | A38a_001 | コードリスト「行政コード」 | |
市区町村名 | A38a_002 | 文字列型 | CharacterString |
二次医療圏コード | A38a_003 | 文字列型 | CharacterString |
二次医療圏名 | A38a_004 | 文字列型 | CharacterString |
設定フラグ | A38a_005 | コードリスト「設定フラグ」 |
二次医療圏
二次医療圏は他の医療圏と異なり,面積と人口のデータが付与されている.医療圏の中心をなすものであることがわかる.
属性名 | Column | 属性の型 | Data Type |
---|---|---|---|
行政区域コード | A38b_001 | コードリスト「行政コード」 | |
市区町村名 | A38b_002 | 文字列型 | CharacterString |
二次医療圏コード | A38b_003 | 文字列型 | CharacterString |
二次医療圏名 | A38b_004 | 文字列型 | CharacterString |
面積(医療計画) | A38b_005 | 実数型 | Real |
面積(国土地理院) | A38b_006 | 実数型 | Real |
人口(医療計画) | A38b_007 | 整数型 | Integer |
総人口(住民基本台帳) | A38b_008 | 整数型 | Integer |
人口(15才未満) | A38b_009 | 整数型 | Integer |
人口(15才以上65才未満) | A38b_010 | 整数型 | Integer |
人口(65才以上) | A38b_011 | 整数型 | Integer |
三次医療圏
三次医療圏にあるのは都道府県名くらいである.
属性名 | Column | 属性の型 | Data Type |
---|---|---|---|
都道府県名 | A38c_001 | 文字列型 | CharacterString |
三次医療圏名 | A38c_002 | 文字列型 | CharacterString |
Shape2SQLを起動する
Database Configuration でサーバーとデータベースを指定する
起動して最初に現れる画面は Database Configuration である.Server name に SQL Server のインスタンス名をコピペする.
すると Connect to a database の Select or enter a database name から,先程作成したデータベース MEDICAL_AREADB をプルダウンで選択できるようになる.OK をクリックする.
Shape ファイルを指定する
アプリの本体画面である.最上段に Shapefile のディレクトリを入力する欄がある.その右端に … ボタンがあり,クリックしてダイアログからシェープファイルを指定する.
画面左下はジオメトリの属性を指定する.Planar Geometry にチェックが入っていることを確認し,Set SRID にチェックを入れ,Upload to Database ボタンをクリックする.
画面右下はアップロードする列にチェックが入っている.このチェックのオンオフで列ごとにアップロードするかしないかを選択できるようだ.
SQL Server Management Studio から結果を確認する
下記のクエリを実行する.
SELECT TOP (1000) [ID] ,[A38a_001@] ,[A38a_002@] ,[A38a_003@] ,[A38a_004@] ,[A38a_005@] ,LEFT(CAST([geom] as nvarchar(max)),40) AS POLYGON ,[geom] FROM [MEDICAL_AREADB].[dbo].[A38-14_1]
クエリの結果は以下である.文字列が文字化けしている.原因と対処法は不明である.
ID A38a_001@ A38a_002@ A38a_003@ A38a_004@ A38a_005@ POLYGON 1 01395 jZR¬ 0105 ãu 1 POLYGON ((140.642083 42.877189, 140.6419 2 01586 Þ©í¬ 0110 _U 1 POLYGON ((142.27979 42.981125, 142.27953 3 01456 ¤Ê¬ 0112 ãì 1 POLYGON ((142.615518 44.026789, 142.6151 4 01204 ®ìs 0112 ãì 1 POLYGON ((142.432083 43.947289, 142.4318 5 01216 °Ês 0107 óm 1 POLYGON ((142.238501 43.652331, 142.2385 6 01585 À½¬ 0110 _U 1 POLYGON ((141.954421 42.854375, 141.9543 7 01436 J³¬ 0107 óm 1 POLYGON ((141.68065 43.738631, 141.68030 8 01431 YP¬ 0107 óm 1 POLYGON ((141.783482 43.486502, 141.7832 9 01607 Yͬ 0111 ú 1 POLYGON ((142.882097 42.466316, 142.8816 10 01649 Yy¬ 0119 \ 1 POLYGON ((143.767769 43.163051, 143.7676
まとめ
Shape2SQL で SQL Server にShape ファイルをアップロードするには SQL Server 2008 R2 をインストールする必要があった.ただし,アップロードするデータベースはSQL Server 2008 R2である必要はなく,最新のデータベース(執筆時点ではSQL Server 2019である)でも可能であった.SQL Server 2008 R2に含まれる何らかのツールが Shape2SQL に必要なのかもしれない.
文字列データは文字化けしており,原因と対処法は現時点で不明である.行政区域コードは総務省が公表しており,結合することで対処可能と思われるが,医療圏コードは別途検索する必要がある.
“Shape2SQL でシェープファイルを SQL Server 2008 R2 にアップロードする” への2件の返信