Shape2SQLを使ってShapeデータをジオメトリーとしてSQL Serverにインポートする

Shape2SQLを使ってShapeデータをジオメトリーとしてSQL Serverにインポートしたいのだけれど、どうしてもできない。

環境

Windows 7 Professional x64 + SQL Server 2008 R2 Express SP1 x64

もちろん.NET Framework 3.5はインストール済、ファイアウォールで1433は解放済(既定のインスタンスMSSQLSERVER)、リモート接続を有効化済。

 

検証

SQL Server 2008 がインストールされているPCではShape2SQLでShapeファイルをインポートできているので、実験台まな板PCとなっているWindows 8 Consumer Preview に SQL Server 2008  Expressをインストールすることにした。

Windows 8 Consumer Preview + SQL Server 2008 Express

しかしまたインポートできない。

すでにこの対応に6時間もかけている・・・・ はぁ

とインポートできている環境のmdfとldfをアタッチした。

インポートできた

アタッチしたDBにインポートしたらできるではないか!

何が違うんだ!

DBのプロパティを確認すると
照合順序が違うぞ

できない環境 Japanese_Unicode_BIN
できた環境 Japanese_CI_AS

SQL Serverインストール時に既定の照合順序をJapanese_Unicode_BINにしていた。

結論

インポート先のDBの照合順序がJapanese_Unicode_BINの場合、Shape2SQLではインポートできない。
少なくともJapanese_CI_ASであればインポートできる。

Windows 8 Consumer PrevewにSQL Server 2008をインストールしたのは無意味だった。
SQL Server 2008 R2 Expressでも照合順序をJapanese_90_CI_ASにすればインポート可能です。

gis2これはSQL Server 2008 R2 Express SP1にSahpeファイルをShape2SQLでインポートした日本地図の拡大。左図のようなShapeファイルは対応データ | 製品概要 | ESRI ジャパン株式会社からダウンロードできます。

 

 

 

インポート手順

日本地図のシェイプファイルをDB「GIS」のテーブル「japan_ver72」に取り込む。なお、テーブルはShape2SQLにより自動で作成される。

インポート先のDB「GIS」を作成
0102

照合順を「Japanese_CI_AS」にすること
03

Shape2SQLを起動。サーバ名にSH78SH7を入力。なお、インスタンス名を既定の「MSSQLSQLSERVER」にしているので、インスタンス名は省略可能。
インポート先のデータべスとして先ほど作成した「GIS」を選に、OK。
04

シェイプファイル(japan_ver72.shp)を指定。
すると以下の設定が可能になるが、下記例はすべて自動で設定された項目。変更したければ変更する感じ。
テーブル名に「japan_ver72」。
ジオメトリー列をここでは「geom」に指定。
キー列として「ID」をここでは指定。
シェイプファイルから属性情報を自動で読み取ってくれるので、取り込み可能な列が表示されている。ここでは全チェック。
05

取り込み中。
06

取り込み完了するとテーブルができている。
07

テーブル構造はこんな感じ。
16

 

インポートしたデータを表示してみる

SELECTしてみる。
08

SELECT結果。
09

SELECT結果にジオメトリ列があるので、空間結果に変換した結果を表示できる。
10

それを拡大してみる。
11

渋谷区から練馬区に絞り込んでみる。
1213

東京都に絞り込んでみる。
1415

 

レポーティングサービスとBingマップ、さらに施設情報のShapeファイルを組み合わせると次のようなマップも作成できる。このレポートの作成方法はまた別の機会に紹介
17

コメント

このブログの人気の投稿

ダブルクォーテーションで括られたCSVカ​ンマ区切りテキストファイルを SQL Server で Bulk Insert する方法

PowerShellでTSV/CSVの列を絞り込んで抽出し、(先頭/行末)からN行出力する

IKEAの鏡を壁に取り付ける