Что такое API - Application Programming Interface?
Если попытаться пояснить на простом языке – это способ получить от программы/сервера ответ на ваш вопрос напрямую. Это особенно актуально для сообщения приложений между собой.
В случае с ГИС и открытыми геоданными в этом справочнике подразумевается получение необходимых данных через определенный запрос в формате http (например, через адресную строку в том же браузере).
Наглядное пояснение, что такое API (англ.):
Портал открытых данных Москвы позволяет скачивать геоданные в формате geojson только через API (особенно это касается данных в виде полигонов или линий). Для подключения к API необходимо получить ключ после регистрации на сайте.
Ссылка на документацию https://apidata.mos.ru/Docs. Самый простой способ скачивания: вбиваем адрес в адресную строку браузера и сохраняем полученный ответ как geojson файл.
Некоторые особенности работы (на 16.01.2019):
Возможно применять инструменты типа Insomnia или Postman (для продвинутых пользователей).
Приложение FME Workbench (довольно дорогое) позволяет напрямую считывать geojson с портала datamos.ru и конвертировать «на лету» в другие форматы, решая проблему "слепленных" атрибутов.
Пример: https://opendata.mkrf.ru/v1/egrkn/$/$?f={“data.general.region.id”:”29”}&l=1000 - запрос всех ОКН по Архангельской области
Запросы с большими лимитом не проходят. В текущей реализации происходит принудительное уменьшение лимита до 1000 (это видно из заголовка JSON ответа), но в следующей версии протокола они будут закрыты и сервер будет возвращать ошибку. Лучше использовать алгоритмы постраничного получения документов (забираете по 100 штук, повторяя запрос, указывая смещение XXXX ...&l=100&s=XXXX)
Альтернативным вариантом является получения полной выгрузки по ссылке с портала, например:
Обработка происходит уже локально на компьютере.
Очень распространенная задача, особенно когда требуется что-то специфическое.
Если находитесь в России, в Настройке необходимо выставить сервер https://overpass.kumi.systems/api/
Подробнее о методе составления запросов https://wiki.openstreetmap.org/wiki/Overpass_turbo/Wizard
Открываем код страницы и отыскиваем в разделе Network – XHR элементы, содержащие геоданные. Там размещаются по запросу (который можно также сохранить как API-запрос) json-элементы с координатами.
Пример (см. до момента с Openrefine):
Скриншот кода страницы с изохронами Mapzen (сайт уже закрыт)
Копируем содержимое ответа в блокнот, перебиваем формат на json.
Этот итоговый файл может быть вставлен напрямую в QGIS перетаскиванием (по сути, это уже geojson).
Это решение подойдет для координат точек, а для координат полигонов может понадобиться специалист.
Также можно использовать последние версии Excel для чтения json-данных и Openrefine.
Плагин разработан студентом МАрхИ Мавленкиным А. в рамках курса «Основы ГИС», 2017. Он позволяет посчитать доступность по слою точек в массовом порядке.
Ссылка на все материалы, последняя версия плагина (про установку читаем README_FIRST) https://www.dropbox.com/sh/jjxt5ficjlot3db/AADc4zPHfibA7EnXGVP3b-1Na?dl=0
Еще один, менее автоматизированный способ подключения к Galton через API http://prosapr.blogspot.com/2016/12/galton-qgis.html
Наглядное пояснение, что такое API (англ.):
api.datamos.ru
Портал открытых данных Москвы позволяет скачивать геоданные в формате geojson только через API (особенно это касается данных в виде полигонов или линий). Для подключения к API необходимо получить ключ после регистрации на сайте.
Ссылка на документацию https://apidata.mos.ru/Docs. Самый простой способ скачивания: вбиваем адрес в адресную строку браузера и сохраняем полученный ответ как geojson файл.
Некоторые особенности работы (на 16.01.2019):
- Атрибуты при скачивании через API "слеплены" в один. Решается разными путями, один из методов скачивания и "починки" рассмотрен Андреем Кармацким
- Некоторые наборы данных, где много полигонов, нельзя скачать за один раз. Например, слой с участками.
- Фильтр по охвату (пространственный фильтр) работает только для точек
Возможно применять инструменты типа Insomnia или Postman (для продвинутых пользователей).
Приложение FME Workbench (довольно дорогое) позволяет напрямую считывать geojson с портала datamos.ru и конвертировать «на лету» в другие форматы, решая проблему "слепленных" атрибутов.
Портал открытых данных Министерства культуры РФ
Сами данные можно скачать одним файлом, но на всю территорию РФ. Для фильтрации при скачивании можно использовать API-запросы.Пример: https://opendata.mkrf.ru/v1/egrkn/$/$?f={“data.general.region.id”:”29”}&l=1000 - запрос всех ОКН по Архангельской области
Запросы с большими лимитом не проходят. В текущей реализации происходит принудительное уменьшение лимита до 1000 (это видно из заголовка JSON ответа), но в следующей версии протокола они будут закрыты и сервер будет возвращать ошибку. Лучше использовать алгоритмы постраничного получения документов (забираете по 100 штук, повторяя запрос, указывая смещение XXXX ...&l=100&s=XXXX)
Альтернативным вариантом является получения полной выгрузки по ссылке с портала, например:
- http://opendata.mkrf.ru/opendata/7705851331-egrkn/data-43-structure-3.json?e={%22attachment%22:true} - JSON
- http://opendata.mkrf.ru/opendata/7705851331-egrkn/data-43-structure-3.xml?e={%22attachment%22:true} - XML
- http://opendata.mkrf.ru/opendata/7705851331-egrkn/data-43-structure-3.jsons?e={%22attachment%22:true} - JSON each row (отдельные JSON документы разделенные переводом строки)
Обработка происходит уже локально на компьютере.
Overpass-api - скачивание из OpenStreetMap
Скачивание данных из OpenStreetMap можно было бы вынести в отдельный блок. Основной сайт - http://overpass-turbo.eu/#Очень распространенная задача, особенно когда требуется что-то специфическое.
Если находитесь в России, в Настройке необходимо выставить сервер https://overpass.kumi.systems/api/
Рекомендую полезное упражнение по выгрузке из OSM "Город мечты".
Пример выгрузки университетов из OSM по всей территории РФ:Примеры запросов overpass
- building=* - все здания
- highway=* - все дороги
- amenity=school – все школы
- leisure=park – все парки
- sport=* - все объекты спорта
- landuse=* - объекты землепользования
- natural=water – водные объекты
- building=* in "Восточный административный округ" – все здания в ВАО (если не срабатывает, ставим обычные кавычки вокруг названия)
- amenity=bench in "Измайловский лесопарк" – все скамейки в Измайловском лесопарке
- building=* and height=* and (type:way or type:relation) – выборка зданий с высотой, точки исключены
- building=* and newer:"2 weeks" – выборка зданий, созданных/измененных за последние 2 недели
- user:osm-user (например: user:”Evgeny Shirinyan” или user:literan)
Подробнее о методе составления запросов https://wiki.openstreetmap.org/wiki/Overpass_turbo/Wizard
Извлечение геоданных из сайтов с картами
Данная операция подразумевает наличие на сайте карты с векторными объектами. Конечно, если на сайте есть обычная таблица с указанием координат, тогда вопрос чаще всего снимается. Если таковой нет, а есть лишь веб-карта, то алгоритм будет следующий.Открываем код страницы и отыскиваем в разделе Network – XHR элементы, содержащие геоданные. Там размещаются по запросу (который можно также сохранить как API-запрос) json-элементы с координатами.
Пример (см. до момента с Openrefine):
Скриншот кода страницы с изохронами Mapzen (сайт уже закрыт)
Копируем содержимое ответа в блокнот, перебиваем формат на json.
Этот итоговый файл может быть вставлен напрямую в QGIS перетаскиванием (по сути, это уже geojson).
Конвертация json в таблицу
Если в ответе вы получаете не geojson, а json (который несколько отличается по структуре и не может быть визуализирован в QGIS сразу), то есть вариант конвертировать json в простой табличный формат csv. http://www.convertcsv.com/json-to-csv.htmЭто решение подойдет для координат точек, а для координат полигонов может понадобиться специалист.
Также можно использовать последние версии Excel для чтения json-данных и Openrefine.
Galton для QGIS
Разработчик Galton довольно часто вносит корректировки, неизвестно, сколько будет поддерживаться сам сервис, но сейчас должна работать ссылка типа https://galton.urbica.co/api/foot/?lng=37.642165306088&lat=55.759526039351215&radius=5&cellSize=0.2&intervals=20&intervals=10Плагин разработан студентом МАрхИ Мавленкиным А. в рамках курса «Основы ГИС», 2017. Он позволяет посчитать доступность по слою точек в массовом порядке.
Ссылка на все материалы, последняя версия плагина (про установку читаем README_FIRST) https://www.dropbox.com/sh/jjxt5ficjlot3db/AADc4zPHfibA7EnXGVP3b-1Na?dl=0
Еще один, менее автоматизированный способ подключения к Galton через API http://prosapr.blogspot.com/2016/12/galton-qgis.html
Комментариев нет:
Отправить комментарий