Как получить информацию о полигоне?
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Как получить информацию о полигоне?
Здравствуйте!
Подскажите пожалуйста, есть ли в MapBasic`e функции для получения информации о полигоне?
Дано: Полигон
Найти:
Длины сторон и внутренние углы между ними?
Координаты вершин я нашёл при помощи комманд ObjectNodeX, ObjectNodeY, но как получить все остальное незнаю.
Подскажите пожалуйста, есть ли в MapBasic`e функции для получения информации о полигоне?
Дано: Полигон
Найти:
Длины сторон и внутренние углы между ними?
Координаты вершин я нашёл при помощи комманд ObjectNodeX, ObjectNodeY, но как получить все остальное незнаю.
-
- Завсегдатай
- Сообщения: 257
- Зарегистрирован: 10 июн 2009, 12:21
- Репутация: 0
- Откуда: Екатеринбург
- Контактная информация:
Re: Как получить информацию о полигоне?
функций нет, можно получить по формулам.
http://geostart.ru/phpBB/viewtopic.php? ... 6bf11a80e1
http://geostart.ru/phpBB/viewtopic.php? ... 6bf11a80e1
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как получить информацию о полигоне?
Спасибо за формулы, но там нахождение координаты точки B, а у меня все координаты известны.
Реальные длины сторон моего полигона не больше 2 км.
Реальные длины сторон моего полигона не больше 2 км.
-
- Завсегдатай
- Сообщения: 257
- Зарегистрирован: 10 июн 2009, 12:21
- Репутация: 0
- Откуда: Екатеринбург
- Контактная информация:
Re: Как получить информацию о полигоне?
Обратная геодезическая задача - это вычисление дирекционного угла α и длины S линии, соединяющей два пункта с известными координатами X1, Y1 и X2, Y2
α одной стороны - α другой стороны = внутренний угол (перед вычислениями определиться с направлением цифрования каждого полигона, а то получится в одних случаях внутренний угол, в других внешний)
α одной стороны - α другой стороны = внутренний угол (перед вычислениями определиться с направлением цифрования каждого полигона, а то получится в одних случаях внутренний угол, в других внешний)
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как получить информацию о полигоне?
Спасибо что разъяснили, иду обратно по ссылке и внимательно читаю!
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как получить информацию о полигоне?
Координаты
A = 102.562|56.7276
B = 102.58|56.7323
Переписал формулы:
dX := (BLat-ALat);
dY := (BLng-ALng);
AB := sqrt(dX*dX+dY*dY);
Результат:
AB = 111.432860637067
Расчёт не верный =((, подскажите что не так делаю?
A = 102.562|56.7276
B = 102.58|56.7323
Переписал формулы:
dX := (BLat-ALat);
dY := (BLng-ALng);
AB := sqrt(dX*dX+dY*dY);
Результат:
AB = 111.432860637067
Расчёт не верный =((, подскажите что не так делаю?
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Как получить информацию о полигоне?
даже не обращая внимания на то, что у вас градусы, хочу обратить внимание, что по вашим же формулам посчитали вы неверно
пристегивайтесь, турбулентность прямо по курсу
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как получить информацию о полигоне?
Я так понимаю для координат земли эти формулы не подходят?Максим Дубинин писал(а):даже не обращая внимания на то, что у вас градусы, хочу обратить внимание, что по вашим же формулам посчитали вы неверно
Градусы сконвертировал в проекцию Гауса - Крюгера
теперь они выглядят так:
|18348292.07|6293607.82|
|18348789.22|6293612.05|
|18348780.75|6292666.43|
|18348632.67|6292700.28|
Но длины сторон все равно не получается получить, расчитываются однотипного вида:
21954206.5166644
21954615.0393914
21955045.8959673
21954814.105304
Хрень какаето =((((
- asgs
- Участник
- Сообщения: 89
- Зарегистрирован: 04 авг 2010, 06:35
- Репутация: 1
- Контактная информация:
Re: Как получить информацию о полигоне?
Попробуйте сделать вывод на печать промежуточных результатов dX и dY, возможно, станет яснее, где ошибка. Пока сильно похоже на опечатку, например, где-то вместо dX стоИт dY или наоборот.
Злобный йожег
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Как получить информацию о полигоне?
странно, по вашим же данным в excel-е получаются такие длины:agentbond007 писал(а): |18348292.07|6293607.82|
|18348789.22|6293612.05|
|18348780.75|6292666.43|
|18348632.67|6292700.28|
Но длины сторон все равно не получается получить, расчитываются однотипного вида:
21954206.5166644
21954615.0393914
21955045.8959673
21954814.105304
Хрень какаето =((((
497.17
945.66
151.90
969.35
проверьте код
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как получить информацию о полигоне?
Спасибо за совет проверить код, ошибка именно там, координата X2 постоянно равнялась = 1, исправил! Всё получилось! Всем спасибо
- agentbond007
- Активный участник
- Сообщения: 100
- Зарегистрирован: 14 дек 2010, 15:14
- Репутация: 0
Re: Как получить информацию о полигоне?
Выявил разницу в длинах, может подскажите в чем дело?
В MapInfo наношу, например длину стороны полигона 100.0, а после построения моя программа показывает 100.2
Привожу скрин шот расчётов моей программы и значений MapInfo при построении:
В MapInfo наношу, например длину стороны полигона 100.0, а после построения моя программа показывает 100.2
Привожу скрин шот расчётов моей программы и значений MapInfo при построении:
- Вложения
-
- Координаты.JPG (30.58 КБ) 13488 просмотров
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Как получить информацию о полигоне?
по координатам сразу видно, что длина первой линии = именно 100.18, а второй - 100.34
если вы заносили координаты в рассчете на получение длины 100, то неудача скорее всего объясняется системой координат таблицы (или установленной в программе)
в данном случае получилось, что 100 м целиком не укладываются во внутреннюю сетку хранения координат для таблицы. И MI берет ближайший узел, а его координаты могут и не совпадать с заданными (не намного, как раз на размер ячейки такой сетки).
а еще мерять в MI вы можете на сфере, в то время как для расчета используете плоскость - не проверял на таких расстояниях, мож и есть отличие, но там по-моему разница в другую сторону должна быть.
если вы заносили координаты в рассчете на получение длины 100, то неудача скорее всего объясняется системой координат таблицы (или установленной в программе)
в данном случае получилось, что 100 м целиком не укладываются во внутреннюю сетку хранения координат для таблицы. И MI берет ближайший узел, а его координаты могут и не совпадать с заданными (не намного, как раз на размер ячейки такой сетки).
а еще мерять в MI вы можете на сфере, в то время как для расчета используете плоскость - не проверял на таких расстояниях, мож и есть отличие, но там по-моему разница в другую сторону должна быть.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Как получить информацию о полигоне?
Присоединяюсь к SergS с небольшим уточнением:
при проблемах с точностью посмотрите здесь viewtopic.php?f=17&t=4708&hilit=%D1%82% ... %8C#p21653
но поскольку речь идет о погрешности около 0.5 (м?), то для внутренней структуры сетки координат такая погрешность будет при шаге самой сетки в 0.5, что для сетки в 2 миллиарда ячеек даст 0,5 * 2*10^9 = 10^9 метров = 1 млн. км. А есть ли столько на Земле?
Хотя известны случаи когда в план-схеме задавали границы в 1 млн. км, хотя мыслили метрами.
Если это не тот случай, то надо смотреть разницу между измерениями на плоскости и на сфере.
при проблемах с точностью посмотрите здесь viewtopic.php?f=17&t=4708&hilit=%D1%82% ... %8C#p21653
но поскольку речь идет о погрешности около 0.5 (м?), то для внутренней структуры сетки координат такая погрешность будет при шаге самой сетки в 0.5, что для сетки в 2 миллиарда ячеек даст 0,5 * 2*10^9 = 10^9 метров = 1 млн. км. А есть ли столько на Земле?
Хотя известны случаи когда в план-схеме задавали границы в 1 млн. км, хотя мыслили метрами.
Если это не тот случай, то надо смотреть разницу между измерениями на плоскости и на сфере.
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Как получить информацию о полигоне?
дополню немножко:
при создании таблицы в СК 42 (в данном случае 18 зона?) без дополнительных ухищрений получаем:
Bounds (10250718.461, -10002137.4978) (26749281.539, 10002137.4978)
что дает размер сетки dx=0.008249282 и dy=0.010002137 (м)
т.е. примерно 1 сантиметровая точность, но именно что примерно. практически никогда не удается создать точку с координатами точно сантиметр в сантиметр - всегда туда сюда гулять будет.
PS цифры не причесывал, как MI с excel посчитали, так и выдал
при создании таблицы в СК 42 (в данном случае 18 зона?) без дополнительных ухищрений получаем:
Bounds (10250718.461, -10002137.4978) (26749281.539, 10002137.4978)
что дает размер сетки dx=0.008249282 и dy=0.010002137 (м)
т.е. примерно 1 сантиметровая точность, но именно что примерно. практически никогда не удается создать точку с координатами точно сантиметр в сантиметр - всегда туда сюда гулять будет.
PS цифры не причесывал, как MI с excel посчитали, так и выдал
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость