Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.04.2021
Сообщений: 82

Ошибка десерилизации данных от Nominatim OSM

06.06.2024, 10:25. Показов 870. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток
Я пытаюсь получить координаты от сервера Nominatim OSM
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var options = new JsonSerializerOptions
            {
                PropertyNameCaseInsensitive = true
            };
 
            string address = "Ниагарский водопад";
            string ask_url = $"https://nominatim.openstreetmap.org/ui/search.html?q={address}&format=json";
                       
            using HttpClient Client = new();
            using var response = await Client.GetAsync(ask_url);
            ArgumentNullException.ThrowIfNull(response.Content);
            var stream = response.Content.ReadFromJsonAsAsyncEnumerable<ResponseOSM>(options);
            await foreach (var item in stream)
Модель:
Кликните здесь для просмотра всего текста

public class ResponseOSM
{
public int place_id { get; set; }
public string? licence { get; set; }
public string? osm_type { get; set; }
public string? osm_id { get; set; }
public string? lat { get; set; }
public string? lon { get; set; }
public string? Class { get; set; }
public string? type { get; set; }
public int place_rank { get; set; }
public double importance { get; set; }
public string? addresstype { get; set; }
public string? name { get; set; }
public string? display_name { get; set; }
public List<string> boundingbox = [];
}

Так вот, при получении данных я получаю ошибку
Кликните здесь для просмотра всего текста

Exception has occurred: CLR/System.Text.Json.JsonException
An exception of type 'System.Text.Json.JsonException' occurred in System.Private.CoreLib.dll but was not handled in user code: ''<' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.'
Inner exceptions found, see $exception in variables window for more details.
Innermost exception System.Text.Json.JsonReaderException : '<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
at System.Text.Json.ThrowHelper.ThrowJsonRe aderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
at System.Text.Json.Utf8JsonReader.ConsumeV alue(Byte marker)
at System.Text.Json.Utf8JsonReader.ReadFirs tToken(Byte first)
at System.Text.Json.Utf8JsonReader.ReadSing leSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonConve rter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)

Помогите , пожалуйста, разобраться , что я делаю не так
Браузер возвращает данные:
Кликните здесь для просмотра всего текста

[
{
"place_id": 304055149,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "node",
"osm_id": 708267915,
"lat": "43.0772688",
"lon": "-79.0749683",
"category": "waterway",
"type": "waterfall",
"place_rank": 20,
"importance": 0.331859350128987,
"addresstype": "waterfall",
"name": "Водопад "Подкова"",
"display_name": "Водопад "Подкова", Ниагара-Фолс, Niagara Region, Golden Horseshoe, Онтарио, L2G 7X5, Канада",
"boundingbox": [
"43.0772188",
"43.0773188",
"-79.0750183",
"-79.0749183"
]
},
{
"place_id": 304552999,
"licence": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright",
"osm_type": "way",
"osm_id": 56539663,
"lat": "43.0784134",
"lon": "-79.07432660200001",
"category": "tourism",
"type": "attraction",
"place_rank": 30,
"importance": 0.331859350128987,
"addresstype": "tourism",
"name": "Водопад "Подкова"",
"display_name": "Водопад "Подкова", Goat Island Road, Ниагара-Фолс, округ Ниагара, Нью-Йорк, 14302, Соединённые Штаты Америки",
"boundingbox": [
"43.0768247",
"43.0799669",
"-79.0784358",
"-79.0731312"
]
}
]
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2024, 10:25
Ответы с готовыми решениями:

Проблема десерилизации данных XML
Здраствуйте. Имеется база данных в формате xml в необычном формате, помогите сделать алгоритм выводящий id(состоящий из самого id и owner...

[Newtonsoft.Json] Ошибка десерилизации
Раньше делал это стандартными Нет средствами - ошибок не было. Стало необходимым юзать либу по сабжу для кросплатформености, так вылазиет...

Локально OSM города из pbf или .osm возможно?
Можно ли создать страницу навигации для небольшого города не связываясь с постгрес и джавой? Установил OSRM с запиткой от .pbf, ...

5
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
06.06.2024, 13:46
agapa, прочитайте ответ как строку и подумайте, что может быть не так.
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.06.2024, 14:22
Цитата Сообщение от agapa Посмотреть сообщение
/ui/search.html
Дык вы запрашиваете UI (user interface) и файл HTML, вот он вам и возвращает интерфейс в формате HTML.

https://nominatim.openstreetmap.org/search.php?q={address}&format=json
1
0 / 0 / 0
Регистрация: 01.04.2021
Сообщений: 82
09.06.2024, 15:53  [ТС]
Доброе время суток
Спасибо за советы
Я понял.
Но как мне считать геолокационные данные?
Я поменял строку на:
string ask_url = $"https://nominatim.openstreetmap.org/search?q={address}&format=json"; - как на сайте
На запрос мне выдало:
Кликните здесь для просмотра всего текста

Access blocked
... You have been blocked because you have violated the ref="https://operations.osmfoundation.org/policies/nominatim" usage policy no OSM's Nominatim geocoding service...
0
176 / 74 / 27
Регистрация: 10.11.2023
Сообщений: 199
09.06.2024, 17:11
Лучший ответ Сообщение было отмечено agapa как решение

Решение

agapa,
прочитать сообщение, пройти по ссылке, прочитать требования .

Добавлено через 3 минуты
Requirements
....
Provide a valid HTTP Referer or User-Agent identifying the application (stock User-Agents as set by http libraries will not do).
....


C#
1
2
3
   using HttpClient Client = new();
   client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0");
   using var response = await Client.GetAsync(ask_url);
0
0 / 0 / 0
Регистрация: 01.04.2021
Сообщений: 82
10.06.2024, 19:43  [ТС]
Доброе время суток
ZeroKara, спасибо за подсказку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.06.2024, 19:43
Помогаю со студенческими работами здесь

Парсинг вложенных объектов. JSON. Nominatim. OpenStreetMap
Есть ответ сервера в формате json, это был запрос к Nominatim - OpenStreetMap { &quot;place_id&quot;: &quot;76721530&quot;, ...

osm фаил
Подскажите как сделать загрузить osm фаил в postgre пробовал через Osm2pgsql,делал как на хабр написано. Но не вышло. так как при...

Структура OSM
Доброго времени суток! Был снабжен заданием построить матрицу высот по OSM-картам. Сейчас занимаюсь парсингом .osm, читая вики, обнаружил,...

Osm offline
Нужно сделать приложение, на основе open street map, способное сохранять определенную область. С сохранением проблема. Не могу найти...

MapKit с overlay OSM
Доброго времени суток! Есть ряд вопросов связанных с MKOverlay 1) Смогу ли я получить точные координаты используя overlay 2) Сначала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Настройка записи справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru