[Talk-cz] Detekce z fotek osmhicheck

Jan Skala speirs na email.cz
Sobota Leden 6 20:04:23 UTC 2018


Ahoj,

chtěl jsem se zeptat, co je zač "Detekce z fotek" na 
http://osm.fit.vutbr.cz/OsmHiCheck/

Ptám se proto, že jsem nějakou dobu strávil na způsobem detekce v datech 
(spíše ve fotografiích) zcela chybějících rozcestníků. Dám to sem jen do 
zápisu, protože by se to mohlo třeba hodit, nebo někoho jiného by něco 
napadlo.

Způsob jak najít chybějící rozcestník je celkem jednoduchý. Porovnat 
naši mapu s nějakou turistickou a najít ty, které nám chybí, vypravit se 
tam a zmapovat. Jenže já mám rád věci strojově zpracované a tak jsem 
vymyslel následující systém, který využívá naše fotky. Krok 1: rozepsat 
každý rozcestník do XML, krok 2: projít každý rozcestník a zjistit, 
jestli jeho cíle (položky na tabulkách) existují jako samostatné 
rozcestníky, pokud ne, tak vypsat.

Krok 2 je celkem jednoduchý, je to nějaké XQuery, které má pro formát 
XML, který jsem stanovil takovouhle podobu:

for $dest in timy/tim/cil order by number($dest/@vzdalenost)  let $match 
:= timy/tim/jmeno[lower-case(text()) eq lower-case($dest/@jmeno)] let 
$malt := timy/tim/alt[lower-case(text()) eq lower-case($dest/@jmeno)] 
return if (not($match) and not($malt)) then concat($dest/@jmeno,' 
',$dest/@vzdalenost,' km od ',$dest/parent::*/jmeno/text(),', 
',$dest/parent::*/@id,'
') else null

Samotné XML vypadá takhle:

<timy>
   <tim cislo="761" id="PJ761" oblast="PJ">
     <jmeno>Neslívský ryb. (rozc.)</jmeno>
     <alt>Neslívský rybník (rozc.)</alt>
     <cil vzdalenost="0.5" jmeno="Neslívský rybník"/>
     <cil vzdalenost="2.5" jmeno="Potoky (háj.)"/>
     <cil vzdalenost="16.5" jmeno="Mirošov (nám.)"/>
     <cil vzdalenost="1" jmeno="Pod Lopatou"/>
     <cil vzdalenost="7.5" jmeno="Nezvěstice (ŽST)"/>
     <cil jmeno="Hádek háj. (rozc.)" vzdalenost="1"/>
     <cil jmeno="Zvoníčkovna (NPR)" vzdalenost="4"/>
     <cil jmeno="Kornatice (ŽST)" vzdalenost="8"/>
     <cil jmeno="Hádecký potok" vzdalenost="1"/>
     <cil jmeno="Lopata zříc. (rozc.)" vzdalenost="1.8"/>
     <cil jmeno="Lopata (zříc.)" vzdalenost="2"/>
   </tim>
   <tim cislo="750" id="PJ750" oblast="PJ">
     <jmeno>Lopata (zříc.)</jmeno>
   </tim>
   <tim cislo="641" id="PJ641" oblast="PJ">
     <jmeno>Pod Lopatou, rozcestí</jmeno>
     <alt>Pod Lopatou (rozc.)</alt>
     <cil jmeno="Kozel (kemp)" vzdalenost="3"/>
     <cil jmeno="Šťáhlavy (ŽST)" vzdalenost="5"/>
     <cil jmeno="Šťáhlavy (nám.)" vzdalenost="6"/>
     <cil jmeno="Varta" vzdalenost="4"/>
     <cil jmeno="Nezvěstice (ŽST)" vzdalenost="5.5"/>
     <cil jmeno="Hádecký potok" vzdalenost="0.5"/>
     <cil jmeno="Zvoníčkovna (NPR)" vzdalenost="5.5"/>
     <cil jmeno="Kornatice (ŽST)" vzdalenost="9.5"/>
     <cil jmeno="Lopata (zříc.)" vzdalenost="0.3"/>
     <cil jmeno="Mirošov (nám.)" vzdalenost="9"/>
     <cil jmeno="Strašice (U Libuše)" vzdalenost="20.5"/>
     <cil jmeno="Neslívský rybník (rozc.)" vzdalenost="1"/>
     <cil jmeno="Potoky (háj.)" vzdalenost="3.5"/>
     <cil jmeno="Rokycany (ŽST)" vzdalenost="11"/>
     <cil jmeno="Lopata zříc. (rozc.)" vzdalenost="0.3"/>
     <cil jmeno="Lopata (zříc.)" vzdalenost="0.5"/>
   </tim>
   <tim cislo="642" id="PJ642" oblast="PJ">
     <jmeno>Lopata zříc. (odb.)</jmeno>
     <alt>Lopata zříc. (rozc.)</alt>
     <cil jmeno="Hádek háj. (rozc.)" vzdalenost="0.7"/>
     <cil jmeno="Mirošov (nám.)" vzdalenost="8.5"/>
     <cil jmeno="Strašice" vzdalenost="20"/>
     <cil jmeno="Pod Lopatou" vzdalenost="0.3"/>
     <cil jmeno="Šťáhlavy (ŽST)" vzdalenost="5.5"/>
     <cil jmeno="Šťáhlavy (nám.)" vzdalenost="6.5"/>
     <cil jmeno="Pod Lopatou" vzdalenost="0.3"/>
     <cil jmeno="Zvoníčkovna (NPR)" vzdalenost="5.8"/>
     <cil jmeno="Kornatice (ŽST)" vzdalenost="9.8"/>
   </tim>
</timy>

A výsledek dotazu vypadá třeba takhle:

  Pod Lopatou 0.3 km od Lopata zříc. (odb.), PJ642
  Hádecký potok 0.5 km od Pod Lopatou, rozcestí, PJ641
  Hádek (háj.) 1 km od Hádek (hájovna,rozc.), PJ763
  Pod Lopatou 1 km od Neslívský ryb. (rozc.), PJ761
  Hádecký potok 1 km od Neslívský ryb. (rozc.), PJ761
  Hádek háj. 1.5 km od Zvoníčkovna (NPR), PJ644
  Pod Lopatou 1.5 km od Neslívský rybník, PJ678

...

A říká, který rozcestník chybí a který na něj odkazuje, aby se snadno 
určila přibližná poloha. Třeba položka vzdálenost není nutná, ani ten 
ref není důležitý. Problém je, kde získat přepis těch tabulek. Kostra je 
daná OSM daty, kdy víme, jak se rozcestník jmenuje. Ale potřebujeme také 
odkaz na sousední rozcestníky, které nám v datech třeba chybí. Proto je 
třeba z fotek získat destinace. Ručně opisovat, to šílenost (pro jednoho 
člověka), proto jsem tuhle cestu jako celek zavrhl. Nicméně, když jsem 
viděl "detekce z fotek" tak mi svitla naděje na strojové čtení :) proto 
se ptám. A jak říkám, dávám to do zápisu, aby moje celkem 
několikahodinová práce úplně nezapadla.

Na závěr jen dodám, že nevím kolik procent všech rozcestníků (KČT) nám 
chybí, a jestli to má vůbec cenu, ale programování zdar!

Honza, http://osm.paws.cz







Další informace o konferenci talk-cz