Vracim se ke skriptu pro prevod na zjednoduseny XML z XML Overpass-turbo

8 zpráv
Zpět na přehled

Vracim se ke skriptu pro prevod na zjednoduseny XML z XML Overpass-turbo

8 zpráv MJMP 4 účastníků 5 min čtení
  1. Miloš Šmíd smid.milos na gmail.com #m175478
    Dobrý den, bojuji se skriptem, který by mě měl na radu našeho kolegy převést xml z overpass-turbo.eu do zjednodušeného formátu xml pro aplikaci Dot Walker (pro nevidomé). Nemám Linux a tak jsem se rozhodl stáhnout si CygWin, který umožňuje spouštět linuxové skripty, doplnil ho knihovnou pro xlstproc, ale jak do skriptu mám přidat informaci, z kterého xml souboru má provést konverzi? Kam ho umístit nebo jak k němu skript navést, aby ho načetl? Pro přiblížení - návod, který jsem zde získal: Pokud jste dostali data ve formátu XML, budete je muset transformovat na vámi požadovaný formát. K tomu můžete použít různé nástroje nebo skripty. Jeden z jednoduchých způsobů je použití XSLT (Extensible Stylesheet Language Transformations). Zde je jednoduchý XSLT skript, který by mohl provést transformaci: ```xml <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/osm"> <Route> <xsl:for-each select="node[@k='highway' and @v='bus_stop']"> <Point> <Title><xsl:value-of select="@name"/></Title> <Lat><xsl:value-of select="@lat"/></Lat> <Lng><xsl:value-of select="@lon"/></Lng> <Description>stanice</Description> </Point> </xsl:for-each> </Route> </xsl:template> </xsl:stylesheet> ``` Po Entru tedy spuštění skriptu to napíše: -bash: xml: command not found -bash: command substitution: line 2: syntax error near unexpected token `newline' -bash: command substitution: line 2: ` <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">' -bash: $'~\E[200~': command not found Můžete tento skript použít s jakýmkoli nástrojem, který podporuje XSLT, například s `xsltproc` v příkazovém řádku. Ještě se potýkám také s tím, že vyexportovaný např. kml z overpass-turbo.eu má v sobě celou tabulku tagů - některým ani příliš nerozumím, i když jsem se díval na Wikipedii co znamenají - konkrétně traffic_signals:direction - jde o křižovatku, semafor a signál určující směr - možná to platí pro nějakou situaci v zahraničí, ale u nás jsou přece světelné semafory do obou směrů? Děkuji za pomoc. Miloš
  2. Jozef Matejička matejickaj na gmail.com #mf083d8
    To je semafor pro auta, nebo?
  3. Miloš Šmíd smid.milos na gmail.com #m2768a5
    Mým cílem jsou přechody pro chodce, ale může to být světelný směr pro auta, ale ani tak tomu moc nerozumím. Dne ne 5. 11. 2023 12:56 uživatel Jozef Matejička <matejickaj na gmail.com>
  4. Jozef Matejička matejickaj na gmail.com #me96a2c
    Pošlete, prosím, místo, kde ten semafor je?
  5. Miloš Šmíd smid.milos na gmail.com #m672211
    Dobrý večer, ono to je asi pro ČR spíš teoretický dotaz na tag, protože jsem zřejmě žádný nenašel viz níže vesportované gpx. Ale třeba jen nevím, co se tam má vypisovat. Směr - pokud by to bylo pro auta, tak si dovedu představit třeba semafor se signalizací zelené šipky do odbočky? Děkuji. Miloš <?xml version="1.0" encoding="UTF-8"?> <gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="overpass-turbo"><metadata><desc>Filtered OSM data converted to GPX by overpass turbo</desc><copyright author="The data included in this document is from www.openstreetmap.org. The data is made available under ODbL."/><time>2023-11-05T18:03:15Z</time></metadata></gpx> ne 5. 11. 2023 v 17:15 odesílatel Jozef Matejička <matejickaj na gmail.com>
  6. Martin Ždila martin.zdila na freemap.sk #mc7c8ed
    Bash nepozná xslt skript, ale len bash skript. Na prácu s xstl a xml používam príkaz xmlstarlet, ale isto poslúži aj xsltproc.
  7. Miloš Šmíd smid.milos na gmail.com #mdb2e74
    Dobrý den, Martine a ostatní, xsltproc jsem dal do dll cygwinu (je to správně?) - četl jsem, že jde o knihovnu, ale kamarád mi řekl, že je to samostatný program. Mohl bys mi napsat syntax, jak tedy spustit xsltproc údajně s parametrem, odkud má vzít ten xml, který chci překonvertovat a vlastně ani nevím, který xml je pro tu konverzi nejlepší. Zjistil jsem, že pracovní složka c:\cygvin64\Home\Miloš. Se skripty nemám prakticky žádné zkušenosti, vím, že parametr se v DOSu psqal -parametr. Pochopil jsem, že struktur xml je fakt hodně - možná to z některého jde a z některého ne, netuším ... V nápovědě k Overpass-turbo není export do xml vůbec popsaný ... Ještě jednou zopakuji, že já bych potřeboval dostat tuto strukturu. <?xml version='1.0' encoding='UTF-8' standalone='yes' ?><Route> <Point><Title>Kyvadlo</Title><Lat>50.0801293</Lat><Lng>14.4250944</Lng><Description>restaurace</Description></Point> <Point><Title>zastávka tramvaje: Hellichova</Title><Lat>50.0856726</Lat><Lng>14.4042252</Lng><Description></Description></Point> ... Existuje i způsob, že ta navigace si sejme z OSM nějakou oblast a ručně se dají tyto body upravovat, ale ten prográmek, který mám je občas nestabilní a vykazuje při editaci chyby - na tom či jiném řádku. Díky. Miloš ne 5. 11. 2023 v 19:44 odesílatel Martin Ždila <martin.zdila na freemap.sk>
  8. petr.kadlec na gmail.com petr.kadlec na gmail.com #m091cb7
    Ahoj,
    Dobrý den, Martine a ostatní, xsltproc jsem dal do dll cygwinu (je to správně?) - četl jsem, že jde o knihovnu, ale kamarád mi řekl, že je to samostatný program. Mohl bys mi napsat syntax, jak tedy spustit xsltproc údajně s parametrem, odkud má vzít ten xml, který chci překonvertovat a vlastně ani nevím, který xml je pro tu konverzi nejlepší. Zjistil jsem, že pracovní složka c:\cygvin64\Home\Miloš.
    Cygwin je dneska na Windows spíš okrajový způsob spouštění skriptů, Microsoftem podporované je spíše WSL. Do Cygwinu se pak nové balíčky instalují jeho instalačním nástrojem (nějaký ten setup.exe); tam je potřeba najít balíček obsahující ten xsltproc, zaškrtnout a nechat nainstalovat; pak by v Cygwin bashi měl začít fungovat příkaz xsltproc. Ale použití XSLT pro transformaci XML nutně není potřeba dělat pod Linuxem (ať už ve formě Cygwinu, nebo WSL), existují programy zkompilované přímo pro Windows. Takže možností je určitě víc. Každopádně bych asi doporučil vzít nějaký návod (anebo se tedy zeptat toho ChatGPT :-) ) a jet podle něj. Zcela namátkou Googlem nalezený http://www.sagehill.net/docbookxsl/InstallingAProcessor.html vypadá docela rozumně (viz kapitoly Installing xsltproc on Windows a Using xsltproc). -- Petr Kadlec / Mormegil
Napsat odpověď e-mailem… Odpovědět

Otevře váš e-mailový klient. Odpovědi pak sledujte zde na webu.