Wikipedista:Matěj Suchánek/Případ LocMap
Původní diskuse: Diskuse k šabloně:LocMap#Využití Wikidat. Související diskuse: Wikipedie:Bot/Žádosti o provedení práce#žádost o doplnění infoboxu kostel.
Uvedení do problému
editovatV článcích o místech, jako jsou města nebo hory, se v infoboxech vyplňuje parametr |loc-map
, kterým se do článků vkládá mapa, na které je vyznačeno dané místo. Obsahem tohoto parametru bývá vyplněná šablona {{LocMap}}
. Příklad z článku Kiruna:
| loc-map = {{LocMap |Švédsko |label=Kiruna |position=right |width=150 |lat=67.85 |long=20.216667 |float=center |caption=}}
V těchto článcích pak bývají v infoboxech vyplněny i parametry zeměpisných souřadnic a samotný název místa, např.
| název = Kiruna | zeměpisná šířka = 67.85 | zeměpisná délka = 20.216667
Všimněme si, že obsah těchto parametrů je shodný s parametry |lat
a |long
, resp. |label
. Právě tímto vznikají v článcích zbytečné duplicity údajů nebo jejich nesourodosti, které nemusí být vůbec zřetelné, zvlášť pokud jsou v daném článku přebírány souřadnice z Wikidat (zeměpisné souřadnice (P625)).
Řešení problému
editovatJako řešení se nabízí vytvářet LocMapy pomocí parametrů zadaných infoboxu (tímto způsobem se v článcích již spravují souřadnice). Tím by zároveň bylo dosaženo konzistentního zobrazení ve všech článcích s daným infoboxem (ne-li rovnou napříč všemi infoboxy). Toto se týká zejména parametrů |width
, |float
, |caption
a také |relief
. Parametry |lat
a |long
mají své protějšky v parametrech |zeměpisná šířka
, resp. |zeměpisná délka
, parametr |label
pak v parametru |název
nebo podobném.
Parametr |position
určuje polohu textu u bodu na mapě, aby tento nepřetékal mimo mapu. Řešením by mohlo být zavedení hodnoty auto
v šabloně {{LocMap}}
, která by správné umístění textu odhadovala pomocí pevně stanovených práhových hodnot (řekněme 25–75 %).
Zbývá už jen první nepojmenovaný parametr, který společně se souřadnicemi patří mezi ty nejdůležitější. V článku Kiruna (město ve Švédsku) má hodnotu Švédsko
– pomocná šablona {{LocMap+}}
tak hledá šablonu LocMap Švédsko
, která skutečně existuje. Z jejího kódu pak získává tyto důležité údaje:
{{#switch:{{{1}}} | name = Švédsko | top = 69.5 | bottom = 55.1 | left = 10.4 | right = 24.6 | image = Sweden location map.svg | image1 = Sweden relief location map.jpg }}
Jedná se o obrázky, které slouží jako podklad (politická a obecně zeměpisná mapa, které volí zmíněný parametr |relief
), a souřadnice jejich okrajů, díky kterým se potom stupně přepočítají na pixely, čímž se bod na podkladu napozicuje pomocí CSS správně.
Tento parametr v tomto případě odpovídá státu, ve kterém se místo nachází. Infoboxy sice vesměs parametr |stát
nebo podobný podporují, drtivá většina jich však nevynucuje zadání v požadovaném tvaru, tedy jako prostý text. Navíc (dle původní diskuse) neplatí, že podklad je vždy mapou daného státu (kupř. v Rusku).
Odstraňování šablon z článků tedy musí doprovázet některá z těchto změn:
- Přebírání státu, resp. vyšší administrativní jednotky z Wikidat – stát (P17) je jedna z nejčastěji používaných vlastností, díky kategorizačním stromům ji lze snadno importovat. Prostý text lze z cílové položky získat buď jako název článku na české Wikipedii, nebo jako štítek položky. Vyšší administrativní jednotku představuje vlastnost nachází se v administrativní jednotce (P131), jejíž import z kategorizačních stromů je také možný, byť v tomto případě pracnější, na druhou stranu její správné využití by vyžadovalo zavedení složitější mechanismů (skrze moduly).
- Zavedení parametru
|loc-map poloha
(nebo jinak pojmenovaného), jehož hodnota by korespondovala s hodnotou onoho prvního nepojmenovaného parametru šablony{{LocMap}}
. Převod v článcích by vypadal takto:
Předtím | Poté |
---|---|
| název = Kiruna | stát = {{Vlajka a název|Švédsko}} | zeměpisná šířka = 67.85 | zeměpisná délka = 20.216667 | loc-map = {{LocMap |Švédsko |label=Kiruna |position=right |width=150 |lat=67.85 |long=20.216667 |float=center |caption=}} |
| název = Kiruna | stát = {{Vlajka a název|Švédsko}} | zeměpisná šířka = 67.85 | zeměpisná délka = 20.216667 | loc-map poloha = Švédsko |
- Tímto by sice vznikaly další duplicity, konkrétně s parametrem
|stát
, na druhou stranu by se tím vyřešil problém zmíněný v původní diskusi, tedy užívání podkladů nižších administrativních jednotek.
- Tímto by sice vznikaly další duplicity, konkrétně s parametrem
- Vynucení prostého textu v parametrech
|stát
. Tento parametr by pak infobox používal jak pro zobrazení běžného údaje (jako odkaz nebo šablonou{{Vlajka a název}}
), tak pro tvorbu LocMap. Převod by pak vypadal takto:
Předtím | Poté |
---|---|
| název = Kiruna | stát = {{Vlajka a název|Švédsko}} | zeměpisná šířka = 67.85 | zeměpisná délka = 20.216667 | loc-map = {{LocMap |Švédsko |label=Kiruna |position=right |width=150 |lat=67.85 |long=20.216667 |float=center |caption=}} |
| název = Kiruna | stát = Švédsko | zeměpisná šířka = 67.85 | zeměpisná délka = 20.216667 |
- To by ovšem nevyřešilo problém zmíněný v původní diskusi, pro nějž je jediným řešením bod číslo 2. Jako další možné úskalí tohoto řešení se jeví objekty (především jezera nebo hory), které se nacházejí na území více států. Na druhou stranu by tato změna byla zpětně kompatibilní se šablonou
{{Infobox - sídlo světa}}
(tedy i v článku Kiruna), která vyžaduje zadání státu ve formě prostého textu.
- To by ovšem nevyřešilo problém zmíněný v původní diskusi, pro nějž je jediným řešením bod číslo 2. Jako další možné úskalí tohoto řešení se jeví objekty (především jezera nebo hory), které se nacházejí na území více států. Na druhou stranu by tato změna byla zpětně kompatibilní se šablonou
Centrální správa LocMap
editovatSoučasný systém vyžaduje, aby se pro každou LocMapu zakládala vlastní šablona ({{LocMap Švédsko}}
). Za zvážení však také stojí zavedení centrální správy – pomocí modulu, případně Wikidat. (Implementace je díky víceúrovňové tvorbě LocMap na řešení předešlého problému nezávislá.)
Modul
editovatMějme moduly Modul:LocMap a Modul:LocMap/data. První by poskytoval přístup k údajům v druhém. Struktura druhého modulu by mohla vypadat takto:
return {
["Česko"] = {
top = 51.3,
bottom = 48.3,
left = 11.8,
right = 19.2,
image = "Czech Republic location map.svg",
image1 = "Relief Map of Czech Republic.png",
},
["Slovensko"] = {
top = 49.8,
bottom = 47.6,
left = 16.6,
right = 23.0,
image = "Slovakia location map.svg",
image1 = "Relief Map of Slovakia 2.png",
},
["Švédsko"] = {
top = 69.5,
bottom = 55.1,
left = 10.4,
right = 24.6,
image = "Sweden location map.svg",
image1 = "Sweden relief location map.jpg",
},
-- atd.
}
Struktura toho prvního pak třeba takto:
local p = {}
local data = mw.loadData("Modul:LocMap/data")
function p.getField(frame)
return p._getField(frame.args)
end
function p._getField(args)
if args.map and args.field then
if data and data[args.map] then
return data[args.map][args.field]
end
end
end
return p
Pomocná šablona {{LocMap+}}
by pak byla upravena tak, aby využívala tento modul.
Wikidata
editovatNa Wikidatech je LocMapám věnována vlastnost mapa umístění (P1943), resp. fyzická mapa umístění (P1944), nicméně jediným ukládaným údajem je název souboru. Důležitý údaj souřadnic okrajů podporován není. Tento problém (v současné době řešitelný asi jen pomocí vymezení) by však mohl vyřešit příchod strukturovaných dat na Wikimedia Commons, na jejichž vývoji se na konci roku 2016 intenzivně pracovalo.