Auf Thema antworten

Etrex 10 downloader


hier biete ich euch (wie auch im openstreetmap Forum) den Quellcode für Autoit für einen automatisierten Download an.


vorweg, vielen Dank an unixasket (aus dem openstreetmap Forum und anderen) für die Anregung zu diesem Projekt.



Funktion:

nach Eingabe der begrenzenden Koordinaten, lädt es von einem overpass-Server die gewünschten Daten (Strassen, Wasserwege, Ortsnamen)

und erzeugt die gmapsupp.img innerhalb weniger Sekunden.


was ist neu?

ich habe keine einfache Möglichkeit im Netz gefunden, es gibt batch Dateien und Scripte, ich wollte aber ein Möglichkeit für Computerlaien haben.

auch habe ich bisher nur Anleitungen gefunden mittels 'osmosis' aus heruntergeladenen grossen Karten kleine auszuschneiden, dieses

Script verwendet die XAPI Overpass Schnittstelle um sich in Sekunden nur die benötigten Daten herunterzuladen.


was wird benötigt?

Autoit mit Scite Editor

osmconvert

mkgmap


wie erzeugt man eine lauffähige Version?

zunächst ein Verzeichnis anlegen in das man den Quelltext in ein Textfile 'Etrex.au3' speichert

ein Unterverzeichnis 'tool' anlegen und dorthin osmconvert verschieben und mkgmap entpacken.

(in 'tool' befinden sich jetzt osmconvert.exe und mkgmap.jar)

Die 'Etrex.au3' im Editor Scite öffnen.

F7 drücken, daraufhin wird eine Anwendung (exe) erstellt.


wie nutzt man es?

Die 'Etrex.exe' ausführen.

Der Button 'OSM-Export' öffnet die openstreetmap Seite.

den gewünschten Kartenbereich markieren

die vier Koordinaten in die 4 Felder eintragen

Button 'Start!' drücken


was fehlt noch?

die abschliessende Funktion, kopieren auf Etrex ist noch nicht drin,

das mach man noch per Hand.


Viel Spass beim ausprobieren, bei mir funktioniert es...


nogonogo


(da ich eine Anwendung erstellen wollte, die auch Anfänger nachvollziehen können, habe ich Autoit gewählt,

das gibt es leider nicht für Linux, Java beherrsche ich aber leider nicht, sorry!)


[CODE]#include <ButtonConstants.au3>

#include <EditConstants.au3>

#include <GUIConstantsEx.au3>

#include <StaticConstants.au3>

#include <WindowsConstants.au3>

#include <Process.au3>


$Form1_1 = GUICreate("Form1", 615, 438, 349, 256)

$Input_Left = GUICtrlCreateInput("10.3429", 184, 128, 137, 24)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Input_Bottom = GUICtrlCreateInput("53.7966", 320, 152, 137, 24)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Input_Right = GUICtrlCreateInput("10.4103", 456, 128, 137, 24)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Input_Top = GUICtrlCreateInput("53.8204", 320, 104, 137, 24)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Button_DL_OSM = GUICtrlCreateButton("Start!", 384, 304, 91, 41)

GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")


$CheckboxStrassen = GUICtrlCreateCheckbox("Strassen", 344, 200, 97, 17)

GUICtrlSetState(-1, $GUI_CHECKED)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

GUICtrlSetTip(-1, "sollen Strassen mit importiert werden?")

$CheckboxWasser = GUICtrlCreateCheckbox("Wasserstrassen", 344, 232, 121, 17)

GUICtrlSetState(-1, $GUI_CHECKED)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

GUICtrlSetTip(-1, "sollen Wasserwege mit importiert werden?")

$CheckboxOrte = GUICtrlCreateCheckbox("Ortsnamen", 344, 264, 110, 17)

GUICtrlSetState(-1, $GUI_CHECKED)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

GUICtrlSetTip(-1, "sollen die Ortsnamen mit importiert werden?")


$Label1 = GUICtrlCreateLabel("Etrex 10 downloader", 160, 16, 244, 33)

GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")

$Label2 = GUICtrlCreateLabel("1. die begrenzenden Koordinaten eingeben. z.B. durch OSM ermittelt:", 48, 64, 409, 20)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Bt_open_OSM = GUICtrlCreateButton("OSM-Export", 496, 56, 75, 25)

