Brightway データベース オブジェクトを使用した交換データへのアクセスについて質問があります。私import Brightway2 as bw
は、LCI データベースがあるプロジェクトに参加しているとします。
[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'
または、同等に:
[In] someActivity['location']
[Out] 'GLO'
'location'
forを変更して'exchanges'
も、何も生成されない (最初の構文) または重要なエラーが発生する (2 番目の構文)。
それでも、Brightway コードで次の構文を見たことがあります。
exchanges = ds.get('exchanges', [])
今のところ、交換データにアクセスする唯一の方法は.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', [])
うまくいかないのか知りたいです。ありがとう!