GPS souÅ™adnice Äeských mÄ›st a obcÃ
Pro zobrazovánà poloh dopadů meteosond na IRC jsem potÅ™eboval v jednoduchém CSV formátu seznam souÅ™adnic Äeských mÄ›st, ale ukázalo se, že je pÅ™ekvapivÄ› obtÞné nÄ›co takového zÃskat. Sice existuje tabulka na jednom astronomickém webu, výbÄ›r tam zahrnutých obcà je ale docela divný, nÄ›kde je mÃsto obce jen jejà Äást, atd.
Nakonec jsem zvolil postup “udÄ›lej si sám”, a to kombinacà seznamu na Wikipedii, Google Geocoding API a trochy XPath.
Seznam rozumné podmnožiny mÄ›st mohu zÃskat tÅ™eba pomocÃ:
curl 'http://cs.wikipedia.org/w/index.php?title=Seznam_obc%C3%AD_s_roz%C5%A1%C3%AD%C5%99enou_p%C5%AFsobnost%C3%AD&action=edit' | sed -ne 's/^# \[\[\([^]|]*|\)*\([^]]*\)\]\].*/\2/p' | sort
Mám-li zase jméno obce, jejà souÅ™adnice mohu zÃskat tÃmto zaklÃnadlem:
m=AÅ¡; curl -s 'http://maps.googleapis.com/maps/api/geocode/xml?address='"${m// /+},+CZ"'&sensor=false' | xmllint --xpath '//location[lat or lng]//text()' -
(Důležitý trik je to ,CZ, jinak bude Google znát spoustu KolÃnů a AÅ¡ bude znamenat Americká Samoa. AlternativnÄ› si můžete z výsledků vyfiltrovat ty Äeské pomocà XPath //result[address_component/short_name/text()="CZ"]/geometry/location[lat or lng]//text()
.)
TeÄ už to pro vygenerovánà jednoduchého CSV staÄà spojit dohromady:
curl 'http://cs.wikipedia.org/w/index.php?title=Seznam_obc%C3%AD_s_roz%C5%A1%C3%AD%C5%99enou_p%C5%AFsobnost%C3%AD&action=edit' | sed -ne 's/^# \[\[\([^]|]*|\)*\([^]]*\)\]\].*/\2/p' | sort | while read m; do echo -n $m curl -s 'http://maps.googleapis.com/maps/api/geocode/xml?address='"${m// /+},+CZ"'&sensor=false' | xmllint --xpath '//location[lat or lng]//text()' - | tr -s '\n' ' ' | tr ' ' ',' echo sleep 0.1 done | sed 's/,$//'
Rádi byste hotové CSV?
Bonus: PodobnÄ› vygenerované CSV s pražskými Äástmi (katastrálnÃmi územÃmi).
Bonus 2: A ještě CSV s obcemi s přenesenou působnostà (dalšà velké obce a města)
Recent Comments