2011-07-22 6 views

答えて

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クラスのインスタンスを返します。

http://code.google.com/r/schwehr-pykml/source/browse/src/pykml/factory.py?spec=svn05a10cef3fd3c430389e8aca1313a20da932e565&r=05a10cef3fd3c430389e8aca1313a20da932e565

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']}, 
) 
関連する問題