curves (splines) for drawing in OSM

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

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

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

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

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

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

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

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

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

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

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

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

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

Не может :slight_smile:

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

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

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

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

Возьмём, к примеру, Колизей:

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

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

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

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

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

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

Кстати, на уроках черчения эллипс замечательно чертят циркулем и линейкой :slight_smile:

Ну если эллипс и окружность для вас являются сплайном…

Это не эллипс, это дуги окружности.

Я знаю.

… то что?