Сканирование Википедии для получения информации о координатах создает обширный готовый набор данных, на создание которого в противном случае ушли бы годы.
В Placemarkt я работаю над тем, чтобы упростить организацию и поиск мест в вашем сообществе. Мы своего рода парный возврат к Gowalla (если у вас хорошая память) или Foursquare, где основное внимание уделяется созданию и организации местоположений, а также маршрутов таким образом, чтобы защитить вашу личную информацию. Ваши данные не продаются и не используются ни для чего. Вместо этого вы платите ежегодную плату.
По мере роста сайта я искал способ предоставить пользователям больше информации об их сообществах. Мы используем OpenCage для прямого и обратного геокодирования и Thunderforest для фрагментов карты. Поскольку оба основаны на данных OpenStreetMap, мы решили, что мир с открытым исходным кодом будет отличным местом для поиска, чтобы построить более богатую и текстурированную карту. Войдите в Википедию.
Когда тема статьи в Википедии относится к географическому местоположению, которое может быть представлено системой координат, в этой статье часто будет отображаться карта или, по крайней мере, координаты широта/долгота. Язык шаблонов Википедии представляет эти координаты следующим образом:
{{Coord|29.44408|-98.48031|display=title}}
Учитывая более 6 миллионов статей в Википедии, это представляет собой кладезь интересной информации, и, к счастью, приверженность Википедии сообществу открытого исходного кода означает, что они делают все свои данные доступными для загрузки.
Конечно, это не так просто, как просто проанализировать CSV-файл, предоставленный Википедией, с идентификатором статьи, названием и координатами. Потому что этого не существует. Вместо этого нам нужно было разобрать дампы вики и самим сгенерировать такой файл. Для этого мы сделали следующее:
- Захватите дамп данных XML и индексные файлы Википедии
- ruwiki-latest-pages-articles-multistream.xml.bz2
- ruwiki-latest-pages-articles-multistream-index.txt.bz2
Файл дампа данных включает в себя всю англоязычную Википедию. Файл индекса содержит смещение в байтах для каждой статьи в дампе данных.
2. Используйте индексный файл для распаковки частей XML-файла с помощью dd
.
Это позволило нам последовательно проверять всю Википедию на небольшом сервере, используя dd
для разрезания файла дампа данных на более мелкие фрагменты, которые можно было распаковывать и обрабатывать по одному.
3. Проанализируйте вывод на наличие координат, используя комбинацию grep
, xmlstarlet
и C
Получив идентификатор каждой статьи, мы смогли затем использовать регулярное выражение для извлечения шаблона координат, который мы затем проанализировали с помощью небольшой программы C
.
Вот репозиторий Github со сценарием bash, который мы использовали для всего этого. Вклады всегда приветствуются!
В итоге мы смогли получить более 400 000 координат из дампа данных и создать CSV-файл с идентификатором статьи, названием и координатами, который выглядит следующим образом:
63205443|Swift Valley Nature Reserve|52.39405 -1.25831 63205477|Deskie Castle|57.35540 -3.33310 63207626|Llewellyn Glacier|59.08333 -134.08333 63207822|Baghdad (North Gate) War Cemetery|33.35510 44.38620 63207930|Hang Ten Icefield|58.87500 -133.71667 63209775|Vistula Spit canal|54.35556 19.31111 63211601|Fairview Cemetery, Niagara Falls|43.10800 -79.08900 63213750|Man Uk Pin|22.52638 114.18437 63213728|Higashi-Ikebukuro runaway car accident|35.72606 139.71889 63213956|Kinkelenburg Castle|51.88960 5.89617 63214322|Shenzhen Bogang F.C.|22.73208 113.81822 63214383|Scottsdale National Golf Club|33.74878 -111.81502 63214411|Kensington House (academy)|51.50209 -0.18652 63216802|Hercules Powder Plant Disaster|40.87200 -74.63700 63217229|Fiestas patronales de Ponce|18.00000 -66.61667 63218528|Heung Yuen Wai|22.52732 114.19866
Вот файл CSV, который вы можете скачать, содержащий всю информацию о координатах Википедии, если вы не хотите запускать предоставленный мной скрипт. Файл будет обновляться каждый месяц, чтобы не отставать от новых материалов Википедии.
Ну и что дальше? Во-первых, я буду работать над тем, чтобы превратить эти координаты из Википедии в интерактивные локации на сайте Placemarkt. Далее я буду добавлять информацию о тропах и походах. Мы также работаем над приложением для iOS, которое должно скоро выйти.
Чтобы быть в курсе того, что мы делаем, вы можете подписаться на меня в Twitter.