You are not logged in.

#51 2012-05-31 20:19:40

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

Я видимо, совсем тупой, плохо объясняю. Есть два принципиально разных способа прикрутить сплайн, пусть какую-то кривую Безье, на геоид.   

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

Второй - кривая сначала строится в двумерной плоскости долгота-широта, а потом уже _каждая_ точка получившейся кривой стандартно проецируется на геоид. Получается какая-то кривая на геоиде, гладкая, изгибающаяся. И вот здесь уже если точек пересечения не было, то их и не возникнет.

chnav wrote:

Рисуем две геодезические линии (по дуге большого круга на сфере или эллипсоиде, т.е. кратчайшей прямой) с азимутом отличным от 0°, параллельные, отстоящие на десяток метров. Естественно они не пересекаются.

Это как это не пересекаются??? Вы нашли два непересекающихся больших круга на сфере?

Offline

#52 2012-05-31 20:43:53

Zkir
Member
From: Хрустальная Москва
Registered: 2009-02-21
Posts: 6,110

Re: curves (splines) for drawing in OSM

Mir76 wrote:

_каждая_ точка получившейся кривой стандартно проецируется на геоид.

Это называется -  была векторная карта, а стала растровая smile
--
Массовый проект должен быть простым, а сплайны/Безье это слишком сложно.


Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.

Offline

#53 2012-05-31 21:55:41

Vovanium
Member
Registered: 2009-07-23
Posts: 1,094

Re: curves (splines) for drawing in OSM

Mir76 wrote:

Второй - кривая сначала строится в двумерной плоскости долгота-широта, а потом уже _каждая_ точка получившейся кривой стандартно проецируется на геоид. Получается какая-то кривая на геоиде, гладкая, изгибающаяся. И вот здесь уже если точек пересечения не было, то их и не возникнет.

Возникает несколько ненавязчивых вопросов:
а) То есть, помимо прямого расчёта полинома 3-й степени (быстрые алгоритмы отрисовки вроде брезенхема уже ушли лесом) предлагается считать тригонометрические функции в каждой точке?
б) Что насчёт 180 меридиана?
в) Как быть с вычислением длины, площади и пр. аналитикой? Считать приближенно в лоб?


Мне KekcuHa обещал подарить навигатор. Как жаль, у меня уже есть.

Offline

#54 2012-06-01 05:11:23

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

Mir76 wrote:

Это как это не пересекаются??? Вы нашли два непересекающихся больших круга на сфере?

Две непересекающиеся дуги (отрезка). Я этого хлебнул по горло когда рисуешь планшеты в UTM. Это совсем нетривиальная задача.

PS: Zverik очень точно подметил про растр.

Last edited by chnav (2012-06-01 05:22:06)

Offline

#55 2012-06-01 05:38:35

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

И вообще что такое сплайн в картографии и ГИС-съемке...
Отрезок я могу измерить физическими методами, проверить рулеткой. Окружность тоже измеряется. А как в поле измеряется сплайн, какой строитель, станок или прибор способен его изготовить - я не знаю. ИМХО максимум какую кривую можно поддерживать в базе - дугу окружности. Хотя даже с ней возникнут проблемы.

Offline

#56 2012-06-01 13:38:36

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

Zkir wrote:
Mir76 wrote:

_каждая_ точка получившейся кривой стандартно проецируется на геоид.

Это называется -  была векторная карта, а стала растровая smile

Не, не стала smile Я написал математическую абстракцию про каждую точку, чтобы понятней было. В реальности сплайн все равно заменится на ломаную (векторную!) и потом она спроецируется в нечто многозвенное на геоиде. Проектирование отрезка ломаной отторжения не вызывает?

Zkir wrote:

Массовый проект должен быть простым, а сплайны/Безье это слишком сложно.

   

Это уже другой вопрос - "нужны ли сплайны". Я пока говорю про "возможны ли"  smile

Offline

#57 2012-06-01 13:50:17

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

Vovanium wrote:

а) То есть, помимо прямого расчёта полинома 3-й степени (быстрые алгоритмы отрисовки вроде брезенхема уже ушли лесом) предлагается считать тригонометрические функции в каждой точке?
б) Что насчёт 180 меридиана?
в) Как быть с вычислением длины, площади и пр. аналитикой? Считать приближенно в лоб?

