lxml.objectifyを使用するPyKMLを修正しようとしています。トラックノードが追加されると、これはデフォルトのstr()
ビヘイビアの文字列に変換されます。私は -kurtpythonでlxml.objectifyを使用してノードに追加された値をチェックして固定する
0
A
答えて
0
作成し、「(xx.xxxx、yy.yyyy」)
from pykml.factory import GX_ElementMaker as GX
track = GX.Track(id='track_%d' % group_num)
for pt in group:
when = datetime.datetime.utcfromtimestamp(pt['ts'])
track.append(KML.when(when)) # WHEN?
for pt in group:
track.append(GX.coord((pt['x'],pt['y']))) # <-- trouble here
感謝をリストやタプルのアペンドをキャッチし、のではなく、適切な場所分離ラインに変換したいのですが名前空間情報を持つElementMakerクラスをクリーンアップします。次に、ノード名をメソッドとして持つサブクラスを作成します。その方法では、すべての奇妙なケースを処理します。次に、そのノード名の場所に入る文字列を作成し、そのノード名を持つクリーンなElementMakerクラスのインスタンスを返します。
def indexable_levels(args):
#print 'args:',args
levels = 0
while True:
if isinstance(args,str): break
try:
args = args[0]
levels += 1
except:
break
#print ' levels ->',levels
return levels
# Create a factory object for the KML Google Extension namespace
_GX_ElementMakerSimple = objectify.ElementMaker(
annotate=False,
namespace=nsmap['gx'],
nsmap={'gx': nsmap['gx']},
)
class _GX_ElementMaker (objectify.ElementMaker):
'KML ElementMaker with overloads for custom text payloads like coordinates'
def coord(self, *args):
#print 'start coord: "%s"' % (str(args)), type(args), len(args)
levels = indexable_levels(args)
if levels == 1 and len(args) == 1:
# This case is really redundant with the next
assert isinstance(args[0],str)
return _GX_ElementMakerSimple.coord(args[0])
if levels == 1:
return _GX_ElementMakerSimple.coord(' '.join([str(item) for item in args]))
if levels == 2:
# ((-121.583851, 37.386052),)
assert(len(args)==1)
return _GX_ElementMakerSimple.coord(' '.join([str(item) for item in args[0] ]))
assert(False)
# Create a factory object for the KML Google Extension namespace
GX_ElementMaker = _GX_ElementMaker(
annotate=False,
namespace=nsmap['gx'],
nsmap={'gx': nsmap['gx']},
)
関連する問題
- 1. ツリービューを使用して子ノードに子ノードを追加する
- 2. フォームを使用してPHPを使用してXMLにノードを追加する
- 3. Asp.netとC#を使用してネストされたXMLノードをxmlファイルに追加
- 4. Pythonを使用してXMLに新しいノードを追加します。
- 5. XSLTを使用してXSLTを使用してxmlの既存のノードに値を追加するxmlに
- 6. ウェブキットオーバーフロースクロールを使用してモバイルデバイスに位置固定された
- 7. 固定ヘッダーを使用してテーブル本体にスクロールを追加するAngularjs
- 8. フォームを使用してノードにファイルを追加する
- 9. ノードを使用してリンクリストにインスタンスを追加する
- 10. DataGridViewをループし、行がチェックされている値を追加します
- 11. selectize.jsを使用して、実行時に新しく追加されたオプションの値を設定する方法
- 12. prestashop注文に固定税を追加してください
- 13. PythonでPyQt4を使用してQTableWidgetにデータを追加する
- 14. 固定値に変数を追加してオブジェクトを作成する方法は?
- 15. インポートされたデータに固定値の列を追加する方法Googleスプレッドシート
- 16. col- *を使用してコンテナに固定された使用位置
- 17. 固定されたUITableViewに新しいセルを追加するには?
- 18. Whileループを使用してPythonでファイルに追加/追加する
- 19. pandas.DataFrame.plotを使用してプロットに追加されたテーブルのフォーマット
- 20. TRANSACT-SQLを使用してXMLにノードを追加
- 21. XSLT - すべてのノードをコピーし、コピーされたノードに余分なノードを追加する
- 22. リンクされたリストにノードを追加しようとしています
- 23. Pythonを使用してubuntuにディレクトリを追加します
- 24. Maya APIを使用してノードが特定のプラグに接続されているかどうかをチェック
- 25. pythonを使用してファイルをExcelに追加する方法
- 26. Pythonを使用してDataGrid WPFにアイテムを追加する
- 27. pythonデコレータを使用してメソッドに属性を追加する
- 28. ノード値を更新してノードをXMLファイルに追加する方法は?
- 29. JQueryを使用してテーブル内に行を動的に追加すると、未定義が追加される
- 30. javascriptを使用してチェックされたラジオボタンの値を取得する