Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Определение координаты точки на карте          
mavrik Подменю пользователя
сообщение 29.05.12, 8:48
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 120
Из: Украина
Спасибо сказали: 2 раз
Рейтинг: 0

Есть координаты точки А, и есть координаты точок,некой площади,нужно как то определить лежит ли точка А, в этой площади.?Есть какой то алгоритм решения.?

Skodnik Подменю пользователя
сообщение 29.05.12, 9:54
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 49
Из: Ukraine
Спасибо сказали: 2 раз
Рейтинг: 0

Надо подставить координаты точки в уравнение плоскости, если получится верное равенство, то точка принадлежит плоскости.


Вот нашел: [необходимо зарегистрироваться для просмотра ссылки]

mavrik Подменю пользователя
сообщение 30.05.12, 8:06
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 120
Из: Украина
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(mavrik @ 29.05.12, 9:48) *
Есть координаты точки А, и есть координаты точок,некой площади,нужно как то определить лежит ли точка А, в этой площади.?Есть какой то алгоритм решения.?

Перефразирую вопрос,Мне нужно ка кто определять находится ли транспортное средство например в городе или нет. Есть координаты которые передает gps из транспортного средства, и координаты окружности города. Зарание благодарен

Acid Подменю пользователя
сообщение 30.05.12, 8:32
Сообщение #4

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 379 раз
Рейтинг: 0

определяете прямоугольную область значениями Х и У и Z. И проверяете значения координаты этой точки на больше/меньше/равно.


Signature

Документируйте Код! мать вашу...


mavrik Подменю пользователя
сообщение 30.05.12, 15:54
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 120
Из: Украина
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Acid @ 30.05.12, 9:32) *
определяете прямоугольную область значениями Х и У и Z. И проверяете значения координаты этой точки на больше/меньше/равно.

Я извиняюсь я не понял можна чуть детальние

faiden Подменю пользователя
сообщение 30.05.12, 21:53
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 27
Из: Евпатория
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(mavrik @ 30.05.12, 9:06) *
Перефразирую вопрос,Мне нужно ка кто определять находится ли транспортное средство например в городе или нет. Есть координаты которые передает gps из транспортного средства, и координаты окружности города. Зарание благодарен


Если черту города аппроксимировать как окружность, то приводить все нужно к формуле круга: R2 >= X2 + Y2. В данном случае R - максимальное расстояние от центра города до окраины, грубо говоря, "радиус" города (поскольку город мы аппроксимируем окружностью). Пусть у нас Х1 и Y1 - соответственно долгота и широта координаты центра города, X2 и Y2 - долгота и широта координаты транспортного средства. Тогда, если выполняется условие (Х2-X1)2 + (Y2-Y1)2 <= R2, тогда транспортное средство в черте города, если нет - тогда за пределами.
Если же черту города аппроксимировать как прямоугольник с координатами X1Y1/Х2Y2, где X1Y1 - координаты "левого нижнего" угла, а Х2Y2 - координаты "правого верхнего" угла города, а координата транспортного средства X3Y3, тогда проверка еще проще:
Если (X1 <= X3 ) и (X3 <= X2) и (Y1 <= Y3) и (Y3 <= Y2) Тогда
   Cообщить("транспортное средство в черте города.");
КонецЕсли

mavrik Подменю пользователя
сообщение 31.05.12, 9:51
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 120
Из: Украина
Спасибо сказали: 2 раз
Рейтинг: 0

Нашол иное решение через JS.Выдает ошибку к двум двоеточием координат х,у при запуске скрипта . И возможно будет в массив points загнать таблицу значений з координатами широты и долготы, и как правильно передать в функцию isPointInPoly, координату на проверку.Подскажите возможно ли такое ришение?
Скрипт= СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.AddCode("
|function isPointInPoly(poly, pt){
|for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
|((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y))
|&& (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)
|&& (c = !c);
|return c;
|}
|points = [
|{x: 0, y: 0},
|{x: 0, y: 50},
|{x: 50, y: 10},
|{x: -50, y: -10},
|{x: 0, y: -50},
|{x: 0, y: 0}
|];
|");
Текст=СокрЛП(Скрипт.Run("isPointInPoly(points, {x: 10, y: 10})"));



Нашол иное решение через JS.Выдает ошибку к двум двоеточием координат х,у при запуске скрипта . И возможно будет в массив points загнать таблицу значений з координатами широты и долготы, и как правильно передать в функцию isPointInPoly, координату на проверку.Подскажите возможно ли такое ришение?
    Скрипт= СоздатьОбъект("MSScriptControl.ScriptControl");
    Скрипт.language="javascript";
    Скрипт.AddCode("
    |function isPointInPoly(poly, pt){
    |for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
    |((poly[i].y <= pt.y && pt.y < poly[j].y) || (poly[j].y <= pt.y && pt.y < poly[i].y))
    |&& (pt.x < (poly[j].x - poly[i].x) * (pt.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x)
    |&& (c = !c);
    |return c;
    |}
    |points = [
    |{x: 0, y: 0},
    |{x: 0, y: 50},
    |{x: 50, y: 10},
    |{x: -50, y: -10},
    |{x: 0, y: -50},
    |{x: 0, y: 0}
    |];
    |");
    Текст=СокрЛП(Скрипт.Run("isPointInPoly(points, {x: 10, y: 10})"));


Цитата(faiden @ 30.05.12, 22:53) *
Если черту города аппроксимировать как окружность, то приводить все нужно к формуле круга: R2 >= X2 + Y2. В данном случае R - максимальное расстояние от центра города до окраины, грубо говоря, "радиус" города (поскольку город мы аппроксимируем окружностью). Пусть у нас Х1 и Y1 - соответственно долгота и широта координаты центра города, X2 и Y2 - долгота и широта координаты транспортного средства. Тогда, если выполняется условие (Х2-X1)2 + (Y2-Y1)2 <= R2, тогда транспортное средство в черте города, если нет - тогда за пределами.
Если же черту города аппроксимировать как прямоугольник с координатами X1Y1/Х2Y2, где X1Y1 - координаты "левого нижнего" угла, а Х2Y2 - координаты "правого верхнего" угла города, а координата транспортного средства X3Y3, тогда проверка еще проще:
Если (X1 <= X3 ) и (X3 <= X2) и (Y1 <= Y3) и (Y3 <= Y2) Тогда
   Cообщить("транспортное средство в черте города.");
КонецЕсли

В моем случаи не выйдет,мне нежно контролировать скорость передвижения, насколько я понял,а если транспортное средство будет на окраине но приделах города,и за приделами города.То что за приделами мне ненужно

Kaliban Подменю пользователя
сообщение 31.05.12, 10:42
Сообщение #8

Говорящий
Иконка группы
Группа: Местный
Сообщений: 97
Спасибо сказали: 28 раз
Рейтинг: 0

"Задача о принадлежности точки многоугольнику"
use google, Luke !

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 22.06.25, 8:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!