Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение координаты точки на карте
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
mavrik
Есть координаты точки А, и есть координаты точок,некой площади,нужно как то определить лежит ли точка А, в этой площади.?Есть какой то алгоритм решения.?
Skodnik
Надо подставить координаты точки в уравнение плоскости, если получится верное равенство, то точка принадлежит плоскости.


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

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

Я извиняюсь я не понял можна чуть детальние
faiden
Цитата(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
Нашол иное решение через 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
"Задача о принадлежности точки многоугольнику"
use google, Luke !
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.