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]