Shape2SQL でシェープファイルを SQL Server 2008 R2 にアップロードする

 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 を選ぶこと.

Microsoft® SQL Server® 2008 R2 SP2 - Express Edition
Microsoft® SQL Server® 2008 R2 SP2 – Express Edition

 ダウンロードボタンをクリックすると,バージョンを聞かれるので各自の環境に適したファイルを選択する.

SQL Server 2008 R2 のバージョンを選択する
SQL Server 2008 R2 のバージョンを選択する
インストーラ画面
インストーラ画面
ライセンス条項に同意する
ライセンス条項に同意する
機能の選択
機能の選択
インスタンスの構成
インスタンスの構成
サーバーの構成
サーバーの構成
データベースエンジンの構成
データベースエンジンの構成
エラーレポート
エラーレポート
インストールの進行状況
インストールの進行状況
完了
完了

SQL Server Management Studio から SQL Server 2008 R2 のインスタンスに接続する

 SQL Server Management Studio のサーバーへの接続でインスタンスが2つあるのがわかる.SQLEXPRESS とあるのが 2008 R2 であり,こちらのインスタンスを選択して接続する.

SQL Server Management Studio の起動画面でインスタンスが2つあるのがわかる
SQL Server Management Studio の起動画面でインスタンスが2つあるのがわかる

データベースを新規作成する

 オブジェクトエクスプローラのデータベースを右クリックして「新しいデータベース…」を選ぶ.名称を MEDICAL_AREADB とする.

オブジェクトエクスプローラから「新しいデータベース...」
オブジェクトエクスプローラから「新しいデータベース…」

 これで準備が整った.

国土交通省数値情報ダウンロードサービスから Shape ファイルをダウンロードする

 場所はこちらになる.新型コロナウイルスで医療崩壊が起きつつある 2020 年の年末,医療圏についてのデータを眺めてみよう.

 ページをスクロールしていくと地図が見えてくる.ここからダウンロードできる.全国をクリックする.

医療圏データのダウンロード
医療圏データのダウンロード

 実際のダウンロードボタンに遷移する.

実際のダウンロードボタン
実際のダウンロードボタン

 「ダウンロード」をクリックすると警告が出るが,構わずOKをクリックする.

ファイルサイズの警告が出る
ファイルサイズの警告が出る

 展開するとサイズは実に 1.23GB もある.巨大なファイルである.

zipファイルを展開する
zipファイルを展開する

メタデータを確認する

 いきなりアップロードする前に,列名を確認しておく.

 データ形状は「面」とあるので 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 のインスタンス名をコピペする.

Database Configuration の Server name に SQL Server のインスタンス名をコピペする
Database Configuration の Server name に SQL Server のインスタンス名をコピペする

 すると Connect to a database の Select or enter a database name から,先程作成したデータベース MEDICAL_AREADB をプルダウンで選択できるようになる.OK をクリックする.

先ほど作成した MEDICAL_AREADB がプルダウンで選択できる
先ほど作成した MEDICAL_AREADB がプルダウンで選択できる

Shape ファイルを指定する

 アプリの本体画面である.最上段に Shapefile のディレクトリを入力する欄がある.その右端に … ボタンがあり,クリックしてダイアログからシェープファイルを指定する.

右上の...ボタンをクリックして .shp ファイルを指定する
右上の…ボタンをクリックしてシェープファイルを指定する

 画面左下はジオメトリの属性を指定する.Planar Geometry にチェックが入っていることを確認し,Set SRID にチェックを入れ,Upload to Database ボタンをクリックする.

 画面右下はアップロードする列にチェックが入っている.このチェックのオンオフで列ごとにアップロードするかしないかを選択できるようだ.

A38-14_1.shp ファイルをアップロード中
A38-14_1.shp ファイルをアップロード中

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]

 クエリの結果は以下である.文字列が文字化けしている.原因と対処法は不明である.

SQL Server の空間結果
SQL Server の空間結果
ID	A38a_001@	A38a_002@	A38a_003@	A38a_004@	A38a_005@	POLYGON
1	01395	ƒjƒZƒR’¬	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	‰Y‰P’¬	0107	’†‹ó’m	1	POLYGON ((141.783482 43.486502, 141.7832
9	01607	‰Y‰Í’¬	0111	“ú‚	1	POLYGON ((142.882097 42.466316, 142.8816
10	01649	‰Y–y’¬	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件の返信

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください