Имя: Пароль:
1C
1С v8
Бесплатный геодекодинг решение для 1С
0 DGorgoN
 
01.03.21
13:02
Хочу послать куда нибудь адрес типа " НАБЕРЕЖНЫЕ ЧЕЛНЫ, ПРОЕЗД РЕЗЕРВНЫЙ, ДОМ 43/18" и получить координаты. Есть что либо бесплатное рабочее. Только прошу в ИС не посылать.
1 Mikeware
 
01.03.21
13:03
2 ДенисЧ
 
01.03.21
13:03
Да пошёл ты... На инфостарт...
3 Krendel
 
01.03.21
13:03
Апи яндекса уже не работает?
4 Garykom
 
гуру
01.03.21
13:04
(0) бесплатных нет из коробки рабочих
5 Юрий Лазаренко
 
01.03.21
13:07
&НаКлиенте
Процедура ОпределитьКоординатыПоАдресу(Команда)
    
    Координаты = ОпределитьКоординатыПоАдресуНаСервере(Объект.Адрес);
    Если ЗначениеЗаполнено(Координаты) И ТипЗнч(Координаты) = Тип("Структура") Тогда
        Объект.Широта = Координаты.Широта;
        Объект.Долгота = Координаты.Долгота;
        Модифицированность = Истина;
    Иначе
        Состояние("Не удалось определить координаты");
    КонецЕсли;
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ОпределитьКоординатыПоАдресуНаСервере(Адрес)
    
    АдресСервера = "geocode-maps.yandex.ru";
    ПутьНаСервере = "/1.x/?geocode=" + Адрес + "&results=1&apikey=<Здесь твой ключ, насколько помню он сейчас все еще бесплатно получается>";
    Попытка
        ССЛ = Новый ЗащищенноеСоединениеOpenSSL;
        ИмяВыходногоФайла = ПолучитьимяВременногоФайла();
        Соединение          = Новый HTTPСоединение(АдресСервера,,,,, 5, ССЛ);
        Соединение.Получить(ПутьНаСервере, ИмяВыходногоФайла);
        ЗапросТекстовыйДокумент = Новый ТекстовыйДокумент;
        ЗапросТекстовыйДокумент.Прочитать(ИмяВыходногоФайла);
        ТекстОтвета = ЗапросТекстовыйДокумент.ПолучитьТекст();
    Исключение
    КонецПопытки;
    ПозицияНачала = Найти(ТекстОтвета, "<pos>");
    ПозицияКонца = Найти(ТекстОтвета, "</pos>");
    Если ЗначениеЗаполнено(ПозицияНачала) И ЗначениеЗаполнено(ПозицияКонца) Тогда
        ПозицияНачала = ПозицияНачала + 5;
        Координаты = Сред(ТекстОтвета, ПозицияНачала, ПозицияКонца - ПозицияНачала);
        Координаты = СтрЗаменить(Координаты, " ", Символы.ПС);
        Возврат Новый Структура("Широта, Долгота", Число(СтрПолучитьСтроку(Координаты, 2)), Число(СтрПолучитьСтроку(Координаты, 1)));
    Иначе
        Возврат Неопределено;
    КонецЕсли;
    
КонецФункции
6 DGorgoN
 
01.03.21
13:09
"Здесь твой ключ, насколько помню он сейчас все еще бесплатно получается" - там условия, можно конечно и обмануть но чревато.
7 Юрий Лазаренко
 
01.03.21
13:34
(6) Возможно. Когда я получал, бесплатно было.
8 Вафель
 
01.03.21
13:36
9 Garykom
 
гуру
01.03.21
13:45
(8) OSM
https://nominatim.openstreetmap.org/
неплох но надо чистить адрес от всех обл., г., ул., д. и т.д.

И нет 2гис в сравнении
10 Kassern
 
01.03.21
13:54
(9) по OSM сталкивался с тем, что не все адреса находятся
11 Garykom
 
гуру
01.03.21
13:58
(10) Да сча начал тестить и очень хреново ищет
12 Garykom
 
гуру
01.03.21
14:02
(11)+ Короче понял там в OSM криво занесены наименования улиц
Вместо "2-я центральная" там забита с "улица" например "2-я центральная улица"
А ищет хорошо, только как догадаться о правильном названии?
13 Вафель
 
01.03.21
14:12
(12) заодно и исправляй )))
14 Beduin
 
01.03.21
14:19
от гугла бесплатно, до определенного количества запросов.
15 Вафель
 
01.03.21
14:21
(14) в (8) написано что нет
16 Beduin
 
01.03.21
14:23
(15) Месяц назад под андроид на нем собирал. Все работают. Дезинформируют в статье.
17 Kassern
 
01.03.21
14:23
(12) я бы все таки использовал яндекс для получения координат, а далее эти координаты уже бы использовал в OSM чтобы рисовать зоны/маршруты и т.д. для личного пользования
18 Вафель
 
01.03.21
14:25
(16) ну и на самом гугле  нет инфы о бсплатном
19 Базис
 
naïve
01.03.21
14:26
https://dadata.ru/api/geocode/
10 копеек за запись, первые 100 бесплатно.
20 DGorgoN
 
01.03.21
14:39
(17) Ну вот я так и хочу. Просто надо сначала эти координаты получить первоначально. Хотел закупщикам облегчить задачу но видимо пускай ручками делают.
21 DGorgoN
 
01.03.21
14:52
(9) Вообще не понял как с ним работать. Ни один адрес не отобразил.
22 Garykom
 
гуру
01.03.21
14:54
23 DGorgoN
 
01.03.21
15:02
Вот вроде как https://dadata.ru/suggestions/#address норм отрабатывает. Попробую с ним.
24 Garykom
 
гуру
01.03.21
15:11
(21)

    АдресСтрокой = "Архангельская Каргопольский Гавриловская 4";
    Сервер = "nominatim.openstreetmap.org";
    Соединение = Новый HTTPСоединение(Сервер, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL);
    АдресURL = КодироватьСтроку(АдресСтрокой, СпособКодированияСтроки.КодировкаURL, "UTF-8");
    Ресурс = "/search?q="+АдресURL+"&format=json";
    Запрос = Новый HTTPЗапрос(Ресурс);
    Ответ = Соединение.Получить(Запрос);
    Сообщить(Ответ.ПолучитьТелоКакСтроку());
25 Garykom
 
гуру
01.03.21
15:12
(24)+ Чтобы нашел надо убирать все "," и прочее лишнее
26 Garykom
 
гуру
01.03.21
15:15
(23) дадата хорошо но по 10коп
27 Mikeware
 
01.03.21
15:33
(26) ну сколько у конторы клиентов? если до 5000-10000 - то хоть из своего кармана оплатить можно (и записать как "два дня усердной работы"), а если больше - то можно уже покупать платное решение со всеми его преимуществами
28 Garykom
 
гуру
01.03.21
15:36
(27) мне сча надо 120000 адресов
29 Базис
 
naïve
01.03.21
15:51
(28) Можно сэкономить, 10 000 в месяц бесплатно, буквально за год сделаешь.
30 DGorgoN
 
01.03.21
16:05
(29) 10 учеток завести, пользовать бесплатные впн )
31 Базис
 
naïve
01.03.21
16:44
(30) Мне нравится разумная альтернатива яндексу и гуглу, поэтому не предлагал такое.