• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Import einer Liste mit Parkkoordinaten zu vielen Caches

Dingo79

Geocacher
Hallo zusammen,
ich habe aus einer Zeit, in der ich noch nicht so viel mit GSAK gearbeitet habe, eine Liste mit fast 200 einzelnen Parkkoordinaten, die ich mir mal zu Mysterys rausgesucht habe. Wie kann ich diese 200 Parking-Childs den betreffenden Geocaches als Child zuordnen?
Ich habe mal ein wenig die einschlägigen Foren durchsucht und bin auf das Makro "Waypoints to Children" gestoßen (http://gsak.net/board/index.php?showtopic=12089). Wenn ich das richtig verstanden habe, habe ich dort nur die Möglichkeit, Childs jeweils einem einzelnen Cache zuzuordnen, nicht aber eine lange Liste mit mehreren Caches?
Derzeit basiert meine Liste aus Excel mit einer Spalte mit den GC-Codes und einer Spalte mit den Parking-Koors, aber das kann man natürlich auch als CSV oder txt abspeichern...
Würd mich über eure Gedanken freuen.
LG
 

8812

Geoguru
1. Der Plural von Child ist Children
2. Du brauchst je eine Spalte für Latitude und Longitude.
Mehr dazu (wie immer) in der GSAK-Hilfe: http://gsak.net/help/hs46170.htm

Hans
 
OP
D

Dingo79

Geocacher
Hallo Hans,
danke für deinen Denkanstoß! Wenn ich dich richtig verstehe, muss ich mir ein Makro bauen, das csvget als Funktion nutzt. Als Beispielcode müsste ich diesen hier anpassen, was allerdings meine Kenntnisse bei Weitem übersteigt:

$data = GetFile("c:\temp\test.csv")
$rows = Val(CsvGet($data,"rows"))
$x = 0
Repeat
$x = $x + 1
$col3 = CsvGet("*","$x,3")
// do what ever you want with $col3
Until $x = $rows

Die test.csv, auf die dieses Makro dann zugreift, sähe dann so aus:
GC-Code,Latitude,Longitude
GC12345,N xx° xx.xxx,E 00x° xx.xxx

Wie immer schätze ich es sehr, dass deine Antworten auf einen nachhaltigen Lerneffekt ausgerichtet sind, sodass man als Threadersteller ein Erfolgserlebnis hat, das über die bloße Präsentation einer Lösung hinausgeht. Aber das hier übersteigt mein Wissen... Ich erwarte nicht, dass jemand anderes mir ein Makro schreibt; deine Antwort signalisiert mir, es gibt nicht bereits etwas Fertiges zu diesem Thema, sodass ich auch bereit bin, 2 Stunden zu investieren, um meine Daten manuell einzugeben.
Jedenfalls danke fürs Mitdenken ;-)
LG
 

8812

Geoguru
Wenn dein CSV so aussehen könnte,

Code:
GC2TZVX,9.540267,53.697683
GC6NKZH,9.481867,53.637
GC6GN9X,9.493933,53.6693
GC28F02,9.4683,53.659833
GC6J3K2,9.479583,53.683433
GC46DD1,9.475917,53.68585
GC288BX,9.4499,53.65855
GC4E0C9,9.44295,53.663467
GC45BBF,9.457083,53.68475

dann hätte ich was für dich.
 
OP
D

Dingo79

Geocacher
Hallo nochmal,
die Koors könnte ich anpassen, dazu gibt es ja Umrechnungstools. Ich nutze derzeit das in gc-com gängige Format: N 12° 34.567 E 008° 09.101.
LG
 

8812

Geoguru
Ich habe auch bei Null angefangen. Allerdings ist der Wechsel der verschiedenen Tables nicht ganz ohne. Ich habe jetzt einfach ein Makro von KaiTeam abgewandelt. Es läuft bei mir (es soll sogar die GS-Koords verwenden können). Ich habe es mit Dezimalkoords getestet und das läuft gut.
Code:
#*******************************************
# MacVersion = 0.3
# MacDescription = CSV to PP
# MacAuthor = HHL (Original by KaiTeam)
# MacFileName = CSVtoParkplatz.gsk
# MacUrl =
#*******************************************
# CSV Format = gccode, lon, lat
# No column headers | ANSI format
#*******************************************

$NumDups=0
$DupCodes=""
$ChildPrefix="PP"
MACSETTINGS Type=R FileCheck=N
WHILE TRUE
    $FormExit = form($Form1,"")
    BEGINCASE
        CASE $FormExit = "SystemExit"
        RETURN Msg="Macro Canceled"

        CASE $FormExit = "OK"
        MACSETTINGS Type=S Vars=ChildPrefix,CSVFile
        GOSUB Name=Run
        BREAK

        CASE $FormExit = "Cancel"
        RETURN Msg="Macro Canceled"
    ENDCASE
ENDWHILE

