はじめに
この記事では、Windows環境におけるpbf形式のデータをMicrosoft SQL Serverにインポートする方法を解説します。
- Microsoft SQL Serverのインストール
- SQL Server Management Studioのインストール
- SQL Serverに接続
- pbfファイルのインポート
- 参考
PBFについての基本情報
PBF(Protocolbuffer Binary Format)は、地図データを効率的に保存、転送するためのバイナリ形式です。主にOpenStreetMap(OSM)プロジェクトで使用されており、OSMデータを圧縮し、サイズを小さくするためにProtocol Buffers(Googleによって開発されたデータシリアライズ形式)を利用しています。PBF形式は、XML形式のOSMデータに比べて読み込みや書き込みが高速で、ストレージの効率も向上します。PBFファイルは、地図レンダリングや分析、マッピングアプリケーションで広く利用されています。
手順
1.Microsoft SQL Serverのインストール
Microsoftの公式サイトから、MSSQLのインストーラーをダウンロードします。
自分の場合はSQL Server Version 2022をインストールしました。
https://www.microsoft.com/ja-jp/evalcenter/download-sql-server-2022
インストーラーを実行します。
Basic, Custom, Download Mediaの3種類がありますが、自分の場合はBasicを選択したので下記はBasicを選択した場合の手順となります。
Terms&Conditionを確認し、Installを実行します。
2.SQL Server Management Studioのインストール
SQL Serverのインストール完了後に表示されるポップからSSMSのインストールしても同じ作業になります。
コマンドベースでSQL Serverを操作される方はこの手順は必要ありませんが、この記事ではコマンドベースでの操作に関しては説明しておりません。
-
Install先を確認し、Installを実行します。
自分の場合は、AuthenticationはWindows Authenticationを指定し他はデフォルトのまま使用しました。 -
Trust Server Certificateにチェックを入れ、接続します。
-
念のため、SQL Serverが起動しているか確認します。
SQL Server Configuration Managerを起動します。
左側のツリーの[SQL Server Configuration Manager(Local)] - [SQL Services] - [SQL Server (Server名)]がRunningになっていることを確認します。
3.SQL Serverに接続
SQL Server Management Studioを起動し、Serverに接続します。
- Server Type: Database Engine
- Server name: Your Server Namae
- Authentication: Windows AUthentication
- Encryption: Mandatory
- Trust server certificate: ON
SQL Server Management Studioのインストール時のAuthenticationでSQL Serverを選択した場合は、作成したアカウントでServerに接続してください。
4.PBFファイルのインポート
本記事では、ODBC Driver 17 for SQL Serverを使用しております。環境に合わせて変更してください。
本記事では、以下のオプションを指定していますが、必要に応じて使い分けでください。
- AuthenticationがWindows Authenticationの場合
ogr2ogr -f "MSSQLSpatial" "MSSQL:driver={ODBC Driver 17 for SQL Server};server=localhost;database=[データベース名];Trusted_Connection=yes" [.gdbのファイルパス] -a_srs EPSG:4326 --config MSSQLSPATIAL_USE_GEOMETRY_COLUMN YES -nln [テーブル名] [指定するレイヤー名]
- AuthenticationがSQL Serverの場合
ogr2ogr -f "MSSQLSpatial" "MSSQL:driver={ODBC Driver 17 for SQL Server};server=localhost;database=[データベース名];uid=[ユーザID];pwd=[パスワード]" [.gdbのファイルパス] -a_srs EPSG:4326 --config MSSQLSPATIAL_USE_GEOMETRY_COLUMN YES -nln [テーブル名] [指定するレイヤー名]
5.参考
SQL Server認証を追加
自分が直面したエラーについて記載します。
SQL Serverセットアップ時にWindows Authenticationを指定した場合かつ
-
SQL Server認証も追加したい
-
ogr2ogrコマンドで、UserID/Passwordでコマンド実行したい
場合は、下記を参考にしてください。 -
Serverの認証方法を変更します。
- サーバーを右クリック
- Securityタブを選択
- Server authenticationを[SQL Server and Windows Authentication mode]を選択します。
ログインユーザーを作成
サーバー直下の[Security - Logins]を右クリックし、[New Login]をクリックします。
必要な情報を記入し、[OK]をクリックします。
ODBCドライバの確認
- 「スタート」メニューを開き、「ODBC」と入力します。
- 「ODBCデータソース(32ビット)」または「ODBCデータソース(64ビット)」を選択します。
- ODBCデータソースアドミニストレーターが開いたら、「ドライバ」タブをクリックします。
- インストールされているODBCドライバの一覧が表示されます。
PBFのレイヤー一覧を取得
一部のレイヤーのみを抽出したい場合に、レイヤー名を知る必要があります。レイヤー名を調べるには、下記のコマンドを実行します。
ogrinfo -al -so [.pbfファイルパス]
インポート時の警告
- Non closed ring detected
ジオメトリデータにおいて「閉じていないリング」が検出されたことを示しています。リングは、ポリゴンの境界を形成する点の集まりで、最初の点と最後の点が一致しない場合、閉じていないと見なされます。このエラーを避けるためには、設定オプション OGR_GEOMETRY_ACCEPT_UNCLOSED_RING を NO に設定することが推奨されています。
まとめ
本手順で、PBFをMSSQLのデータベースにインポートすることができました。