$Label3 = GUICtrlCreateLabel("2. hier eintragen:", 48, 131, 101, 20)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Label4 = GUICtrlCreateLabel("3. welche Information soll die Karte enthalten", 48, 200, 264, 20)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Label5 = GUICtrlCreateLabel("4. download, Garminkonvert, kopieren auf etrex 10", 48, 312, 298, 20)

GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

$Group1 = GUICtrlCreateGroup("", 8, 392, 601, 41)

$Label_Status = GUICtrlCreateLabel("Status", 15, 403, 594, 25)

GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState(@SW_SHOW)



Local $Left, $bottom, $right, $top, $BB

Local $success, $merge_files


While 1

    $nMsg = GUIGetMsg()

    Switch $nMsg

        Case $GUI_EVENT_CLOSE

            Exit

        Case $Bt_open_OSM

            ShellExecute("http://www.openstreetmap.org/export")

        Case $Button_DL_OSM

            Download_OSM()


    EndSwitch

WEnd


Func Download_OSM()

$Left = StringReplace(GUICtrlRead($Input_Left), ",", ".")

$bottom = StringReplace(GUICtrlRead($Input_Bottom), ",", ".")

$right = StringReplace(GUICtrlRead($Input_Right), ",", ".")

$top = StringReplace(GUICtrlRead($Input_Top), ",", ".")

$BB= $Left & "," & $bottom & "," & $right & "," & $top

$merge_files = ''


FileDelete("tools\raw_highway.osm")

FileDelete("tools\raw_waterway.osm")

FileDelete("tools\raw_place.osm")


;~ ;Abfrage welche Bestandteile in die map sollen

;~ ;erst die Wege

If GUICtrlRead($CheckboxStrassen)= $GUI_CHECKED Then

    GUICtrlSetData($Label_Status, "Download Wege ")

    $success= (InetGet("http://overpass.osm.rambler.ru/cgi/xapi_meta?way[highway=*][bbox="& $BB &"]", "tools\raw_highway.osm"))

    If $success = 0 Then

        GUICtrlSetData($Label_Status, "Download Wege gescheitert!")

    Else

        GUICtrlSetData($Label_Status, "Download Wege erfolgreich!")

    EndIf

EndIf

;dann die Wasserstrassen

If GUICtrlRead($CheckboxWasser)= $GUI_CHECKED Then

    GUICtrlSetData($Label_Status, "Download Flüsse ")

    $success= (InetGet("http://overpass.osm.rambler.ru/cgi/xapi_meta?way[waterway=*][bbox="& $BB &"]", "tools\raw_waterway.osm"))

    If $success = 0 Then

        GUICtrlSetData($Label_Status, "Download Flüsse gescheitert!")

    Else

        GUICtrlSetData($Label_Status, "Download Flüsse erfolgreich!")

    EndIf

EndIf

;dann die Ortsnamen

If GUICtrlRead($CheckboxOrte)= $GUI_CHECKED Then

    GUICtrlSetData($Label_Status, "Download Ortsnamen ")

    $success= (InetGet("http://overpass.osm.rambler.ru/cgi/xapi_meta?node[place=*][bbox="& $BB &"]", "tools\raw_place.osm"))

    If $success = 0 Then

        GUICtrlSetData($Label_Status, "Download Ortsnamen gescheitert!")

    Else

        GUICtrlSetData($Label_Status, "Download Ortsnamen erfolgreich!")

    EndIf

EndIf


;die einzelnen OSM-Dateien verbinden

If GUICtrlRead($CheckboxStrassen) = $GUI_CHECKED Then

    $merge_files = "tools\raw_highway.osm"

EndIf

If GUICtrlRead($CheckboxWasser) = $GUI_CHECKED Then

    $merge_files = $merge_files & " tools\raw_waterway.osm"

EndIf

If GUICtrlRead($CheckboxOrte) = $GUI_CHECKED Then

    $merge_files = $merge_files & " tools\raw_place.osm"

EndIf


GUICtrlSetData($Label_Status, "starte merge")

_RunDos('tools\osmconvert.exe ' & $merge_files & ' -o=tools\osm.osm')

GUICtrlSetData($Label_Status, "merge ende")



GUICtrlSetData($Label_Status, "erstelle gmapsupp.img")

_RunDos('java -jar tools\mkgmap.jar --latin1 --description="OSM Karte" --family-id=9999 --gmapsupp tools\osm.osm')

GUICtrlSetData($Label_Status, "Beendet!")


EndFunc[/CODE]


Was von Socke, Bibliothek, Kuchen oder rot ist eine Farbe?
Zurück