README
¶
PLATEAU VIEW Server Tools
PLATEAU VIEWサーバーのCMS連携・データ移行ツール集です。
概要
このディレクトリには、PLATEAU VIEWのCMSデータ管理に関する以下のツールが含まれています:
setup-city-items: 都市アイテムをCSVから一括登録copy-related: 関連データセットアイテムをプロジェクト間でコピーupload-assets: アセットファイルを一括アップロードmigrate-v1: PLATEAU VIEW v1からのデータ移行
使い方
サーバーディレクトリから以下のコマンドで実行します:
cd server
go run . <サブコマンド> [オプション]
または、ビルドして実行:
cd server
go build
./server <サブコマンド> [オプション]
環境変数の設定
ツール実行時に毎回-baseや-tokenオプションを指定するのは面倒なので、.envファイルに設定しておくことをおすすめします。
.envファイルの作成
serverディレクトリに.envファイルを作成し、以下のように設定します:
# server/.env
REEARTH_PLATEAUVIEW_CMS_BASEURL=https://your-cms-url.com
REEARTH_PLATEAUVIEW_CMS_TOKEN=your-token-here
注意: 環境変数名にはREEARTH_PLATEAUVIEW_プレフィックスが必要です。
簡易設定
プレフィックスを省略した設定も可能です(ただし、正式にはREEARTH_PLATEAUVIEW_プレフィックス付きが推奨されます):
# server/.env(プレフィックスなし)
CMS_BASEURL=https://your-cms-url.com
CMS_TOKEN=your-token-here
CMS_SYSTEMPROJECT=your-system-project-id
.envファイルが存在する場合、ツール起動時に自動的に読み込まれます。ログにconfig: .env loadedと表示されれば成功です。
各コマンドで-base、-tokenオプションを指定することで、.envの設定を上書きできます。
コマンド一覧
1. setup-city-items
CSVファイルから都市アイテムをCMSに一括登録します。
使い方
go run . setup-city-items \
-project <PROJECT_ID> \
-system-project <SYSTEM_PROJECT_ID> \
-file <CSV_FILE_PATH> \
[-base <CMS_BASE_URL>] \
[-token <CMS_TOKEN>] \
[-force] \
[-offset <NUMBER>] \
[-limit <NUMBER>] \
[-dryrun]
オプション
| オプション | 必須 | 説明 | デフォルト |
|---|---|---|---|
-project |
✓ | CMSプロジェクトID | - |
-system-project |
✓ | CMSシステムプロジェクトID | 環境変数CMS_SYSTEMPROJECT |
-file |
✓ | CSVファイルのパス | - |
-base |
CMS Base URL | 環境変数CMS_BASEURL |
|
-token |
CMS認証トークン | 環境変数CMS_TOKEN |
|
-force |
既存データがあっても強制実行 | false | |
-offset |
処理開始位置(行番号) | 0 | |
-limit |
処理する最大件数 | 0(無制限) | |
-dryrun |
実際には登録せずに動作確認のみ | false |
CSVフォーマット
CSVファイルは以下のフォーマットで作成してください:
ヘッダー行(必須):
city_code,city,city_en,pref,bldg,tran,trk,squr,rwy,wwy,urf,luse,fld,tnm,htd,ifld,rfld,lsld,frn,veg,wtr,dem,brid,tun,cons,ubld,unf,area,gen
データ行:
13101,千代田区,chiyoda-ku,東京都,LOD2,LOD3,,,,,LOD1,LOD1,LOD1,LOD1,LOD1,LOD1,LOD1,LOD1,LOD3,LOD2,LOD1,LOD1,LOD2,,,LOD4,,,
city_code: 都市コード(5桁)。空の場合は自動生成されますcity: 都市名(日本語)city_en: 都市名(英語)pref: 都道府県名
各地物タイプに対応するカラムに、LOD値を指定します:
- 値が空でない場合、その地物タイプが有効になります
- 値の例:
LOD1,LOD2,LOD3,LOD4 - 空の場合、その地物タイプはスキップされます
主な地物タイプ:
bldg: 建築物tran: 道路trk: 軌道squr: 広場rwy: 鉄道wwy: 航路urf: 都市計画決定情報luse: 土地利用fld: 洪水浸水想定区域tnm: 津波浸水想定htd: 高潮浸水想定区域ifld: 内水浸水想定区域rfld: 土砂災害警戒区域lsld: 土砂災害警戒区域frn: 都市設備veg: 植生wtr: 水部dem: 地形brid: 橋梁tun: トンネルcons: 建設ubld: 地下街unf: 地下施設area: エリアgen: 汎用
実行例
# ドライラン(実際には登録しない)
go run . setup-city-items \
-project 01234567-89ab-cdef-0123-456789abcdef \
-system-project fedcba98-7654-3210-fedc-ba9876543210 \
-file /path/to/cities.csv \
-dryrun
# 本番実行(.envにCMS_SYSTEMPROJECTを設定している場合)
go run . setup-city-items \
-project 01234567-89ab-cdef-0123-456789abcdef \
-file /path/to/cities.csv
# 100件目から10件だけ処理
go run . setup-city-items \
-project 01234567-89ab-cdef-0123-456789abcdef \
-system-project fedcba98-7654-3210-fedc-ba9876543210 \
-file /path/to/cities.csv \
-offset 100 \
-limit 10
⚠️ 重要: ツール実行後の追加作業
setup-city-itemsツールで都市アイテムを登録した後、必ずシステムプロジェクトのworkspacesモデルにプロジェクト情報を登録してください。この登録を忘れると、FME品質検査・変換処理が実行されません。
- CMSのシステムプロジェクトにアクセス
workspacesモデルのアイテムを作成- 以下のフィールドを設定:
project_alias: プロジェクトのエイリアス(例:plateau-2023)project_id: プロジェクトID(-projectで指定したID)cms_api_key: CMSのAPIキーconverter: FMEを使用する場合はfmeまたはfme_flowを設定sidebar_access_token: サイドバーアクセストークン(任意の文字列)- その他必要な設定
もし、CityGMLデータを登録してもFME品質検査・変換処理が実行されない(LOD抽出処理のみ実行される)場合は、以下を確認してください:
- システムプロジェクトの
workspacesモデルに、対象プロジェクトのアイテムが存在するか converterフィールドがfmeまたはfme_flowに設定されているか- サーバーログに
failed to get metadata: not foundエラーが出ていないか
2. copy-related
関連データセットアイテムを、あるプロジェクトから別のプロジェクトにコピーします。
使い方
go run . copy-related \
-src <SOURCE_PROJECT_ID> \
-target <TARGET_PROJECT_ID> \
[-base <CMS_BASE_URL>] \
[-token <CMS_TOKEN>] \
[-offset <NUMBER>] \
[-limit <NUMBER>] \
[-cache <CACHE_PATH>] \
[-force] \
[-dryrun]
オプション
| オプション | 必須 | 説明 | デフォルト |
|---|---|---|---|
-src |
✓ | コピー元プロジェクトID | - |
-target |
✓ | コピー先プロジェクトID | - |
-base |
CMS Base URL | 環境変数CMS_BASEURL |
|
-token |
CMS認証トークン | 環境変数CMS_TOKEN |
|
-offset |
処理開始位置 | 0 | |
-limit |
処理する最大件数 | 0(無制限) | |
-cache |
キャッシュディレクトリのパス | - | |
-force |
既存データがあっても強制実行 | false | |
-dryrun |
実際にはコピーせずに動作確認のみ | false |
実行例
# ドライラン
go run . copy-related \
-src 01234567-89ab-cdef-0123-456789abcdef \
-target 76543210-fedc-ba98-7654-3210fedcba98 \
-dryrun
# 本番実行(キャッシュ使用)
go run . copy-related \
-src 01234567-89ab-cdef-0123-456789abcdef \
-target 76543210-fedc-ba98-7654-3210fedcba98 \
-cache ./cache
3. upload-assets
指定ディレクトリ内のZIPファイルをCMSに一括アップロードします。
使い方
go run . upload-assets \
-project <PROJECT_ID> \
-target <DIRECTORY_PATH> \
[-base <CMS_BASE_URL>] \
[-token <CMS_TOKEN>]
オプション
| オプション | 必須 | 説明 | デフォルト |
|---|---|---|---|
-project |
✓ | CMSプロジェクトID | - |
-target |
✓ | アップロード対象ディレクトリ | - |
-base |
CMS Base URL | 環境変数CMS_BASEURL |
|
-token |
CMS認証トークン | 環境変数CMS_TOKEN |
実行例
go run . upload-assets \
-project 01234567-89ab-cdef-0123-456789abcdef \
-target /path/to/assets/
注意: .zip拡張子のファイルのみがアップロードされます。
4. migrate-v1
PLATEAU VIEW v1からv3へのデータ移行用ツールです。指定されたリストファイルに基づいてファイルをダウンロードし、ZIPアーカイブを作成します。
使い方
go run . migrate-v1 \
-list <LIST_FILE_PATH> \
-base <BASE_URL> \
-output <OUTPUT_DIRECTORY> \
[-prefix <PREFIX>] \
[-offset <NUMBER>] \
[-wetrun]
オプション
| オプション | 必須 | 説明 | デフォルト |
|---|---|---|---|
-list |
✓ | ファイルリストのパス | - |
-base |
✓ | ダウンロード元のベースURL | - |
-output |
✓ | 出力先ディレクトリ | - |
-prefix |
フィルタリング用のプレフィックス | - | |
-offset |
処理開始位置 | 0 | |
-wetrun |
実際にダウンロードを実行(指定しない場合はドライラン) | false |
実行例
# ドライラン
go run . migrate-v1 \
-list /path/to/list.txt \
-base https://old-server.example.com \
-output ./output
# 本番実行
go run . migrate-v1 \
-list /path/to/list.txt \
-base https://old-server.example.com \
-output ./output \
-wetrun
トラブルシューティング
エラー: "CMS base URL is required"
環境変数CMS_BASEURLが設定されていないか、-baseオプションが指定されていません。
解決方法:
# .envファイルに設定(推奨)
cat >> server/.env << EOF
REEARTH_PLATEAUVIEW_CMS_BASEURL=https://your-cms-url.com
REEARTH_PLATEAUVIEW_CMS_TOKEN=your-token-here
REEARTH_PLATEAUVIEW_CMS_SYSTEMPROJECT=your-system-project-id
EOF
# または、コマンドで直接指定
go run . setup-city-items \
-base https://your-cms-url.com \
-token your-token-here \
-system-project your-system-project-id \
...
エラー: "CMS system project ID is required"
システムプロジェクトIDが設定されていません。
解決方法:
.envファイルにREEARTH_PLATEAUVIEW_CMS_SYSTEMPROJECTを追加するか、-system-projectオプションで指定してください:
# .envファイルに追加
echo "REEARTH_PLATEAUVIEW_CMS_SYSTEMPROJECT=your-system-project-id" >> server/.env
# または、コマンドで指定
go run . setup-city-items -system-project your-system-project-id ...
エラー: "city items already exist"
既に都市アイテムが存在しています。
解決方法:
既存データを上書きする場合は-forceオプションを追加してください:
go run . setup-city-items -force ...
エラー: "invalid header"
CSVファイルのヘッダーが正しくありません。
解決方法: CSVファイルのヘッダー行に以下の必須カラムがあることを確認してください:
prefcitycity_en
CSVファイルのエンコーディングエラー
CSVファイルがUTF-8でエンコードされていることを確認してください。
解決方法(macOS/Linux):
# ファイルのエンコーディングを確認
file -I your-file.csv
# Shift-JISからUTF-8に変換
iconv -f SHIFT-JIS -t UTF-8 input.csv > output.csv
開発者向け情報
コードの場所
- メインエントリーポイント:
tool.go - 各ツールの実装:
setup-city-items.go→../cmsintegration/cmsintsetup/setup_cities.gocopy-related-items.go→../cmsintegration/cmsintsetup/copy_related.goupload-assets.gomigrate-v1.go
テスト
cd server
go test ./cmsintegration/cmsintsetup/...
新しいツールの追加方法
tool/ディレクトリに新しいファイルを作成(例:new-tool.go)- 関数を実装:
func newTool(conf *Config, args []string) error { // 実装 return nil } tool.goのMain関数に新しいケースを追加:case "new-tool": err = newTool(conf, args)
ライセンス
APACHE-2.0