Geoget -> iGo8 v Unicode

Ahoj vespolek,
omlouvám se, pokud je někde zodpovězeno, ale zatím jsem nenašel žádný funkční soubor gge.pas, který by uměl z Geoget vyexportovat datový soubor použitelný pro iGo8.
Po 2 dnech pokusů mám funkční nástřel, zatím neumím výsledný soubor uložit v kodování Unicode, poradí někdo?

Přílohou iGo8.gge.pas, ve kterém jsem snad překonal všechny syntaktické záludnosti iGo8 (např. souřadnice ve tvaru xx.aaaaaa - 6 desetinných míst; číslování WayPointů).
Grafickou podobu (ikony v iGo8) jsem zvolil pokusně, v iGo8 mám zapnuté pro skupinu GC zobrazení 25km, pro skupinu GCWP - 1000m
výsledný soubor se musí jmenovat user.upoi, uložen jako iGO8\save\user.upoi

Poradí někdo s Unicode?
díky
__
doplněk, protože mi nefunguje uložení přílohy, kopíruji zdroják
var poradi: integer;
var poradiWP: integer;
var druhkesky: string;

function ExportExtension: string;
begin
result := ‘upoi’;
end;

function ExportDescription: string;
begin
result := ‘iGo8 export’;
end;

function ExportHeader: string;
begin
Result := ‘’;
end;

function ExportFooter: string;
begin
result := ‘@My POI’ + CRLF;
end;

function ExportPoint: string;
var
s: string;
Num: string;
begin
if poradi < 10 then poradi := 10;
poradi := poradi + 1;
if length(GC_Lat) > 9 then GC_lat := Copy(GC_Lat, 1, 9);
if length(GC_Lat) = 8 then GC_lat := GC_Lat + ‘0’;
if length(GC_Lat) = 7 then GC_lat := GC_Lat + ‘00’;
if length(GC_Lat) = 6 then GC_lat := GC_Lat + ‘000’;
if length(GC_Lon) > 9 then GC_Lon := Copy(GC_Lon, 1, 9);
if length(GC_Lon) = 8 then GC_Lon := GC_Lon + ‘0’;
if length(GC_Lon) = 7 then GC_Lon := GC_Lon + ‘00’;
if length(GC_Lon) = 6 then GC_Lon := GC_Lon + ‘000’;

if gc_type=‘Traditional Cache’ then druhkesky := ‘community.police_station’;
if gc_type=‘Multi-cache’ then druhkesky := ‘Community.Prison’;
if gc_type=‘Unknown Cache’ then druhkesky := ‘community.college_university’;
if gc_type=‘Webcam Cache’ then druhkesky := ‘Tourist_Attractions.Winery’;
if gc_type=‘Event Cache’ then druhkesky := ‘Tourist_Attractions.Winery’;
if gc_type=‘Letterbox Hybrid’ then druhkesky := ‘Tourist_Attractions.Winery’;
if gc_type=‘Earthcache’ then druhkesky := ‘Community.Place_of_Worship’;
if gc_type=‘Virtual Cache’ then druhkesky := ‘Tourist_Attractions.Winery’;

if GC_IsWaypoint or GC_IsUserWaypoint then
begin
//Export for Waypoints
poradiWP := poradiWP + 1;
s := GC_ID + ‘W’ + IntToStr(poradiWP);
S[1] := ‘W’;
S[2] := ‘P’;
Num := IntToStr(Poradi);
Result := Result + Num + ‘|’ + ‘GcWp’ + ‘|’ + s + ‘|parking|’ + GC_Lat + ‘|’ + GC_Lon + ‘|_CZE|||Téměř nic|Nepojmenovaná silnice|||’ + CRLF;
end
else
begin
//Export for Geocaches
s := GC_ID;
S[1] := ‘W’;
S[2] := ‘P’;
poradiWP := 0;
Num := IntToStr(Poradi);
Result := Result + Num + ‘|’ + ‘GC’ + ‘|’ + GC_ID + ‘|’ + druhkesky + ‘|’ + GC_Lat + ‘|’ + GC_Lon + ‘|_CZE|||Téměř nic|Nepojmenovaná silnice|||’ + CRLF;
end
end;

A v jakem unicode?

Data z Geogetu uz samy lezou v UTF-8. Nebude problem spise v to, ze tam mas vlastni texty, ktere mozna nejsou ve spravnem kodovani?

Zkus ty tve texty jako ‘temer nic’ a tak dat bez diakritiky. Uvidime.

nejsem expert na kódové stránky, ať dělám co dělám (i bez diakritiky), tak výstup z GG není Unicode. Šel jsem na to z druhé strany, že v iGo8 jsem si přidal vlastní POI, tento soubor omrknul a je v Unicode (nikoliv UTF-8 nebo UTF-16). Výstup z GG nyní musím otevřít v UltraEditu, dát convert ASCIItoUnicode, výsledný soubor je sice 2násobný, ale iGo8 ho umí načíst.

