Определения попадания точки в контур на основе комплексного анализа. Работа с яндекс картами.

Опубликовал Ars (ars) в раздел Программирование - Практика программирования

Работа с картами яндекса и определение попадания точки в контур на плоскости.

Обработка приводит пример работы с картами яндекса.

Можно постоить свои области на карте и в последующем использовать их для определения попадания адреса в определенный район.

Расчет попадания точки в область использован из http://habrahabr.ru/post/125356/

Скачать файлы

Наименование Файл Версия Размер
Пример работы с областями на яндексе
.epf 10,31Kb
17.12.12
48
.epf 10,31Kb 48 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Яков Коган (Yashazz) 1957 18.12.12 19:15 Сейчас в теме
Где-то я фрагменты этой обработки уже видел. И "ДекодироватьURL", и особенно функцию "hex"... Автор, не забывай указывать первоисточник, которым пользовался, плиз. :)

А так - интересно своей работой с YMapsML.
2. Ars (ars) 72 18.12.12 20:32 Сейчас в теме
(1) Yashazz, это не основные особенности и если бы я помнил где их взял :)) я бы конечно указал. Основа создавалась давно, последние изменения - это комплексный анализ. Изначально определение координат было основано на географических схемах 1С, но как показала практика в 1С попадание в область рассчитывается не так как у всех :)). Там область - это окружность в центре фигуры. И если фигуры сложные, то точка оказывается сразу в нескольких областях.
3. Дмитрий (gosizo) 22 16.09.13 09:11 Сейчас в теме
Яндекс карта. допустим я поставил несколько меток, можно ли как-то смасштабировать карту (не руками, а программно), что бы масштаб был максимально увеличен и в тоже время все метки были видны (в границах карты)?
4. Ars (ars) 72 16.09.13 16:56 Сейчас в теме
(3) gosizo
Яндекс карта. допустим я поставил несколько меток, можно ли как-то смасштабировать карту (не руками, а программно), что бы масштаб был максимально увеличен и в тоже время все метки были видны (в границах карты)?

Мне кажется, это у же на java нужно писать + yandex maps api.
Вот пример создания карты
http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml
+
Установка размеров карты
http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Map.xml#setBounds

По сути тебе нужно координаты (левый верх, правый низ) свои найти и передать в setBounds
5. Дмитрий (gosizo) 22 17.09.13 11:33 Сейчас в теме
спасибо за информацию! Не могу сообразить как мне получить: "нужно координаты (левый верх, правый низ)" - у меня только список адресов в текстовом виде (например Москва Шаболовка 38 и т.д) Существует ли функция которая вернет адрес в виде координат ?
6. Ars (ars) 72 17.09.13 11:56 Сейчас в теме
спасибо за информацию! Не могу сообразить как мне получить: "нужно координаты (левый верх, правый низ)" - у меня только список адресов в текстовом виде (например Москва Шаболовка 38 и т.д) Существует ли функция которая вернет адрес в виде координат ?

В этой обработке же все есть, в поле адрес - набираем адрес, жмем получить координаты.
Другой вариант через java api yandex-а - http://api.yandex.ru/maps/doc/geocoder/desc/concepts/About.xml
PS:хотя в обработке как раз это и используется.
7. Дмитрий (gosizo) 22 27.09.13 09:51 Сейчас в теме
(6) спасибо! Буду пробовать
8. Дмитрий (gosizo) 22 27.09.13 12:56 Сейчас в теме
(6) получить координаты точек получилось, пытаюсь масштабировать - выдает ошибку "Объект не поддерживает свойство или метод getCenter". Пробовал делать так: в скрипт добавил функцию :
  function Mashtab(d1,s1,d2,s2)  	{
     map.setBounds([[d1,s1], [d2,s2]], {
        checkZoomRange: true,
     callback: function(err) {
         if (err) {
             // Не удалось показать заданный регион
             // ...
         }
     }
           });    
     }   
...Показать Скрыть


в уже сформированную карту с метками передаю параметры масштабирования:
&НаКлиенте
Процедура Маштабировать(Команда)
	Широта1 = "62,26389300";
	Долгота1 = "74,48290400";
	Широта2 = "55,80956500";
	Долгота2 = "37,71481500";
	
		Элементы.ТекстHTML.Документ.parentWindow.eval(
		"Mashtab(""" + Широта1 + """, """ + Долгота1 + """, """ + Широта2 + """," + Долгота2 + ")");
КонецПроцедуры
...Показать Скрыть


что я делаю не правильно?
9. Ars (ars) 72 27.09.13 18:01 Сейчас в теме
(8) gosizo,
Широта1 = "62,26389300";
Долгота1 = "74,48290400";
Широта2 = "55,80956500";
Долгота2 = "37,71481500";

В значениях точно должны быть запятые?

НУ и это не ко мне уже, я чесно говоря в java слабо разбираюсь.
Но нужно во первых посмотреть тип объекта - методами которого пользуешься. Может тебе яндекс другой какой то объект возвращает.
10. Fred (Aspirant) 2 30.10.13 15:46 Сейчас в теме
Можно ли выделить несколько флажков и передать в 1С их координаты (лучше адрес дома)?
Вышлите пожалуйста на magefred@mail.ru обработку, очень хочется ее потестить
11. Андрей Титов (gfoods) 02.06.15 09:56 Сейчас в теме
Здравствуйте. По какой-то причине обработка выдает ошибку.
Использую файл https://maps.yandex.ru/export/usermaps/U2-2AR_ypRW-iiwTxyxH2nTK-w-K8LBE/

{Форма.Форма(41)}: Ошибка при вызове метода контекста (Прочитать): Ошибка разбора XML:  - [6,3]
Фатальная ошибка: 
Expected end of tag 'hr' SystemId: file://C:/Users/user1/AppData/Local/Temp/v8_A065_6e.xml
	Пока Чтение.Прочитать() Цикл
по причине:
Ошибка разбора XML:  - [6,3]
Фатальная ошибка: 
Expected end of tag 'hr' SystemId: file://C:/Users/user1/AppData/Local/Temp/v8_A065_6e.xml
...Показать Скрыть



В временном файле XML оказалось вот что:
<ht ml>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.2</center>
</body>
</html>
...Показать Скрыть
12. Андрей Титов (gfoods) 02.06.15 13:56 Сейчас в теме
Спасение утопающих, дело рук самих утопающих.
Все дело в том, что Яндекс перешел на защищенное HTTPS соединение.
Для того чтоб обработка корректно сработала необходимо создавать защищенное соединение:

	ssl = Новый ЗащищенноеСоединениеOpenSSL(
                Новый СертификатКлиентаWindows(
                                СпособВыбораСертификатаWindows.Выбирать),
                Новый СертификатыУдостоверяющихЦентровWindows()); 


	НТТР = Новый HTTPСоединение(АдресСервера,443,,,ПроксиСервер,3,ssl);
13. Dima Komar (kalevra67) 29.06.15 03:41 Сейчас в теме
(12) gfoods, Большое спасибо, сам долго мучился, пока не наткнулся на ваш комментарий.