а) сплайн пересчитывается в ломаную, она уже по одному звену проецируется стандартными, работающими сейчас методами проецирования отрезков. Кроме того, тригонометрия считается сопроцессором очень быстро, быстрее полиномов на самом деле. Для совсем критичных приложений можно и предвычисленные тригтаблицы задействовать и даже целочисленную арифметику.   
б) не вижу особых проблем. Гораздо страшнее полюса, от них лучше отрезаться, хотя бы по 80 градусу. И есть четкое желание ограничить область применения сплайнов объектами меньше 20 километров  в диаметре. Берег озера, поворот дороги - что-нибудь такое.
в) способ из пункта а) сводит все эти задачи к уже решенным. Кроме того, в каждой конкретной задаче можно подумать над аналитическим решением, ускоряющим вычисления. Оно будет сильно зависеть от исходного определения сплайна.

Offline

#58 2012-06-01 16:01:55

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

chnav wrote:

Рисуем две геодезические линии (по дуге большого круга на сфере или эллипсоиде, т.е. кратчайшей прямой) с азимутом отличным от 0°, параллельные, отстоящие на десяток метров. Естественно они не пересекаются.
Одну из линий делим на отрезки (также по кратчайшей прямой, т.е. дуге большого круга) через 1-10 км и ставим на ней промежуточные точки. Линии по-прежнему не пересекаются (на эллипсоиде).
Переводим массивы координат в меркатор и любуемся результатом.

А ведь здесь проблема в том, что нет четкой договоренности как именно проводить даже не сплайн - а отрезок прямой по двум концевым точкам. Даже что  вообще такое - отрезок прямой на эллипсоиде. В принципе даже в меркаторе можно потребовать, чтобы отрезок соединял две точки по дуге большого круга. Тогда он выглядеть на карте будет совсем не прямым, зато с пересечениями будет более адекватно.

Offline

#59 2012-06-03 19:28:33

Vovanium
Member
Registered: 2009-07-23
Posts: 1,094

Re: curves (splines) for drawing in OSM

Mir76 wrote:

а) сплайн пересчитывается в ломаную, она уже по одному звену проецируется стандартными, работающими сейчас методами проецирования отрезков. Кроме того, тригонометрия считается сопроцессором очень быстро, быстрее полиномов на самом деле. Для совсем критичных приложений можно и предвычисленные тригтаблицы задействовать и даже целочисленную арифметику.

То есть, насколько я понимаю, приходим к следующему:
Решение не даёт преимущества, которые могли бы дать сплайны (гладкость), так как любую ломаную и так можно уже строить.
Решение создаёт дополнительные сложности в реализации.


Мне KekcuHa обещал подарить навигатор. Как жаль, у меня уже есть.

Offline

#60 2012-06-04 03:07:24

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

Vovanium wrote:

Решение не даёт преимущества, которые могли бы дать сплайны (гладкость), так как любую ломаную и так можно уже строить.

Из сплайна можно получить ломанную с любой точностью. А из ломанной сплайн — нельзя.

Offline

#61 2012-06-04 05:50:37

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

Повторю свой вопрос - какими инструментами и с какой точностью можно измерить сплайн на местности.

Offline

#62 2012-06-04 06:24:08

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

chnav wrote:

Повторю свой вопрос - какими инструментами и с какой точностью можно измерить сплайн на местности.

Линейкой с любой наперёд заданной точностью, аппроксимируя его полилинией.

Встречный вопрос: зачем его измерять с какой-то неимоверной точностью?

Offline

#63 2012-06-04 08:56:12

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

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

Offline

#64 2012-06-04 09:09:59

grisha
Member
Registered: 2010-10-10
Posts: 11

Re: curves (splines) for drawing in OSM

Ilis wrote:

Из сплайна можно получить ломанную с любой точностью. А из ломанной сплайн — нельзя.

Почему же нельзя? Полно методов нахождения сплайнов по имеющемуся набору точек, и в зависимотси от количества контрольных точек так же можно получить любую точность.
И самое интересное - все это можно сделать не затрагивая OSM. Взять например все motorway и trunk на какой-нибудь местности и преобразовать их в сплайны с погрешностью скажем в полметра. И посмотреть будет ли какое-либо преимущество по занимаемой памяти и скорости обработки по сравнению с алгоритмами на основе упрощения ломаных. И уже имея такие результаты можно либо агитировать за добавление сплайнов в OSM либо признать что это будет излишним усложнением.

Offline

#65 2012-06-04 10:49:19

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

grisha wrote:

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

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

Offline

#66 2012-06-04 11:45:22

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

Vovanium wrote:

То есть, насколько я понимаю, приходим к следующему:
Решение не даёт преимущества, которые могли бы дать сплайны (гладкость), так как любую ломаную и так можно уже строить.
Решение создаёт дополнительные сложности в реализации.

