Wäre das nicht ein Anstoß, selbst Programmierung zu erlernen ? Ich habe mit VB 6 angefangen und das funktioniert seit XP bis W11 immer noch. Vor 1 Jahr hatte ich mir genau das Gegenteil vom dem, was Du suchst programmiert, nämlich gpx ---> poly. VB6 ist veraltet, aber leicht zu erlernen. Downloads gibt es scheinbar immer noch. https://winworldpc.com/product/microsoft-visual-bas/60. Selbst falls Du keinen Freischaltkey erwerben kannst, kann man alle Programme einfach in der VB6 IDE laufen lassen, was seinen Zweck erfüllt. Und es gibt unzählige Code -Schnipsel im Internet. Zum Lust machen hier der Code für gpx->poly :
Option Explicit
Dim vEnde
Dim vGPX
Dim vPoly
Dim nr
Private Sub CommandPolyfile_Click()
Dim fs As New FileSystemObject
CommonDialog1.DialogTitle = "GPX File auswaehlen"
CommonDialog1.Filter = ("GPX-Files|*.gpx")
CommonDialog1.ShowOpen
vGPX = CommonDialog1.FileName
Select Case fs.GetExtensionName(vGPX)
Case "GPX", "gpx", "Gpx"
Case Else
MsgBox "kein GPX-File ausgewählt"
Exit Sub
End Select
vPoly = fs.GetParentFolderName(vGPX) & "\" & fs.GetBaseName(vGPX) & ".poly"
Dim xDOC As DOMDocument60
Set xDOC = New DOMDocument60
xDOC.async = False
Dim xNode As IXMLDOMNode
If xDOC.Load(vGPX) Then
nr = FreeFile
If fs.FileExists(vPoly) Then Kill vPoly
Open (vPoly) For Output As #nr
Print #nr, fs.GetBaseName(vGPX)
Print #nr, "Region"
DisplayNode xDOC.childNodes, 0
Else
' Das Dokument konnte nicht geladen werden.
Dim strErrText As String
Dim xPE As IXMLDOMParseError
' Abrufen des ParseError-Objekts
Set xPE = xDOC.parseError
With xPE
strErrText = "Your XML Document failed to load" & _
"due to the following error." & vbCrLf & _
"Error #: " & .errorCode & ": " & xPE.reason & _
"Line #: " & .Line & vbCrLf & _
"Line Position: " & .linepos & vbCrLf & _
"Position In File: " & .filepos & vbCrLf & _
"Source Text: " & .srcText & vbCrLf & _
"Document URL: " & .url
End With
MsgBox strErrText, vbExclamation
End If
Print #nr, vEnde
Print #nr, "END"
Print #nr, "END"
Close #nr
MsgBox "Fertig. polyfile wurde gespeichert unter " & vPoly
End Sub
Function lon(xx As String)
Dim k As Integer
Dim l As Integer
Dim Vorzeichen As String
If Left(xx, 1) = "-" Then
lon = Left(xx, 9)
k = InStr(2, xx, ".") 'falsch ! k zält immer von vorn
l = Len(xx) - 1
Vorzeichen = "-"
Else 'istpositiv
lon = Left(xx, 8)
k = InStr(1, xx, ".")
l = Len(xx)
Vorzeichen = ""
End If
Select Case k
Case 2, 3 And Vorzeichen = "-" 'einstellig
lon = lon & "E+00"
Case 3 '2 stellig
lon = Left(xx, 1) & "." & Mid(xx, 2, 1) & Mid(xx, 4, 5)
lon = lon & "E+01"
Case 4 And Vorzeichen = "-" '2 stellig
lon = Left(xx, 2) & "." & Mid(xx, 3, 1) & Mid(xx, 5, 5) 'komma versetzen
lon = lon & "E+01"
Case 4 '3 stellig
lon = Left(xx, 1) & "." & Mid(xx, 2, 2) & Mid(xx, 5, 4)
lon = lon & "E+02"
Case 5 And Vorzeichen = "-" '3 stellig
lon = Left(xx, 2) & "." & Mid(xx, 3, 2) & Mid(xx, 6, 4) '3 stellig und komma versetzen
lon = lon & "E+02"
End Select
'lon = Vorzeichen & lon
End Function
Public Sub DisplayNode(ByRef Nodes As IXMLDOMNodeList, _
ByVal indent As Integer)
Dim xNode As IXMLDOMNode
Dim vlon As String
Dim vlat As String
Dim Bo As Boolean
Bo = False
indent = indent + 1
For Each xNode In Nodes
DoEvents
If xNode.nodeType = 1 Then
If xNode.nodeName = "trkpt" Then
vlat = xNode.Attributes(0).nodeValue 'istlänge,noch auf 6 Nachkommastellen kürzen
vlon = xNode.Attributes(1).nodeValue
vlat = lon(vlat)
vlon = lon(vlon)
Print #nr, " "; vlon & " " & vlat
If Bo = False Then
vEnde = vlon & " " & vlat
Bo = True
End If
End If
DoEvents
End If
If xNode.hasChildNodes Then
DisplayNode xNode.childNodes, indent
End If
Next xNode
End Sub
Alles anzeigen