Hallo!
Ich wende mich mit meiner Frage nach einem VB-Script oder einer CMD-Datei an alle die sich mit GPSMapEdit beschäftigen und auch die nötigen Kenntnisse habe solche Scrips zu erstellen.
Was ich gerne hätte: Einen Script der alle in einem Ordner befindlichen .img oder .mp Dateien mit GPSMapEdit hintereinander öffnet. Danach sollen in jeder der geöffneten Dateien gewisse Objekte, z.B. Strassen, Wege, Häuser (diese Typen sollten frei nach der Type, z.B. Type=0x15, wählbar sein) selektiert und kopiert werden und in einer neuen Datei abgespeichert werden. Möglich wäre auch, dass man z.B. alle nicht selektieten Objekte aus der original Datei löscht und sie dann wieder abspeichert. Weiss nicht was einfacher zum programmieren ist.
Kann mir dabei wer helfen? Ich hoffe schon und bedanke mich schon jetzt recht herzlich im Voraus für die Unterstützung!
Peter
Garmin fenix 7X und epix Gen 2 im Test
-
-
So schwer kann's nicht sein, da die .mp ja ein Text-File ist. Da könnte man also einfach suchen und ersetzten.
Wäre vielleicht ein Thema für Morgen1 ... -
Ich kann die ein Script anbieten.
Code
Alles anzeigenOption Explicit ' ' ConvertToCrd.vbs ' ' Copyright (c) Konstantin Galichsky (kg@geopainting.com), 2004-2005 ' All rights reserved. ' ' ' This script uses GPSMapEdit to convert multiple maps to CRD format. ' ' USAGE: ' Input files should be put into .\Maps folder (relative to the script file). ' Log.txt file is created to log progress. ' ' Connect to GPSMapEdit. Dim a Set a = CreateObject ("GPSMapEdit.Application.1") a.MinimizeWindow ' Check version of GPSMapEdit If a.Version < "1.0.15.1" Then MsgBox "Obsolete version of GPSMapEdit is used. Please upgrade." WScript.Quit End If Dim fso Set fso = CreateObject ("Scripting.FileSystemObject") Dim strRoot strRoot = fso.GetAbsolutePathName (WScript.ScriptFullName + "\..\") Dim log Set log = fso.CreateTextFile (strRoot + "\Log.txt") Dim pMapsFolder If Not fso.FolderExists (strRoot + "\Maps") Then MsgBox "Couldn't find '\Maps' folder." WScript.Quit End if Set pMapsFolder = fso.GetFolder (strRoot + "\Maps") Dim pFile For Each pFile In pMapsFolder.Files Dim strExt strExt = LCase (fso.GetExtensionName (pFile.Path)) If strExt = "img" Or strExt = "mp" Then a.Open pFile.Path, False Dim strOutFile strOutFile = fso.GetParentFolderName(pFile.Path) + "\" + fso.GetBaseName (pFile.Path) + ".mp" a.SaveAs strOutFile, "polish" End if log.WriteLine strOutFile Next a.Exit MsgBox "Converting maps is completed!"
Habe ich nicht selbst geschreiben. :p
-
Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank... -
Danke, werde mal in den Keller gehen und meine VB-Unterlagen suchen. Möglicherweise verstehe in dann, nach ein/zwei Wochen, was der Script macht...
Peter -
mike_hd, das mit dem Suchen und Ersetzen ist schon klar. Ich habe da auch ein Progi (NoteTabLight - eines meiner Lieblingstools wenn es darum geht in vielen Files gleichzeitig etwas zu verändern) was das alles auch für einen ganzen Folder in einem Rutsch macht. Das ist nicht das Problem. Sonder: Ich kann ja immer nur nach einem String suchen den ich tauschen will. Ich bräuchte aber ein Suche welche z.B. 0x4c sucht und dann alles (die Datenpunkte) bis zum nächsten Absatz (oder nächster Leerzeile) löscht. So was kenne ich nicht.
Peter -
hallo p.st.
1. das script von ziploader konvertiert von img nach mp.
2. An Deiner Stelle würde ich mir was in VB schreiben. Wie von mike_hd empfohlen, lassen sich die mp-files leicht bearbeiten. Es gibt in VB methoden zum Ersetzen("Replace(Ausdruck,Suchen,ersetzendurch)") mit denen kannst Du das realisieren. Wenn Du dann noch 2 Textboxen einbaust für die zu ersetzenden Strings, bist Du universell und kannst beliebige Strings ersetzen. Die Textboxen lassen sich ja mehrfach verwenden um nacheinander die beabsichtigten Strings einzugeben. Den Start zum ersetzen würde ich dann extra mit Commanbutton realisieren. Das ganze dann in eine Schleife packen, die den ganzen Ordner durchläuft. ich habe sowass im "Batchkonverter" realisiert.
viel Spaß. morgen1 -
Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank... -
Den werd ich haben! Danke mal für die Tipps, ob ich das alles realisieren kann...??? Da bin ich eher skeptisch.
Peter -
Hallo p.st,
für Perl hätte ich was du suchst.
Etwas erweitert kann ich dir das ganze auch als GUI und exe Mailen.Gruss Kerstin
Perl
Alles anzeigen#!/usr/bin/perl print "Was soll ersetzt werden?\n"; $suchen = <STDIN>; chomp ($suchen); print "Durch was soll ersetzt werden?\n"; $ersetzen = <STDIN>; chomp ($ersetzen); print "Welche Datei-en soll-en geaendert werden? (Name der Datei oder *.txt etc. fuer alle)\n"; $dat = <STDIN>; chomp ($dat); @Datei = glob($dat); foreach $dateien (@Datei) { chomp ($dateien); open (DATA, "$dateien") || die "Konnte die Datei $dateien nicht oeffnen\n"; while (<DATA>) { foreach $ergebnis ($_) { s/$suchen/$ersetzen/g; } push (@neu, $_) } close (DATA); open (WRITE, ">$dateien") || die "Konnte die Datei $dateien nicht Schreiben\n"; print WRITE @neu; close (WRITE); @neu = (); }
-
Suuuper! Danke für das Angebot, du hast eine PM!
Liebe Grüsse
Peter -
Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank... -
Leider haben alle Progis und Tipps nicht das gebracht was ich eigentlich machen wollte und noch will.
Ich will aus verschiedenen Karten (z.B. Topos) einzelne Kartenelemente "herausschneiden", besser gesagt kopieren, und mir aus diesen Elementen Overlays für andere Karten machen. Ich denke z.B. daran aus meiner Topo Austria die Höhenschichtlinien und Wanderwege in ein Overlay zu kopieren, welche ich dann über die MG oder CN Karte lege.
Händisch lässt sich das zwar auch machen, ist aber bei fast 200 Kacheln doch eher was für eine automatisierung.
Warum das alles? Einfach gesagt, 1.) die Topo Austria hat zu viele Fehler und 2.) könnte ich dann auf einer topoähnlichen Karten routen. Ausserdem will ich auch noch, sollte ich das zustandebringen, eine Schummerung in das Overlay packen. Das ist meine Idee.
Hat wer gute Ideen dazu?
Liebe Grüsse
Peter -
Hallo Peter,
wen ich dich richtig verstanden habe möchtest du also z.B. alle Objekte des Typ 0x…
aus der Karte extrahieren und als *.mp Datei zur Verfügung haben.
Das geht mit meinem Programm mp2shp.
Am besten die komplette Karte in gpsMapEdit öffnen und als *.mp speichern.
Anschließend das Programm mp2shp mit der Option „Provide all Poi’s“ starten
Du erhältst zwei Ordner, einer mit allen Typen als einzelne *.mp Dateien und einen
mit allen Typen als einzelne *.shp Dateien.
Die *.mp Dateien kannst du dann wieder in gpsMapEdit öffnen und berbeiten.Edit: In der Ursprungs *.mp Datei müssen alle Level bis auf den ersten und letzten gelöscht
werden, sonst sind manche Objekte in den extrahierten Dateien mehrfach zu sehen.
Gruss Kerstin -
Leider haben alle Progis und Tipps nicht das gebracht was ich eigentlich machen wollte und noch will.
Ich will aus verschiedenen Karten (z.B. Topos) einzelne Kartenelemente "herausschneiden", besser gesagt kopieren, und mir aus diesen Elementen Overlays für andere Karten machen. Ich denke z.B. daran aus meiner Topo Austria die Höhenschichtlinien und Wanderwege in ein Overlay zu kopieren, welche ich dann über die MG oder CN Karte lege.
Händisch lässt sich das zwar auch machen, ist aber bei fast 200 Kacheln doch eher was für eine automatisierung.
Warum das alles? Einfach gesagt, 1.) die Topo Austria hat zu viele Fehler und 2.) könnte ich dann auf einer topoähnlichen Karten routen. Ausserdem will ich auch noch, sollte ich das zustandebringen, eine Schummerung in das Overlay packen. Das ist meine Idee.
Hat wer gute Ideen dazu?
Liebe Grüsse
Peter
Mir ist nicht ganz klar, wie Du die ausgeschnittenen Elemente speichern bzw. verarbeiten willst. Das Ausschneiden eines Strings der mit "Typ= 0x.." beginnt bis zum Beginn des nächsten [RGN] ist eigentlich kein Problem. Aber es gibt da verschiedene Varianten :
1. aus allen Files eines Ordners den gleichen String ausschneiden und speichern in einer Datei. Die ist aber dann noch keine gültige .mp, weil der ganze Kopf fehlt. Der Kopf mit ID, Level, Zoom, Typset usw müßte synthetisch erzeugt werden; und welche ID soll vergeben werden? immer die gleiche? oder garantiert noch nicht vorhandene?
2. nur aus 1 Datei den String ausschneiden und speichern. Das ist gleichbedeutend mit alle anderen Objekte löschen;den Kopf aber behalten, dann hast Du eine gültige .mp.
3.oder willst Du gar keine komplette .mp, sondern nur eine Zusammenstellung aller Strings des gewählten "Typ =0x...", oder sollen gar mehrere Strings (ich denke da an verschiedene Höhenlinien) aus einem File oder aus allen Files eines Ordners herauskopiert werden ?
Du müßtest Deine Fragestellung diesbezüglich konkretisieren und einen prinzipiellen Ablaufplan erarbeiten. Dann kann man ein ordentliches Programm draus machen.morgen1
-
Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank... -
Hallo,
da hier offensichtlich die Experten am Werk sind möchte ich mal ganz blauäugig fragen:
Kann man eine Batchdatei erstellen, die aus einem Track ein durchsichtiges Overlay (also z. B. einen nicht in den Karten eingezeichneten Weg) erstellt?
Ich bin hier schwer am Limit meines Wissens. Händisch geht das ja in vielen kleinen Schritten, auch über das polnische Format (es gibt ja langwierige Anleitungen dazu) usw. Möglicherweise bin ich hier aber auf einer ganz falschen Baustelle gelandet
Viele Grüsse
arno -
Kann man eine Batchdatei erstellen, die aus einem Track ein durchsichtiges Overlay (also z. B. einen nicht in den Karten eingezeichneten Weg) erstellt?
hallo arno,
in TTQV geht das mit ein paar Klicks. Zum Übertragen brauchst du IMG2GPS bzw. zum Einbinden in MapSource nimmst du IMG2MS
Grüsse - Anton
-
Entschuldigung für die späte Antwort, aber ich war diese Woche etwas im Stress. Da war's nix mit Internetz...
Hallo Peter,
wen ich dich richtig verstanden habe möchtest du also z.B. alle Objekte des Typ 0x…
aus der Karte extrahieren und als *.mp Datei zur Verfügung haben.
Das geht mit meinem Programm mp2shp.
Am besten die komplette Karte in gpsMapEdit öffnen und als *.mp speichern.
Anschließend das Programm mp2shp mit der Option „Provide all Poi’s“ starten
Du erhältst zwei Ordner, einer mit allen Typen als einzelne *.mp Dateien und einen
mit allen Typen als einzelne *.shp Dateien.
Die *.mp Dateien kannst du dann wieder in gpsMapEdit öffnen und berbeiten.
Edit: In der Ursprungs *.mp Datei müssen alle Level bis auf den ersten und letzten gelöscht
werden, sonst sind manche Objekte in den extrahierten Dateien mehrfach zu sehen.
Gruss Kerstin
Ja Kerstin, du hast richtig verstanden. Ich will z.B. alle Objekte wie Höhenschichtlinien, die Polylines 0x0020, 0x0021 und 0x0022, gleichzeitig extrahieren und in einer neuen .mp-Datei abspeichern, z.B. diesen Block:
Code[POLYLINE] Type=0x21 Data1=(37.12701,25.83272),(37.12709,25.83276),(37.12718,25.83289),(37.12722,25.83302),(37.12731,25.83315),(37.12739,25.83319),(37.12748,25.83332),(37.12757,25.83349),(37.12761,25.83362),(37.12765,25.83366),(37.12765,25.83375),(37.12769,25.83388),(37.12778,25.83397),(37.12791,25.83405),(37.12795,25.83418),(37.12795,25.83427),(37.12795,25.83431),(37.12795,25.83439) [END]
Das soll, weil ich viele Dateien bearbeiten will, in einem Rutsch für alle .mp-Filez in einem Ordner geschehen.
Ich werde mir dein Programm ansehen.
Vielen Dank für den Tipp
Liebe Grüsse
Peter
Mir ist nicht ganz klar, wie Du die ausgeschnittenen Elemente speichern bzw. verarbeiten willst. Das Ausschneiden eines Strings der mit "Typ= 0x.." beginnt bis zum Beginn des nächsten [RGN] ist eigentlich kein Problem. Aber es gibt da verschiedene Varianten :
1. aus allen Files eines Ordners den gleichen String ausschneiden und speichern in einer Datei. Die ist aber dann noch keine gültige .mp, weil der ganze Kopf fehlt. Der Kopf mit ID, Level, Zoom, Typset usw müßte synthetisch erzeugt werden; und welche ID soll vergeben werden? immer die gleiche? oder garantiert noch nicht vorhandene?
2. nur aus 1 Datei den String ausschneiden und speichern. Das ist gleichbedeutend mit alle anderen Objekte löschen;den Kopf aber behalten, dann hast Du eine gültige .mp.
3.oder willst Du gar keine komplette .mp, sondern nur eine Zusammenstellung aller Strings des gewählten "Typ =0x...", oder sollen gar mehrere Strings (ich denke da an verschiedene Höhenlinien) aus einem File oder aus allen Files eines Ordners herauskopiert werden ?
Du müßtest Deine Fragestellung diesbezüglich konkretisieren und einen prinzipiellen Ablaufplan erarbeiten. Dann kann man ein ordentliches Programm draus machen.
morgen1
Hallo Thomas!
Zu deinen Fragen: 1. und 2. sind das was ich will. Entweder, oder, oder beides... Das ist natürlich sehr viel, ich weiss schon. Aber wenn man z.B. alle Höhenschichtlinien der Topo Deutschland in ein File bringt wird das sehr gross, vieleicht zu gross für GPSMapEdit in der ferein Version sein. Hier ist es besser wenn man aus den original .mps alles verwirft was eben nicht eine Höhenschichtlinie ist. Bei weniger Filez kann es aber ganz gut sein wenn man alle Objekte die man haben will in ein File kopiert und dann händisch den .mp Header einfügt.
Noch einmal: Ich will
1. Aus einer oder meheren bestehenden .mp-Datei alle Objekte die ich nicht brauchen (nicht mehr verwenden will) löschen und die Datei(en) neu abspeicher.
Und/oder
2. Aus einer oder mehreren .mp-Datei(en) selektiv Objekte kopieren und in ein neues File einfügen. Damit könnte man sich z.B. alle Wanderwege von einem grossen Gebiet in ein Overlay kopieren u.s.w.
Mit diesen beiden Tools hat man, so glaube ich, sehr mächtige Werkzeuge für die Kartenerstellung in der Hand. Ich glaube mit Nr. 2 hat man mehr Möglichkeiten, wenn man angeben kann in welches File die ausgeschnittenen Daten kopiert (dazu addiert!) werden soll. So kann man sehr selektiv seine gewünschten Objekte in ein File kopieren.
Liebe Grüsse
Peter -
Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank... -
Hast Du Dir mal http://www.mapextract.tk angeschaut?
-
Hast Du Dir mal http://www.mapextract.tk angeschaut?
Danke, bin schon dabei!
Peter -
Ich glaube mit Nr. 2 hat man mehr Möglichkeiten, wenn man angeben kann in welches File die ausgeschnittenen Daten kopiert (dazu addiert!) werden soll. So kann man sehr selektiv seine gewünschten Objekte in ein File kopieren.
Liebe Grüsse
PeterPrinzipiell läßt sich das machen. Ein Problem ist da noch : der Level. Wenn man ohne den Level zu beachten den String (Beispiel) "[Polygon] Type=0x.... blablabla[End]" ausschneidet und als neue Datei speichert, so hat man auch den enthaltenen Level (als Datax=...) mit übernommen. Wenn man wie gewünscht die "Type=0x..." aus vielen Files zusammenträgt, so sind die Level(=Datax)-Werte bestimmt unterschiedlich mit der Folge, daß in der generierten Karte Chaos herrscht bezüglich Level. Sinnvoll wäre einzig die Verwendung der Daten aus dem Level 0. Nachteil : es gibt keine Einträge in höheren Levels. Das könnte man aber durch Einbau einer Dictionary.txt (die steuert, welche Kartenobjekte in den Levels dargestellt werden. Siehe Usermanual cgpsmapper) kompensieren. Sollten Daten nur in höheren Levels stehn, so fehlen diese . Diese Dictionary.txt kann editiert werden. Das editieren setzt gewisse Einarbeitung voraus; nur was für Leute, die den Willen haben da durchzusteigen. Es scheint aus momentaner Sicht keine Lösung zu geben, die voll im bekannten Windowsstil mit grafischer Auswahl laufen könnte . es muß editiert werden.
Fazit : eine ideale Lösung fällt mir für das Levelproblem nicht ein. Wer weiß was besseres ?.morgen1
-
Datenschutz ist uns & Euch wichtig, daher verzichten wir auf Bannerwerbung & Web-Analysetools! Um das Forum zu unterstützen bitten wir Euch über diesen Link: bei Amazon zu bestellen....
Für Euch ist das nur ein Klick, uns hilft es das Forum langfristig und werbefrei für Euch zu betreiben! Vielen vielen Dank... -
...Es scheint aus momentaner Sicht keine Lösung zu geben, die voll im bekannten Windowsstil mit grafischer Auswahl laufen könnte. Es muß editiert werden.
Fazit: eine ideale Lösung fällt mir für das Levelproblem nicht ein. Wer weiß was besseres?morgen1
Hallo Thomas!
Ich glaube, dass so ein Tool mit dem man Objekte aus Karten in andere kopiert u.s.w. sowieso etwas für "Spezialisten" ist und die werden das editieren ihrer .mp-Files nicht scheuen. Mit dem Progi "NoteTab Lite" kann man das sehr bequem und das für mehrere Files gemeinsam. Hier sehe ich kein Problem.
Liebe Grüsse
Peter
-
Hallo Thomas!
Ich glaube, dass so ein Tool mit dem man Objekte aus Karten in andere kopiert u.s.w. sowieso etwas für "Spezialisten" ist und die werden das editieren ihrer .mp-Files nicht scheuen. Mit dem Progi "NoteTab Lite" kann man das sehr bequem und das für mehrere Files gemeinsam. Hier sehe ich kein Problem.
Liebe Grüsse
Peter
Ich werde irgendwann mal anfangen, unter Benutzung vorhandener Codebausteine sowas zusammenzuschreiben. Aber ehrlich gesagt, ich habe noch keine komplette Vorstellung was da rauskommen soll. Für den Anfang wird es nur eine txt-Datei mit der Sammlung der ausgeschnittenen Strings. Die kann man dann mit copy&paste in eine bereits bestehende .mp einfügen. Also Header von Hand erzeugen und die Kartenobjekte hineinkopieren. Ich werde das im Batchbetrieb über alle mp-files eines Ordners laufen lassen. Gegebenenfalls muß man den Ordner auch für nur ein einziges File anlegen.
Später, wenn ich meine Vorstellungen und eure Erfahrungen/Wünsche konkretisiert habe, kann man das ausbauen bis zur automatischen Erzeugung einer Img.
Verwendung sehe ich in der bequemen Erzeugung einer Übersichts-Img.morgen1