Блогът на Фил

Nothing to see here, move along
  • rss
  • Home
  • About
  • profiles

Автоматично сваляне на POI-та за забележителности

felipe

Хората, които ме познават лично знаят, че последните години пътувам в чужбина като турист. Когато отивам в нов град, за да зная какво забележителности има за гледане, проверявам английската уикипедия за този град и после хвърлям и един поглед на wikitravel. Но в общи линии основната ми процедура е да отворя статията в уикипедия и да нащракам всички връзки в нея, които не са за понятия, а за обекти. Повечето от тях са геотагнати и след като прочета малко за тях и реша дали ми харесват си записвам координатите им и после ги въвеждам в телефона ми като POI-та. Което е ужасно бавно и досадно, а и за съжаление не е унифициран формата на координатите и съществуват статии с различен формат, което налага да превключвам формата в настройките на програмата ми (Mappero), което е още по-досадно. Отдавна се каня да напиша някакъв код, който да ми автоматизира процеса и вчера най-накрая се наканих. Написаната програмка/скрипт/апликейшън/солюшън :-D е на python и е пробвана под Линукс.
Тя прави следното:

  • пуска заявка към geonames за името на града, получен като единствен параметър от командния ред и по този начин получава координатите
  • получените координати пуска като заявка към XML API на wikilocation. От там получава всички статии в радиус от 5 километра то центъра на града.
  • Обхожда XML файла и генерира файл с име poi.gpx, в който има се съдържат всички статии като точки с техните координати, с име името на статията и с описание хипервръзката към статията в уикипедия.

    Файлът poi.gpx директно се внася в mappero.
    Кодът е даден по-долу:
    from lxml import etree
    from os.path import basename
    from urlparse import urlsplit
    import urllib2
    import sys

    def url2name(url):
    return basename(urlsplit(url)[2])

    def download(url, localFileName = None):
    localName = url2name(url)
    req = urllib2.Request(url)
    r = urllib2.urlopen(req)
    f = open(localFileName, 'wb')
    f.write(r.read())
    f.close()

    city_str=sys.argv[1]
    download("http://api.geonames.org/search?q="+city_str+"&maxRows=1&fuzzy=0.8&username=XXXXXXXXXX", "./geoname")
    city = etree.parse("geoname")
    element = city.getroot()
    city_lat =city.find("geoname/lat")
    city_lon =city.find("geoname/lng")
    download("http://api.wikilocation.org/articles?lat="+city_lat.text+"&lng="+city_lon.text+"&limit=50&radius=5000&format=xml", "articles")
    context = etree.iterparse("articles")
    article_dict = {}
    articles = []

    for action, elem in context:
    if not elem.text:
    text = "None"
    else:
    text = elem.text
    article_dict[elem.tag] = text
    if elem.tag == "article":
    articles.append(article_dict)
    article_dict = {}

    f = open('poi.gpx', 'w')
    f.write("")
    f.write("")
    for a in articles:
    f.write(" ")
    f.write(""+a["title"].encode('utf8')+"")
    f.write(""+a["url"].encode('utf8')+"")
    f.write("")

    f.write("")
    f.close()


    Забележка:
    Трябва ви потребитеско име, за да използвате API-тата на geonames. В кода трабва да смените XXXXXXXXXX с вашето потребителско име.

    Comments
    No Comments »
    Categories
    пътуване, софтуер
    Tags
    GPS, Mappero, N900, POI, wikipedia, wikitravel
    Comments rss Comments rss
    Trackback Trackback

    felipe

    “През цялата история, бездействието на тези, които можеха да действат, незаинтересоваността на тези, които знаеха, че така не бива, мълчанието на гласа на справедливостта, когато това беше най-важното, направи възможен триумфа на злото” Хайле Селасие

    Comments
    No Comments »
    Categories
    Uncategorized
    Comments rss Comments rss
    Trackback Trackback

    Европейската криза обяснена в анимационно филмче

    felipe

    Comments
    No Comments »
    Categories
    BNW, skull-fucked, видео, вселената и всичко останало, животът
    Comments rss Comments rss
    Trackback Trackback

    felipe
    Honda Robotics Unveils Next-Generation ASIMO Robot - IEEE Spectrum
    Honda Robotics Unveils Next-Generation ASIMO Robot – IEEE Spectrumhttp://spectrum.ieee.org/automaton/robotics/humanoids/honda-robotics-unveils-next-generation-asimo-robotРоботът ASIMO на Honda има нова версия, като прави някои много впечатляващи неща.
    Comments
    No Comments »
    Categories
    Uncategorized
    Comments rss Comments rss
    Trackback Trackback

    Робот се катери по стени

    felipe
    Gecko-Inspired Robot Rolls Up Walls : Discovery News
    Gecko-Inspired Robot Rolls Up Walls : Discovery Newshttp://news.discovery.com/tech/gecko-inspired-robot-111101.htmlБях гледал по Дискавъри за тази материя, която може да се залепя за стените като тези гекони (речникът твърди че така се казват на български този вид гущери), но работещ робот, който няма лапи, а вериги и може да се катери по стени – супер!
    Comments
    No Comments »
    Categories
    Uncategorized
    Comments rss Comments rss
    Trackback Trackback

    Електрическа кола за 7000$

    felipe
    50 Companies Team to Create Open Source EV | Autopia | Wired.com
    50 Companies Team to Create Open Source EV | Autopia | Wired.comhttp://www.wired.com/autopia/2011/10/meet-the-one-modular-ev-created-by-fifty-companies/StreetScooter e електрическа кола за $7,000 с максимална скорост от 120 км/ч и обхват от 130 км/ч.
    Comments
    No Comments »
    Categories
    Uncategorized
    Comments rss Comments rss
    Trackback Trackback

    Expedition 30 Cosmonauts Perform Spacewalk

     
    This image of Russian cosmonauts Oleg Kononenko and Anton Shkaplerov, both Expedition 30 flight engineers, was taken during a spacewalk on Thursday, Feb. 16, 2012. During the six-hour, 15-minute spacewalk, Kononenko and Shkaplerov moved the Strela-1 crane from the Pirs Docking Compartment in preparation for replacing it in 2012 with a new laboratory and docking module. The duo used another boom, the Strela-2, to move the hand-operated crane to the Poisk module for future assembly and maintenance work. Both telescoping booms extend like fishing rods and are used to move massive components outside the station. On the exterior of the Poisk Mini-Research Module 2, they also installed the Vinoslivost Materials Sample Experiment, which will investigate the influence of space on the mechanical properties of the materials. The spacewalkers also collected a test sample from underneath the insulation on the Zvezda Service Module to search for any signs of living organisms. Both spacewalkers wore Russian Orlan spacesuits bearing blue stripes and equipped with NASA helmet cameras. Image Credit: NASA
    Read More

    Случаен цитат

    There’s an ugly name for those who do things the hard way. — Чешърския котарак

    I am reading now

    Cryptonomicon
    635 / Pages
    Cryptonomicon

     

    November 2011
    M T W T F S S
    « Oct   Dec »
     123456
    78910111213
    14151617181920
    21222324252627
    282930  

    чурулик

    • Инсталирам#ubuntu на новия нетбук на майка ми
    • Ако #ACTA ви се струва гадория, вижте това: http://t.co/HMsbzILn Монсанто има патенти върху прасета, които не са генно модифицирани!
    • http://t.co/Nrrmy1Zc Гъзарите, които теглиха кредити, за да живеят на широко не могат да си ги плащат и попадали в омагьосан кръг. #shocked

    Blogroll

    • Блогът на Дино
    • Блогът на Камен
    • Блогът на Краси
    • Търсене в интернет

    User-submitted Links

    No recommended links yet. Add one?

    • Newest
    • Hot
    • Current
    • Top ranked

    Spam

    6,421
    SPAM BLOCKED
    rss Comments rss valid xhtml 1.1 design by jide powered by Wordpress get firefox