При преобразовании al xml .objectify.StringElement в кортеж отдельные элементы остаются строками - PullRequest
0 голосов
/ 22 марта 2020

У меня есть al xml .objectify.StringElement из анализа kml с использованием pykml. Проанализировано следующим образом:

with open('btgdbgdgnh.kml') as f:
  documento = parser.parse(f).getroot().Document 

d = {}
for p in documento.Folder:
  d[p.name] = {}
  for place in p.Placemark:
        d[p.name][place.name] = []
        for pol in place.MultiGeometry.Polygon:
            d[p.name[place.name].append(pol.outerBoundaryIs.LinearRing.coordinates)

Вывод такого разбора выглядит следующим образом:

'\n                -0.458304,38.368177,0\n                -0.458486,38.368272,0\n                -0.458679,38.36836,0\n

После борьбы с несколькими библиотеками kml я решил пойти по-хакерски и попытаться отформатировать его я сам для того, чтобы накормить его для создания изящных многоугольников, таких как:

s='\n                -0.458304,38.368177,0\n      -0.458486,38.368272,0\n                -0.458679,38.36836,0\n

s = s.replace('0\n','0)|(')
s = s.replace('\n','(')
s = " ".join(s.split())
s = s.split('|')

, который выводит этот вывод:

  ['( -0.458304,38.368177,0)',
 '( -0.458486,38.368272,0)',
 '( -0.465878,38.368924,0)',
 '( -0.468405,38.368941,0)',
 '( -0.472423,38.369025,0)']

И я не могу преобразовать то, что внутри, в простой кортеж. Я попробовал ast library, но кажется устаревшим (?) Массивом numpy, который выглядел наиболее "pythoni c", например так:

results = np.fromstring(s, dtype=int, sep='|')

Но вернул пустой массив. Мое решение с самого начала кажется не очень хорошим, но я впервые использую pykml, так что это единственный способ думать, и теперь я заблудился. Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 22 марта 2020

Завершено с использованием списка:

s=str(d['erveg']['dbgbtn']) 
s = " ".join(s.split())
po = [tuple(float(j) for j in i.split(",")) for i in s.split()[1:-2]]
...