BEGINSUB Name=Run
    TRANSACTION Action=Begin
    FILEREAD File=$CSVFile
        $ParentCode=Replace($_Quote,"",Extract($Line,",",1))
        $ChildCode = Upper($ChildPrefix) + Right($ParentCode,Len($ParentCode)-2)
        $Lat=Extract($Line,",",3)
        $Lon=Extract($Line,",",2)
        $data=$Lat + " " + $Lon
        $Coordinates=GCalc($Data,"FormatDegrees")
        $Lat=Extract($Coordinates,";",1)
        $Lon=Extract($Coordinates,";",2)

        $Duplicate=Sqlite("sql","Select cCode from Waypoints Where cCode='$ChildCode'")
        IF $Duplicate<>""
            $NumDups=$NumDups + 1
            $DupCodes=$DupCodes + " " + $ParentCode
        ENDIF


        IF seek($ParentCode) AND $Duplicate=""
            $cName=$d_Name + " " + "Final"
            TABLE Active=Waypoints Scope=Parent
            ADDNEW
            $d_cCode = $ChildCode
            $d_cType = "Parking Area"
            $d_cLat = "$Lat"
            $d_cLon = "$Lon"
            $d_cName=$cName
        ENDIF
        TABLE Active=Caches
        IF $Duplicate=""
            $d_UserFlag=TRUE
        ENDIF
        $Duplicate=""
    ENDREAD
    TRANSACTION Action=End

    IF $NumDups>0
        MSGOK Msg=$NumDups duplicate final waypoints were skipped on these caches $_CrLf$DupCodes. Caption=FYI
        CLIP Data=$DupCodes
    ENDIF

ENDSUB

<Data> VarName=$form1
#********************************************************************
# Form generated by GSAK form designer on Tue 11-Aug-2015 11:14:47
#********************************************************************

Name = Form1
  Type = Form
  Caption = CSV to Parking Area
  Height = 176
  Width = 500

Name = OK
  Type = Button
  Height = 25
  Left = 123
  Top = 100
  Width = 75
  Taborder = 8
  Caption = OK

Name = Cancel
  Type = Button
  Height = 25
  Left = 294
  Top = 100
  Width = 75
  Taborder = 9
  Caption = Cancel

Name = Label1
  Type = Label
  Height = 16
  Left = 8
  Size = 10
  Top = 25
  Width = 120
  Caption = Select the CSV file:

Name = CSVFile
  Type = File
  Height = 21
  Left = 122
  Top = 23
  Width = 361
  Taborder = 12

Name = Label2
  Type = Label
  Height = 17
  Left = 8
  Size = 10
  Top = 63
  Width = 317
  Caption = Enter Two Letter Prefix to Use for the Child Waypoint:

Name = ChildPrefix
  Type = Edit
  Height = 21
  Left = 324
  Top = 61
  Width = 37
  Taborder = 13

<enddata>
 

8812

Geoguru
Btw: bitte stelle solche Anfragen doch im GSAK-Forum. Man hat dort sehr viel bessere Möglichkeiten Makrocode darzustellen und kann mit entsprechenden Tags auch direkt zu einem Forum-Posting eines Makros verlinken. Das ist insgesamt sehr viel geschmeidiger als hier.

Hans
 

8812

Geoguru
Außerdem kann man in diesem Board keine drei Sekunden seine Posts editieren. Das ist bei fehlerhaftem (Vertipper) Code ziemlich dumm.

Hans
 
OP
D

Dingo79

Geocacher
Wow... Alle Achtung! Gaaanz herzlichen Dank, das erspart mir einiges! Ich hätte wirklich nicht erwartet, dass du respektive jemand mir hier eine Lösung bastelt, aber dieser Thread wird sicher auch andere erfreuen, denn die Anfrage gab es in den Vorjahren auch immer wieder, bisher wurde sie aber noch nie zufriedenstellend beantwortet.
Ganz vielen Dank, Hans!
LG

Und beim nächsten Mal dann direkt im GSAK-Forum ;-)
 

8812

Geoguru
Im Code muß nun doch noch etwas geändert werden: damit die Umrechnung von GS-Koords läuft, muß in Zeile 42 und 43 jeweils die 1 und die 2 getauscht werden. ;-)
 

8812

Geoguru
Getestet: die normalen Koords laufen auch. Sogar gemischt dürfen die Koords im CSV sein. ;-)
Ja, gut. Viel Spaß dabei.

Hans
 
OP
D

Dingo79

Geocacher
8812 schrieb:
Im Code muß nun doch noch etwas geändert werden: damit die Umrechnung von GS-Koords läuft, muß in Zeile 42 und 43 jeweils die 1 und die 2 getauscht werden. ;-)

Hallo Hans,
ich habs jetzt alles mal durchlaufen lassen und muss dich insofern korrigieren, als dass dein ursprünglicher Makro-Code in Zeile 41 und 42 (nicht 42 und 43) absolut korrekt ist. Es muss nichts vertauscht werden, denn sonst liegen meine Koors statt auf Mallorca in Afrika ;-)))
LG
 
Oben