Загрузка широты и длины в umap / osm с использованием python

#python-3.x #openstreetmap

#python-3.x #openstreetmap

Вопрос:

У меня есть скрипт на python, который позволяет мне получать из openstreetmap широту и долготу, но сейчас я ищу, как создать пользовательскую карту в OSM (или uMap), которая позволяет мне загружать кучу координат широты и долготы и добавлять точку на карте для каждой пары широта и долгота. Я знаю, что могу вручную загрузить CSV-файл, но на карте нужно разместить много точек, и я не могу загрузить пакет из 100 тысяч точек в одном csv-файле. Как я могу этого добиться?

РЕДАКТИРОВАТЬ: Следуя ответу @Michael2, я создал новую карту и пытаюсь выполнить запрос post. Однако я немного запутался с идентификатором карты и идентификатором слоя.

Если я создам новую карту, давайте назовем ее « mymap «, тогда идентификатор будет « mymap_64813 » или просто « 64813 «? « 64813 » — это число, которое выдает мне umap. И я не могу понять, где найти идентификатор слоя : (

Ответ №1:

Для uMap вы можете эмулировать POST-запрос, который umap использует для хранения данных GEOJSON. Создайте новую карту и запишите идентификатор карты, идентификатор основного слоя данных (umap поддерживает несколько слоев на карту) и файл cookie вашего сеанса.

Затем выполните POST-запрос к:

 https://umap.openstreetmap.de/de/map/<id of the map>/datalayer/update/<id of the layer>/
  

Обязательно отправьте файлы cookie для владельца и csrf-токена

Содержимое должно быть составным запросом формы со следующими полями:

  • name : Строка имени слоя
  • display_on_load : true
  • rank : 0
  • geojson : Файл с типом содержимого application/json и фактическими данными о точках в формате GEOJSON.

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

Комментарии:

1. Привет @Michael2, спасибо за ответ. Идентификатор слоя — это название слоя?

2. А также, извините за вопрос новичка, но как работает cookie для владельца и csrf-токена? Я не делал ничего подобного раньше, поэтому я смотрю на Google все это. Я нашел файл cookie csrftoken (?), Но я не знаю, что с этим делать. Кроме того, я предполагаю, что мне нужно использовать модуль requests python, но как мне создать структуру запроса post?

3. Привет @Michael2, мне удалось получить (я думаю), что такое идентификатор карты и идентификатор слоя. В результате при выполнении запроса post я получаю «Запрещено». Какова структура содержимого в запросе post?

4. Если вы получаете запрещенный, вы отправили неправильный файл cookie и токен CSRF. Откройте ваш браузер. Нажмите F12. Перейдите на вкладку сеть. Вы увидите все HTTP-запросы, выполняемые вашим браузером. В вашем запросе вам необходимо включить все файлы cookie поля, отправляемые вашим браузером. Вам необходимо включить два токена аутентификации: первый — это токен CSRF. Это часто меняется и является просто функцией безопасности. Второй — это ваш фактический логин. Если одно из этих значений неверно, вы не получите ошибку 403

5. Ооо, я понял. Спасибо @Michael2, я просматривал токен CSRF и токен sessionid на вкладке приложения. Я вижу, что многое происходит, когда я перемещаюсь и ищу местоположения. Я попытался загрузить один маркер, используя только структуру geojson, но я увидел только много данных в формате .png и только одну информацию: файл изображения / gif. Как я могу сделать так, чтобы токен CSRF отображался в списке? Или я делаю это неправильно? Я также предполагаю, что токен идентификатора входа в систему я должен получить при фактическом входе в систему, верно?