Brightwayデータベースオブジェクトを使用して交換データにアクセスすることについて質問があります。私はimport Brightway2 as bw
を持ち、LCIデータベースがあるプロジェクトで午前と仮定します。Brightway2データベースオブジェクトの交換データへのアクセス
[In] bw.databases
[Out] Brightway2 databases metadata with 2 objects:
biosphere3
ecoinvent 3_2 APOS
私は活動に関する情報を取得することができます:
[In] ei32 = bw.Database('ecoinvent 3_2 APOS')
someActivity = ei32.get('00c71af952a1248552fc2bfa727bb6b5')
someActivity
[Out] 'market for transport, freight, inland waterways, barge with reefer, cooling' (ton kilometer, GLO, None)
私は、次のデータへのアクセス権を持っているようだ:
[In] list(someActivity)
[Out] ['database',
'production amount',
'name',
'reference product',
'classifications',
'activity',
'location',
'filename',
'parameters',
'code',
'authors',
'paramters',
'comment',
'flow',
'type',
'unit',
'activity type']
'exchanges'
が存在しないことに注意してください。この作品ながら、実際には:
[In] someActivity.get('location')
[Out] 'GLO'
または、同等:'exchanges'
ため'location'
を変更
[In] someActivity['location']
[Out] 'GLO'
は何も(最初の構文)またはキーエラー(2番目の構文)を得ません。
そしてBrightwayコードでまだI have seen this syntax:今のところ
exchanges = ds.get('exchanges', [])
、Exchangeデータにアクセスするための私の唯一の方法は.load
(辞書にデータベース全体をロード)データベースにある、活動のキーを作成し、次のように交流を呼び出します。それは正常に動作しますが、私は交換データがデータベースにある知っているので、私は確信している
[In] ei32Loaded = ei32.load()
activities = sorted(ei32Loaded.keys())
ei32Loaded[activities[42]]['exchanges']
[Out] [{'activity': '0fb6238a-e252-4d19-a417-c569ce5e2729', 'amount': xx,
...}]
ロードせずにそれを取得するためのメソッドが存在しなければなりません。少なくともsomeActivity.get('exchanges', [])
が私にとってうまくいかない理由を知りたいのですが。 ありがとう!
私は特定の交換を念頭に置いています(例えば、私は 'input'と' output'が何であるか知っています)交換を直接 "取得"する機能はありますか?今、私はこれを、(1) 'output'で参照されているアクティビティを' get'する、(2) 'input'が一致するまですべてのエクスチェンジを繰り返すことで行います。 – MPa
入出力による交換を行うための明視野の機能はありません。まず第一に、同じ入力と出力を持つ複数の交換が可能です。しかし、 'bw2data.backends.default.schema'から' ExchangeDataset'をインポートし、それを直接照会することができます。 –