Нет, не приходим. Как сейчас рисуется поворот дороги если мы хотим, чтобы он выглядел гладко? Натыкивается много-много точек. Как это делается при помощи сплайна? Натыкивается 3 или 4 точки. Поскольку сплайн в пространстве "долгота-широта", то во всех проекциях он пройдет ровно по тем точкам местности, которые мы видим при создании (так можно софт написать), поэтому за точки можно его подогнать к реальной дороге. Получаем гладкую кривую, что и хотели.   

Так он и лежит в базе четырьмя точками. Если кому-то захочется его рендерить или считать геометрию - он приближает сплайн ломаной (по понятным формулам) - и делает свое дело. Чем глаже и точнее хочет - тем больше точек в свою ломаную добавляет. 

Фактически мы перекладываем функцию "натыкивание много-много точек" с юзера на железяку, причем вполне контролируемым (в отличие от тупого сглаживания имеющихся сейчас точек) способом.

Вообще, чтобы понять ситуацию достаточно вместо страшного слова "сплайн" думать про обычную дугу окружности - с ней все те же достоинства и недостатки. И что такое "дуга на эллипсоиде" без бутылки не разобраться, и заменяет она одна кучу точек, и софт весь перепахивать надо...

Offline

#67 2012-06-04 11:49:04

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

grisha wrote:

Взять например все motorway и trunk на какой-нибудь местности и преобразовать их в сплайны с погрешностью скажем в полметра

Знаете, я видел целую довольно толстую книжку на тему приближения ломаных сплайнами. Адски трудная и непонятная задача на самом деле smile

Offline

#68 2012-06-04 11:56:40

Mir76
Member
From: Екатеринбург
Registered: 2009-12-18
Posts: 1,455

Re: curves (splines) for drawing in OSM

chnav wrote:

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

Не может smile

Offline

#69 2012-06-04 12:09:22

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

Вся 3D-графика строится на сглаживании, достаточно перенести этот опыт в 2D.

Еще раз повторю - сплайн в природе нельзя измерить, это аппарат для CorelDraw и рисовальных программ, а не CAD/GIS. Линейкой (касательные) углы не измеришь. А для интерполяции по точкам сплайн может построить и рендер.
Например рисуем way из трех нодов и ставим атрибут geometry=arc. Стандартный рендер нарисует ломаную, а другой, специально написанный - дугу.

Last edited by chnav (2012-06-04 12:17:56)

Offline

#70 2012-06-04 12:17:19

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

Для чего измерять сплайн в природе?

Offline

#71 2012-06-04 12:22:22

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

Ilis wrote:

Для чего измерять сплайн в природе?

Для того что ОСМ в первую очередь работает с координатами и даже позиционируется как свободная карта мира. Дороги и здания не строят по сплайнам. Если же обрисовывать природные объекты, то сгладить углы может рендер.

Last edited by chnav (2012-06-04 12:25:05)

Offline

#72 2012-06-04 12:27:02

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

chnav wrote:

Дороги и здания не строят по сплайнам.

Возьмём, к примеру, Колизей:
300px-Brockhaus_and_Efron_Encyclopedic_Dictionary_b30_685-0.jpg

Offline

#73 2012-06-04 12:30:49

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

Или Дворец игровых видов спорта в Екатеринбурге: http://goo.gl/maps/YTI5 (и здание рядом с ним)

Offline

#74 2012-06-04 12:35:57

chnav
Member
From: Russia, mapping Kazakhstan
Registered: 2010-03-18
Posts: 3,264

Re: curves (splines) for drawing in OSM

Покажите мне строительный чертеж этого сооружения в виде сплайнов, или попробуйте на бумаге нарисовать произвольный сплайн при помощи линейки и циркуля. Причем с указанием параметров, чтобы другой картограф смог воспроизвести точно такую же линию smile
PS: за два года начерталки не припомню чтобы мы хоть раз чертили сплайны.

(added)
Ilis, всё что вы приводите в пример строится по дугам.

Last edited by chnav (2012-06-04 12:39:00)

Offline

#75 2012-06-04 12:39:53

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: curves (splines) for drawing in OSM

chnav wrote:

Покажите мне строительный чертеж этого сооружения в виде сплайнов

Оба этих сооружения выполнены в форме эллипсов.

chnav wrote:

или попробуйте на бумаге нарисовать произвольный сплайн при помощи линейки и циркуля.

А кроме циркуля и линейки почему ничего нельзя?

Эллипс замечательно рисуется с помощью верёвочки и пары колышков:
ellipse.jpg

Offline

Board footer

Powered by FluxBB