GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:databaze

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
user:databaze [2020/10/28 10:51] mikromuser:databaze [2024/07/14 10:55] (current) mikrom
Line 28: Line 28:
  
 <WRAP round info> <WRAP round info>
-Upozornění: v nedaleké budoucnosti jsou plánovány velké změny ve struktuře databáze. Může tedy dojít k tomu, že dříve připravený SQL dotaz nebude pracovat správně v některé z příštích verzí databáze. (Verze databáze je uvedena ve vlastnostech databáze (**PRAGMA user_version**).+Upozornění: V některých případech můžbýt potřeba kontrolovat, zda databáze je opravdu GeoGetí databází. Aplikace, které je databáze určena, je nastavena ve vlastnostech databáze. SQL ''PRAGMA application_ID'' by měl vrátit hodnotu ''1845946112''
 +</WRAP> 
 + 
 +<WRAP round info> 
 +Upozornění: je vhodné kontrolovat si verzi databáze, zda plugin nebo aplikace pracuje se správnou databázovou strukturou. Může tedy dojít k tomu, že dříve připravený SQL dotaz nebude pracovat správně v některé z příštích verzí databáze. Verze databáze je uvedena ve vlastnostech databáze ''PRAGMA user_version''. Aktuální verze databáze je 3 (pro verzi GeoGetu 2.11).
 </WRAP> </WRAP>
  
Line 36: Line 40:
   * ''*.map'' (náhledové mapky k bodům)   * ''*.map'' (náhledové mapky k bodům)
   * ''*.cache'' (mezipaměť obrázků, pluginů, polygonů, ...)   * ''*.cache'' (mezipaměť obrázků, pluginů, polygonů, ...)
 +
 ===== Diskuze ===== ===== Diskuze =====
 Diskuze o se nachází na stránkách [[http://www.geocaching.cz/forum/viewthread.php?forum_id=20&thread_id=18571|Geocaching.cz]]. Diskuze o se nachází na stránkách [[http://www.geocaching.cz/forum/viewthread.php?forum_id=20&thread_id=18571|Geocaching.cz]].
  
 ===== Struktura databáze GeoGetu ===== ===== Struktura databáze GeoGetu =====
- 
 Struktura databáze odpovídá verzi, která je uvedena v ''PRAGMA user_version'', v současnosti (GeoGet od verze 2.6) je platná hodnota 2. Struktura databáze odpovídá verzi, která je uvedena v ''PRAGMA user_version'', v současnosti (GeoGet od verze 2.6) je platná hodnota 2.
  
Line 104: Line 108:
 | ::: | ''value'' | hodnota tagu | | ::: | ''value'' | hodnota tagu |
 | ::: | ''flag'' | rezervováno pro budoucí potřebu označování druhu tagu | | ::: | ''flag'' | rezervováno pro budoucí potřebu označování druhu tagu |
-| ''metadata'' | ''key'' || +| ''metadata''<wrap important> <sup>4)</sup></wrap> | ''key'' || 
-| ::: | ''name''jmáno uložené hodnoty |+| ::: | ''name''jméno uložené hodnoty |
 | ::: | ''value'' | vlastní hodnota | | ::: | ''value'' | vlastní hodnota |
 | ''waypoint'' | ''key'' || | ''waypoint'' | ''key'' ||
Line 146: Line 150:
  
 <wrap important> <sup>3)</sup></wrap> Zvláštní důležitost mají první 2 znaky, tzv. [[#prefix|Prefix]]. <wrap important> <sup>3)</sup></wrap> Zvláštní důležitost mají první 2 znaky, tzv. [[#prefix|Prefix]].
 +
 +<wrap important> <sup>4)</sup></wrap> tabulka ''metadata'' je obsahuje různé hodnoty jedinečné pro databázi. Je možné doplňovat i vlastní hodnoty, ale v tom případě je důležité věnovat zvláštní pozornost jménu proměnné. Doporučené jméno je složené ve tvaru ''plugin.proměnná'', např. ''stator.gcczId''. GeoGet používá následující proměnné (platné pro verzi 2.11)
 +
 +|create_application|aplikace a její verze, která databázi vytvořila|
 +|create_level|verze databáze, na jaké verzi byla databáze vytvořena. Aktuální verze databáze je dostupná přes funkce databáze, viz. SQL příkaz ''PRAGMA user_version;'' a poznámka na začátku této stránky|
 +|create_dt|datum a čas vytvoření databáze v numerickém tvaru|
 +|create_datetime|datum a čas vytvoření databáze ve tvaru YYYY-MM-DD hh:mm:ss.ssss|
 +|upgrade_application|aplikace a její verze, které databázi aktualizovala|
 +|upgrade_dt|datum a čas posledního povýšení databáze (číslo)|
 +|upgrade_datetime|datum a čas posledního povýšení databáze (string)|
 +|MyFindsTS|datum a čas posledního načítání logů přes API|
 +
 +
  
 ===== SQLite APPLICATION_ID ===== ===== SQLite APPLICATION_ID =====
Line 191: Line 208:
  
 Problém může nastat při použití jiné aplikace než je **GeoGet**. V tom případě je nutné si nějak poradit sám. Ideální asi je vytvořit si vlastní UDF funkci a tu zaregistrovat (UDF funkce jsou v SQLite asociovány s aplikací, ne s databází). Jednu [[http://www.geocaching.cz/topic/18571-geoget-sql/?p=512297|takovou knihovnu nabízí]] Pe_Bo. Jinou možností je načíst komprimované hodnoty jako ''blobtext'' a pak si je vlastní funkcí v programu rozbalit. Problém může nastat při použití jiné aplikace než je **GeoGet**. V tom případě je nutné si nějak poradit sám. Ideální asi je vytvořit si vlastní UDF funkci a tu zaregistrovat (UDF funkce jsou v SQLite asociovány s aplikací, ne s databází). Jednu [[http://www.geocaching.cz/topic/18571-geoget-sql/?p=512297|takovou knihovnu nabízí]] Pe_Bo. Jinou možností je načíst komprimované hodnoty jako ''blobtext'' a pak si je vlastní funkcí v programu rozbalit.
- 
  
 ===== Spolupráce GeoGetí databáze s jinou databází ===== ===== Spolupráce GeoGetí databáze s jinou databází =====
Line 208: Line 224:
  
 ===== Přístup  TAGům ===== ===== Přístup  TAGům =====
- 
 Protože se předpokládá, že většina hodnot tagů má mnohonásobné použití, není u keše použita (uložena) přímo hodnota (=dlouhý text), ale jen číslo, Protože se předpokládá, že většina hodnot tagů má mnohonásobné použití, není u keše použita (uložena) přímo hodnota (=dlouhý text), ale jen číslo,
-které ukazuje na ten konkretní dlouhý text. Místo opakujícího se dlouhého textu se tedy opakuje jen číslo. Úspora místa je ale vyvážena trochu komplikovanějším přístupem k hodnotám TAGů. Protože text není uložen přímo u keše, je potřeba "spolupráce" tří tabulek:+které ukazuje na ten konkrétní dlouhý text. Místo opakujícího se dlouhého textu se tedy opakuje jen číslo. Úspora místa je ale vyvážena trochu komplikovanějším přístupem k hodnotám TAGů. Protože text není uložen přímo u keše, je potřeba "spolupráce" tří tabulek:
  
-  * **geotagcategory** - seznam kategorií (''value''=text kategorie) a jejich čiselných hodnot (''key'')+  * **geotagcategory** - seznam kategorií (''value''=text kategorie) a jejich číselných hodnot (''key'')
   * **geotagvalue** - seznam hodnot tagů (''value''=text hodnoty), jejich číselných hodnot (''key'')   * **geotagvalue** - seznam hodnot tagů (''value''=text hodnoty), jejich číselných hodnot (''key'')
   * **geotag** - přidělená kategorie (''ptrkat'', obsahuje ''key'' kategorie) a hodnota tagu (''ptvalue'', obsahuje ''key'' hodnoty) k jednotlivé keši (''id'', obsahuje GC kód keše)   * **geotag** - přidělená kategorie (''ptrkat'', obsahuje ''key'' kategorie) a hodnota tagu (''ptvalue'', obsahuje ''key'' hodnoty) k jednotlivé keši (''id'', obsahuje GC kód keše)
Line 259: Line 274:
   ORDER BY (gtv.value+0) DESC      -- hodnoty jako cislo seradime sestupne   ORDER BY (gtv.value+0) DESC      -- hodnoty jako cislo seradime sestupne
 </code> </code>
- 
- 
  
 ===== Příklady SQL dotazů ===== ===== Příklady SQL dotazů =====
Line 296: Line 309:
 ); );
 </code> </code>
- 
  
 ==== Seznam keší, kde má uživatel DNF log ==== ==== Seznam keší, kde má uživatel DNF log ====
- 
 <code sql> <code sql>
 SELECT id FROM geolog WHERE finder="%GG_OWNER%" and type like "Didn't find it" SELECT id FROM geolog WHERE finder="%GG_OWNER%" and type like "Didn't find it"
Line 311: Line 322:
   AND dtfound<=0   AND dtfound<=0
 </code> </code>
- 
  
 ==== Seznam keší, na kterých má uživatel GeoGetu vícenásobný nález ==== ==== Seznam keší, na kterých má uživatel GeoGetu vícenásobný nález ====
Line 430: Line 440:
  NOT IN (SELECT DISTINCT(difficulty||'-'||terrain) FROM geocache WHERE dtfound>0)  NOT IN (SELECT DISTINCT(difficulty||'-'||terrain) FROM geocache WHERE dtfound>0)
 </code> </code>
- 
  
 ==== Seznam okresů, v kterých ještě nemám nalezenou žádnou kešku ==== ==== Seznam okresů, v kterých ještě nemám nalezenou žádnou kešku ====
user/databaze.1603878671.txt.gz · Last modified: 2020/10/28 10:51 by mikrom