Proto ze ptam: "jaky unicode?"

Zpusobu kodovani unicode je spousta. Pouzity UTF-8 kod je take unicode! To co popisujes muze byt UCS (big nebo small endian) nebo UTF-16.

Mohu do maker pridat prislusnou konverzni funkci, to by nemel byt vetsi problem.

když Ti pošlu část user.upoi, poznáš z toho, v čem je to zakódované ? Mě dalo dost práce najít správný výsledný tvar, aby se iGo8 nekouslo a soubor správně načetlo.
díky za ochotu, jednoprůchodový export z GG by byl úžasný počin :slight_smile:

jasne, posli mi to na email. (mam ho tu v profilu…)

Jestli se můžu zeptat, jakým způsobem se cpe takovýto výstup do IGO8?

tento polotovar je ještě nutné zkonvertovat do Unicode, já to proženu UltraEditem (http://www.ultraedit.com/), a pak jen nahraju do adresáře iGO8\save\ (viz. první příspěvek).
V iGo v sekci Správa - POI - si zapnu kategorie GC (viditelnost satelitní = 25 km), kategorie GcWp (viditelnost Střední = 1km).
Mám to tak z důvodu, když jedu neznámou oblastí. A pak mám nachystané soubory pro BeeLine na dohledání.

Tak od pristi verzicky (patrne jeste dnes…) muzes v skriptech pouzit nove dve funkce:


function UtfToCharset(const value, charset: string): string;

Prevadi kodovani z UTF-8 (ve kterem jsou servirovany data…) do libovolne jine kodove stranky. Cilove kodovani se udava jako retezec s jeho nazvem, tedy napriklad:

UCS-2 (pro dvoubajtov unicode), UTF-16, ISO-8859-2, Widnows-1250, BIG-5, a dalsi… Nazvy kodovani se zadavaji pochopitelne v apostrofech.

Dalsi nova funkce:


function UnicodeBOM(const charset: string): string;

Pro stejne zadane kodovani vraci BOM (byte order mark). To je dobre davat na uplny zacatek exportovaneho souboru, tedy na zacatek v ExportHeader. Pokud pouzite kodovani nepotrebuje zadne BOM, pak tato funkce vraci prazdny retezec.

No, a diky temto novym funkcim je mozne ve skriptech generovat vystup v naprosto libovolnem myslitelnem kodovani! Pokud je to ale mozne, stale doporucuji pouzivat dosavadni prevodni funkce, jsou totiz mnohem rychlejsi.

dík za rychlou reakci, nová verze bude ještě v řadě 1.2.xx nebo jen 2.aaaa ?
už se těším, až to vyzkouším.
jestli to bude fungovat, tak k tomu popíšu nějaký help :slight_smile:

pracuji uz jen na rade 2.x.

Prevedeni puvodniho skriptu pro GG2 neni zadny problem…skoro to udela za tebe, jen u wpt budes mit drobatko prace. Ja jsem se toho clekem bál, protože export pro 60CSx mám celkem dost dlouhej (možná i zbytečně) ale byla to otázka 5ti minut.

stáhnu si o víkendu opravenou verzi 2, zkusím převod z 1.2.10.299 a pak i nové funkce ve skriptu.
jinak mám uloženo kolem 19000 bodů, tak vyzkouším i rychlost :wink:

Tak to jsem rad, ze prevod skriptu nedela vyraznejsi obtize. :wink:

Ja teda nevim - ale v iGO8 mi funguje export do KML a naprosto bez problemu. Staci vyexportovat a hodit do iGO/content/userdata/poi

tak po 2 dnech snažení se mi stále nedaří přepsat skript do verze 2, syntaxe je si OK. ale chybu "List index out of bounds (1)" nějak nedokážu dešifrovat. Prozatím odkládám přepis skriptu do nové verze, až někdy bude čas.

To znamena, ze se snazis pristupovat na prvek s indexem 1, ktery ale v seznamu neni. podivej se, jestli tam nekde cyklem neprochazis nejaky seznam (treba seznam waypointu), a jestli u horni hranice mas ‘count’ snizeny o jednicku.

vtip je v tom, ze Count vraci pocet prvku, ale prvky jsou indexovany od nuly. takze chces-li je projit, musis jit od 0 do count - 1.

to je možné, holt jsem si myslel, že když 2 dny studuji již hotové příklady, vypotím skript pro verzi 1, tak půjde jednoduše přepsat do verze 2, byl bych rád, kdyby se našel někdo, kdo to zvládne :), dík

No, zrovna tohle v tech prikladech zcela urcite je, je to i na webu.

věřím, četl jsem, zkoušel jsem, teď zase stojím na chybě "out of memory", nemám na to. Nic, jdu si vytisknout podklady do papírové podoby a hledat s ručním zadáváním do navigace.