ここでは、国土数値情報の鉄道時系列データを PostGIS データベースに移行するためのワークスペース例を掲げます。実用上は鉄道時系列データをデータベース化することに大きな意味はありませんが、属性の内容からみてさまざまなデータ抽出の例を考えやすいことから、サンプルとしました。
データベースからデータを抽出するためのワークスペースについては「データベースとの連携 - データベースからのデータ抽出」を参照してください。
FME 2015.1.0.3 build 15485
=====
国土数値情報の鉄道時系列データ(平成25年度作成; 路線, 駅)を PostGIS データベースに移行する。
データベース名: KSJ_Railroad2
テーブル名: RailroadSection, Station
ソースデータ:
国土数値情報ダウンロードサービスサイトよりダウンロードした鉄道時系列 Shapefile 形式データ(平成25年度)
ダウロードファイル名: "N05-14_RailroadSection2.shp" (路線), "N05-14_Station2.shp" (駅)
=====
FMEワークスペース例
[SHAPE] リーダー: 鉄道時系列データ(路線、駅)を全て読み込む。
[POSTGIS] ライター: RailroadSection テーブル、Station テーブルにフィーチャー(レコード)を挿入する。
鉄道時系列データ (Shape形式) には座標系定義ファイル (*.prj) が含まれていませんが、世界測地系(JGD2000)緯度経度であることは知られているので、[SHAPE] リーダーの Coordinate System パラメーターに LL-JGD2K (JGD2000緯度経度) を設定しました。これにより、読み込まれたフィーチャーに座標系が設定され、移行先のデータにも座標系が定義されます。その他にはソースデータの読込に関して特筆すべき事項はありません。
データベースの場合、データベースがデータセット、テーブルがフィーチャータイプ、レコードがフィーチャーに相当します。データベース(データセット)を新たに作成する場合は、あらかじめ空のデータベースを作成しておく必要があり、その方法はDBMS (データベース管理システム) によって異なります。PostgreSQL/PostGIS の場合は pgAdmin III (PostgreSQL に付属するデータベース管理用ツール) を使うのが簡単です。
なお、現在 FME は日本語文字を含む PostgreSQL/PostGIS データベース名をサポートしていないので、データベース名は英文字のみとしてください。この例では "KSJ_Railroad2" としました。テーブル名、フィールド名では日本語文字も使用できます。
データベース用のライターをワークスペースに追加する際には、データベースに接続するためのパラメーターの設定が必要です。パラメーターの構成も DBMS によって異なります。
[POSTGIS] ライター追加時の Add Writer 画面, パラメーター設定画面
"Database Connection" グループでデータベースに接続するためのパラメーターを設定します。
Add Writer 画面
Format: PostGIS
Dataset: Embed Connection Parameters
PostGIS Parameters 画面
Host: データベースサーバーのホスト名
Port: データベースサーバーの接続ポート番号
Database: KSJ_Railroad2 (データベース名 = データセット名)
Username: データベースユーザー名
Password: データベースユーザーのパスワード
Spatial Column Type: geometry (デフォルト)
Spatial Column Name: geom (デフォルト)
Create Generic Spatial Columns: チェック (デフォルト)
Lower Case Attribute Names: 列名(属性名)に英大文字を使用する場合はチェックをはずす。
ホスト名、接続ポート番号は、実際のデータベースサーバーの構成にしたがってください。データベースユーザーは、使用するデータベースに対するテーブル作成/削除、レコード挿入の権限を持っていなければなりません。
ライターを追加したら2つのライターフィーチャータイプ(テーブル)をキャンバスに追加し、それぞれのテーブル名と属性を設定します。ソースデータ(Shapeファイル)の属性定義については、国土数値情報ダウンロードサービスサイトの鉄道時系列データ説明ページ、及びそのページからリンクしている製品仕様書 (PDF) やShapeファイルの属性定義 (Excel) を参照してください。
[POSTGIS] ライターフィーチャータイププロパティ: RailroadSection 属性(フィールド)設定例
ワークスペースの実行(データ移行)が一回限りの場合はこのままで良いですが、属性名やデータ型を変更して再実行する場合は、データの書出を始める前に、前回作成したテーブルを削除する必要があります。そのようなことが想定される場合は、フィーチャータイププロパティの Format Parameters タブで、Drop Table First (最初にテーブルを削除する) を Yes に変更してください。これにより、ワークスペースを実行するたびに、データベース内に同じ名前のテーブルが存在していた場合はそれが削除され、新たにテーブルが作成されるようになります。
[POSTGIS] ライターフィーチャータイププロパティ: Format Parameters タブ
ソースデータのフィーチャータイプとライターフィーチャータイプ (RailroadSection, Station) を接続し、それらの間で対応する属性同士も接続すれば完成です。このワークスペースを実行すると、Shapeファイルから読み込まれた全ての鉄道時系列データ(路線、駅)が KSJ_Railroad2 データベース(RailroadSection テーブル、Station テーブル)に移行されます。
KSJ_Railroad2 データベース (pgAdmin III)
RailroadSection, Station テーブルが作成されました。
Station テーブル (pgAdmin III クエリーツール)
空間データ(ポイントジオメトリ)は "geom" フィールドに記録されています。
ここで掲げたワークスペース例では、リーダーフィーチャータイプとライターフィーチャータイプの間で属性をひとつずつ接続していますが、データフローの途中で AttributeRenamer などによってフィーチャーの属性名を出力先の属性名と同じ名前に変更した場合は、個々の属性同士の接続を明示的に行う必要はありません。また、不要な属性を削除したり、新たな属性を加えてそれもデータベースに移行したりするなど、必要に応じてデータ移行とあわせてスキーマを変更することもできます。
注: FME Professional エディションは、PostGIS データベースについては空間データの Read (読込), Write (書出) ともにサポートしていますが、Oracle, Microsoft SQL Server データベースへの空間データの Write はサポートしません (非空間データの Read/Write, 空間データの Read はサポートします)。それらのデータベースに空間データを書き出すには、FME Database エディションのライセンスが必要です。
0 件のコメント:
コメントを投稿