CoderCastrov logo
CoderCastrov
Офлайн карты

Парсинг данных о государственных парках Калифорнии для оффлайн доступа

Парсинг данных о государственных парках Калифорнии для оффлайн доступа
просмотров
3 мин чтение
#Офлайн карты

У штата Калифорния есть отличный веб-сайт, на котором можно искать государственные парки и сужать результаты по функциям или местоположению.

Он работает довольно хорошо, если у вас есть хорошее интернет-соединение. Но проблема в том, что интернет-соединение не всегда доступно во время путешествий (особенно в некоторых из этих парков). Я хочу получить набор данных, который я могу использовать для создания файла .kmz, чтобы видеть местоположение парков на своем телефоне, когда у меня нет сигнала.

Как я могу создать этот набор данных?

У Калифорнии есть удобная страница Найти парк. Как она работает?

Давайте покопаемся в веб-инспекторе и посмотрим, можем ли мы найти данные. Данные о парках находятся в однострочном JSON-файле размером более 250 КБ на строке 1013 файла HTML.

var vParksJson = [{"long_name":"Admiral William Standley","type_desc":"State Recreation Area","District":"North Coast Redwoods District"…

Давайте загрузим этот файл, чтобы работать с ним.

❯ curl -O 'https://www.parks.ca.gov/parkindex'

vParksJson содержит все данные о парках, их местоположении и особенностях.

Я написал скрипт на Python, который разбирает данные и сохраняет их в файл .csv, и сделал его доступным на GitHub. Если вас интересуют подробности о скрипте на Python, я расскажу об этом в будущем посте о преобразованиях Starlark. После загрузки CSV-файла я могу использовать командную строку Qri для версионирования и обмена данными:

❯ python parkindex_to_csv.py
❯ mkdir ca_state_parks
❯ cd ca_state_parks
❯ qri init --source-body-path ../ca_state_parks.csv
Name of new dataset [ca_state_parks]: 
initialized working directory for new dataset feep/ca_state_parks
❯ $EDITOR readme.md
# typeity typeity
❯ qri commit -m 'Initial data and readme.'
for linked dataset [feep/ca_state_parks]dataset saved: feep/ca_state_parks@/ipfs/QmQTp8uwX6GYWQX1LbuNAg25gzYgagq3DTE1L7vkzBTdk6
❯ qri publish
for linked dataset [feep/ca_state_parks]published dataset feep/ca_state_parks@QmZm4EyJFMxFPPCqKgqTCXrULvXZSG2EXXZYZDctwdYsg2/ipfs/QmQTp8uwX6GYWQX1LbuNAg25gzYgagq3DTE1L7vkzBTdk6

Я сделал все это в терминале, но у Qri есть отличное приложение для рабочего стола, которое может делать все, что я сделал здесь. Скачать Qri Desktop, если вы предпочитаете избежать использования терминала.

Теперь, когда у нас есть данные, что мы можем создать?

Я хочу получить файл .kmz, который я могу использовать, чтобы увидеть все государственные парки с пешеходными и велосипедными кемпингами.

Этот скрипт работает с более новой версией набора данных, чем та, которую генерирует parkindex_to_csv.py. Мы должны загрузить его с qri.cloud.

❯ qri add feep/ca_state_parks

feep/ca_state_parks/ipfs/QmQTp8uwX6GYWQX1LbuNAg25gzYgagq3DTE1L7vkzBTdk6
59 kB, 283 записей, 111 ошибокУспешно добавлен набор данных feep/ca_state_parks❯ qri checkout feep/ca_state_parks
создана и связана рабочая директория /Users/rusty/qri/data-stories-scripts/ca-state-parks/ca_state_parks для существующего набора данных❯ python csv_to_kml.py

Если вы хотите создать свой собственный файл .kmz (.kml и .kmz - это файловые форматы Google, похожие на .gpx), используя другие парки, csv_to_kml.py доступен на GitHub. Если вам нужен только файл .kmz, он также доступен там. Как только у вас есть файл .kmz, передайте его на свой телефон или GPS и откройте его. Вам понадобится приложение, которое может использовать файл .kmz. MAPS.ME и Guru Maps оба могут это сделать.

Теперь у вас есть информация о кемпингах, доступная в автономном режиме для маршрутизации или планирования.

Доступные местоположения парков в автономном режиме.

Более подробная информация и интересные функции Qri

Версии наборов данных Qri с метаданными, структурой, скриптами преобразования и readme, все в одном документе.

Итак, мы написали некоторый код на Python, который генерирует файл данных, и опубликовали его в качестве набора данных на Qri, где другие энтузиасты данных могут найти его и использовать для создания полезных отчетов, файлов .kmz или информативных визуализаций. Мы живем мечтой.

Хорошо, почти.

Преобразования

Что если источник изменится? Просто запустите скрипт снова. Если кто-то еще хочет обновить набор данных, ему понадобится скрипт и все его зависимости.

Возможно, вы думаете: "Qri нужен способ хранить инструмент, который генерирует набор данных вместе с самим набором данных." Ну, вы везучий человек. У Qri есть то, что нам нужно: преобразования.

Хотите написать скрипт transform.star, чтобы автоматизировать обновления набора данных? Вы знаете, что хотите. Я расскажу об этом в следующем посте.


Если вам нужен набор данных для создания чего-то интересного, он доступен здесь: https://qri.cloud/feep/ca_state_parks. Если вы что-то создадите, покажите нам. Мы с удовольствием посмотрим, что вы сделали.