Menu

Coppell Technologies
Fiwareで都市OSを動かしてみよう
NGSI-LDにも挑戦
データ仕様の現状と課題
スマートシティの標準規定(案)
データモデルのユースケース


Column
Link集
用語集


Coppell

Technologies

ctoj (シートゥージェイ)


■機能概要
 csvファイルをPPP共通データ仕様協議会が定めるNGSI V2の規格に合致するJSON文に変換します。JSON文はNormalized形式と呼ばれる形式であり、keyValues形式はサポートしていません。

■価格:無償

■入手方法
 このリンクからPythonのソースプログラムを入手できます。このファイルはzip圧縮されています。詳細は後述します。ファイル内のコードはUTF-8なので、ブラウザ等で開くと文字化けする場合があります。ダウンロード後に解凍し、テキストエディタやVS Codeで開く事をお勧めします。また、このプログラムは以下のモジュールを使います。これらは次ページに記載するmy_packageに格納して使います。圧縮ファイルを解凍すると自動的にディレクトリは作成されます。
  • NGSIv2: NGSIv2関連の処理を司るクラス群
  • address: 日本の住所の処理を司るクラス
  • kanji_converter.py: 漢字の変換などを行うクラス

■特記事項
 このプログラムは随時書き換えます。また、互換性は保証しません。
 address.pyおよびkanji_converter.pyの原著作者は渡邊泉氏です。渡邊氏は本ツールのソースプログラムとは関係なく、事前に断りなく如何なる変更も行う権利を有しています。
 一方、ソースプログラムは著作物であり、不具合があっても調査や修正を行う義務を持つものではありません。


■制約事項
 現バージョンでは、以下の機能はサポートしておりません。
  • geo:jsonを変換する機能
  • keyValue形式に変換する機能
 JSON Schemaの説明にもサポートしていない機能に関する記述が有りますので、ご確認ください。

■機能詳細
入力ファイル

inputfile 入力となるcsvファイルのファイル名を指定します。コードはUTF-8。csvはカンマ区切りです
inputdir inputfileが存在するティレクトリのバスを指定します。省略すると、dirで指定したディレクトリになります
schemafile 拡張JSON Schemaのファイルを指定します。拡張JSON Schemaとは、JSON SchemaにcsvからJSONに変換するための指定を追加したものです
schemadir schemaparamfileが存在するティレクトリのバス。省略すると、dirで指定したディレクトリになります
<Entity type>file csvからJSONに変換する際に参照するファイルのファイル名。<Entity type>は共通データ仕様で定めているEntity type。大括弧で囲んだ形式。本ツールで生成する場合はjsontype=arraayて生成する
<Entity type>dir <Entity type>fileが存在するティレクトリのバス。省略すると、dirで指定したディレクトリになります
addressfile デジタル庁が配付している自治体の名称の一覧のファイル名を指定します。既定値は'mt_city_all.csv'です。
addressdir addressfileが存在するティレクトリのバス。省略すると、dirで指定したディレクトリになります
dir 各種ファイルが存在するパスの既定値
Output

outputfile :出力するJSONファイルのファイル名を指定します。コードはUTF-8
outputdir outputfileが存在するティレクトリのバスを指定します。省略すると、dirで指定したディレクトリになります
logfile :出力するログファイルのファイル名を指定します。コードはUTF-8。既定値はctojlog.txt
logdir logfileが存在するティレクトリのバスを指定します。省略すると、dirで指定したディレクトリになります
オプション

jsontype inputfileのJSON文の形式。JSONとしては以下の3種類をサポートする

jsontype=entity : 波括弧に囲まれるひとつのEntity
outputfileの例。複数行あると、JSONの文法としては正しくない事に留意が必要

       {
           "id": "urn:ngsi-ld:Land:0000000002002-0000",
           "type": "Land",
           (中略)
       }
jsontype=array : 角かっこに囲まれるEntityの列
inputfileの例。この例では3件のEntityが存在する。outmode=createの場合はoutputfileには項目名の行含め4行のcsvファイルが出力され、outmode=append場合にはoutputfileには3行のcsvデータが追記される

[
       {
           "id": "urn:ngsi-ld:Land:0000000002002-0000",
           "type": "Land",
           (中略)
       },
       {
           "id": "urn:ngsi-ld:Land:0000000002002-0001",
           "type": "Land",
           (中略)
       },
       {
           "id": "urn:ngsi-ld:Land:0000000002002-0002",
           "type": "Land",
           (中略)
       }
]
jsontype=batch : op/updateに対し指定する、一括登録のためのJSON文(既定値)
inputfileの例。この例では3件のEntityが存在する。outmode=createの場合はoutputfileには項目名の行含め4行のcsvファイルが出力され、outmode=append場合にはoutputfileには3行のcsvデータが追記される

{
   "actionType": "append",
   "entities": [
       {
           "id": "urn:ngsi-ld:Land:0000000002002-0000",
           "type": "Land",
           (中略)
       },
       {
           "id": "urn:ngsi-ld:Land:0000000002002-0001",
           "type": "Land",
           (中略)
       },
       {
           "id": "urn:ngsi-ld:Land:0000000002002-0002",
           "type": "Land",
           (中略)
       }
   ]
}


更新履歴
改版日 改版内容
2024-02-10 初版公開
2024-02-10 日本の住所を都道府県、市区町村、それ以下に分離する機能を追加。詳細は拡張json schemaのformatに対するPostalAddress指定を参照してください。
ダウンロードをzipに変更しました
2024-02-14 エラーメッセージ修正。情報追加、IDのユニーク化など
幾つかのメソッドの共通関数としての切り出しなど
2024-02-26 ##非互換があります##
既存のEntityを検索する処理がネストしても良い様に、dataSourceの指定を導入しました、これにより、既存の拡張スキーマは書き換えが必要となります。新たな仕様については、Json schemaの拡張表現を参照してください。