1
extension of OpenCPNで使用されているカスタムgpxファイルを標準のgpxファイルに変換しようとしています。gpxpyでto_xml()の拡張機能が出力されない
できるだけ多くのフィールドを拡張子を含めて保持したいと考えています。 私はElementTreeを使ってgpxファイルから拡張子を読み込み、gpxpyを使ってそれらをgpxオブジェクトに追加することができました。
gpxpy.to_xml()を使用すると、出力は正しく表示されますが、拡張子は付きません。
例:
出典:
import xml.etree.ElementTree
import gpxpy.gpx
f = xml.etree.ElementTree.parse('odraw.gpx')
gpx = gpxpy.gpx.GPX()
gpx.creator = "a"
odpoint = f.find("{http://www.opencpn.org}path").find("{http://www.opencpn.org}ODPoint")
w1 = gpxpy.gpx.GPXWaypoint()
w1.latitude = odpoint.attrib.get('lat')
w1.longitude = odpoint.attrib.get('lon')
w1.extensions = {odpoint.find('{http://www.opencpn.org}guid')}
w1.type = 'WPT'
gpx.waypoints.append(w1)
print(gpx.to_xml())
入力ファイル:(GUID拡張子が欠落している)
<?xml version="1.0"?>
<OCPNDraw version="0.1" creator="OpenCPN" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:opencpn="http://www.opencpn.org">
<opencpn:path>
<opencpn:type>Boundary</opencpn:type>
<opencpn:ODPoint lat="47.0" lon="59.0">
<opencpn:type>Boundary Point</opencpn:type>
<opencpn:guid>4fbfffff-806d-4317-b245-4e6e2d190000</opencpn:guid>
</opencpn:ODPoint>
</opencpn:path>
</OCPNDraw>
出力:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd" version="1.0" creator="a">
<wpt lat="47.0" lon="59.0">
<type>WPT</type>
</wpt>
</gpx>
AttributeError: 'set'オブジェクトに 'items'属性がありません – CaptainNemo
@CaptainNemo weird、問題を開いてhttpsにスタックトレースを貼り付けることができますか? //github.com/tkrajina/gpxpy/issues ...問題を見つけ出すことができるかどうかがわかります。 – puzz