You are not logged in.
- Topics: Active | Unanswered
Announcement
#26 2012-05-25 13:16:12
- s777n
- Member
- Registered: 2012-03-04
- Posts: 315
Re: curves (splines) for drawing in OSM
Осмарендер скруглял углы. Делал он это, мягко говоря, хреново.
А остальные не скругляют разве? Просто не разу не видил что-бы где то с этим проблемы были. ТО что должно быть круглым - на карте круглое что квадтратным - то квадратное))
Offline
#27 2012-05-25 17:41:35
- Vovanium
- Member
- Registered: 2009-07-23
- Posts: 1,094
Re: curves (splines) for drawing in OSM
Vovanium wrote:Ну так зачем же компромиссы? Есть кривые, которые гораздо точнее аппроксимируют дуги и проще в обсчёте: это дуги. smile
Как раз дуги — это компромисс, а сплайны — универсальный инструмент.
Это чем же сплайны универсальнее дуг?
Мне KekcuHa обещал подарить навигатор. Как жаль, у меня уже есть.
Offline
#28 2012-05-27 06:40:01
- denizzz
- Member
- Registered: 2011-03-09
- Posts: 134
Re: curves (splines) for drawing in OSM
дваждую кривые второго порядка - они довольно простые. На геоид тоже должны красиво лечь, вроде бы...
Offline
#29 2012-05-28 21:52:09
- Mir76
- Member
- From: Екатеринбург
- Registered: 2009-12-18
- Posts: 1,455
Re: curves (splines) for drawing in OSM
А почему требуется чтобы кривая шла по трехмерному геоиду? Мапить вы ее все равно будете на двумерном экране -> вся двумерная геометрия работает.
Offline
#30 2012-05-28 22:24:01
- Sergey Astakhov
- Member
- From: St.Petersburg, Russia
- Registered: 2009-11-13
- Posts: 5,779
Re: curves (splines) for drawing in OSM
А почему требуется чтобы кривая шла по трехмерному геоиду? Мапить вы ее все равно будете на двумерном экране -> вся двумерная геометрия работает.
В каком конкретно месте она работает? В epsg:4326 (как хранится в БД), или в epsg:3857 (меркатор на шаре, как отображается в josm и в мапнике)?
А если я захочу отобразить в epsg:3395 (как на яндекс-картах), где уже не шарик, а эллипсоид?
Last edited by Sergey Astakhov (2012-05-28 22:24:36)
Offline
#31 2012-05-29 06:48:53
- PShA
- Member
- Registered: 2011-07-26
- Posts: 170
Re: curves (splines) for drawing in OSM
Заставить валидатор ругаться, если длина дуги > 100 метров.
Тогда во всех проекциях оно будет практически одинаковое
Offline
#32 2012-05-29 13:15:16
- Mir76
- Member
- From: Екатеринбург
- Registered: 2009-12-18
- Posts: 1,455
Re: curves (splines) for drawing in OSM
Если сплайн это кривая в координатах "долгота-широта", то она отобразится в любой проекции. Я так думаю.
Offline
#33 2012-05-29 14:03:21
- dkiselev
- Member
- Registered: 2010-02-09
- Posts: 3,364
Re: curves (splines) for drawing in OSM
Отобразится то отобразится только сильно по разному может отобразиться, ну и как следствие в разных координатах будет/не будет к примеру пересекаться с чем-нибудь.
mail: dkiselev@osm.me skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!
Offline
#34 2012-05-29 14:17:56
- Mir76
- Member
- From: Екатеринбург
- Registered: 2009-12-18
- Posts: 1,455
Re: curves (splines) for drawing in OSM
Если у двух кривых есть точка пересечения (с конкретной широтой и долготой), то они должны пересечься в этой точке в любой проекции. Разве не так? Углы и прямизна/кривизна изменятся, это да, так это проблема всех проекций сферы на плоскость.
Offline
#35 2012-05-29 14:55:07
- PShA
- Member
- Registered: 2011-07-26
- Posts: 170
Re: curves (splines) for drawing in OSM
Нет, не так, в некоторых они могут пересекаться, в некоторых - нет
Могу заблуждаться, но что-то мне подсказывает что это так...
Offline
#36 2012-05-29 14:59:32
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: curves (splines) for drawing in OSM
Про то, что новички что-то там наломают, вообще не аргумент. Давайте релейшены сначала запретим чтобы не ломали.
Это как раз аргумент, массовый проект должен быть в первую очередь простой и устойчивый к каким-то не очень аккуратным действиям, иначе объекты будут пребывать в поломатом состоянии.
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#37 2012-05-29 17:25:53
- Ilis
- Member
- From: Екатеринбург
- Registered: 2009-05-24
- Posts: 5,970
Re: curves (splines) for drawing in OSM
Ilis wrote:Про то, что новички что-то там наломают, вообще не аргумент. Давайте релейшены сначала запретим чтобы не ломали.
Это как раз аргумент, массовый проект должен быть в первую очередь простой и устойчивый к каким-то не очень аккуратным действиям, иначе объекты будут пребывать в поломатом состоянии.
Релейшен сломать гораздо проще, чем линию, которую наглядно видно.
Offline
#38 2012-05-30 08:09:37
- Hind
- Member
- From: Moscow
- Registered: 2009-05-25
- Posts: 3,950
Re: curves (splines) for drawing in OSM
Со сплайнами можно устроить гораздо больше весёлых труднообнаруживаемых ошибок геометрии, чем с ломаными. Например, выглядящая прямой линия может оказаться сплайном, который проходит сам по себе 3 раза. И обнаружить аналитически такую ситуацию сложнее, чем в случае ломаных линий.
А главное, непонятно, зачем всё это нужно при массе более актуальных задач.
Offline
#39 2012-05-30 08:28:12
- Ilis
- Member
- From: Екатеринбург
- Registered: 2009-05-24
- Posts: 5,970
Re: curves (splines) for drawing in OSM
зачем всё это нужно при массе более актуальных задач.
В смысле что ещё пол-России не нарисовано?
Offline
#40 2012-05-30 08:57:58
- Zkir
- Member
- From: Хрустальная Москва
- Registered: 2009-02-21
- Posts: 6,110
Re: curves (splines) for drawing in OSM
Релейшен сломать гораздо проще, чем линию, которую наглядно видно.
Дык релейшены и ломаются довольно часто. Разве это хорошо?
Истинные слова не не приятны, приятные слова не истинны.
True words are unpleasant; pleasant words are untrue.
Offline
#41 2012-05-30 12:25:04
- Felis Pimeja
- Member
- Registered: 2010-10-27
- Posts: 1,035
Re: curves (splines) for drawing in OSM
Релейшен сломать гораздо проще, чем линию, которую наглядно видно.
Пример релейшенов как раз и показывает, что лучше 10 раз подумать прежде чем революционно расширять возможности. "Немного затянувшееся" перелицензирование ещё один грустный пример.
Offline
#42 2012-05-30 13:47:06
- Mir76
- Member
- From: Екатеринбург
- Registered: 2009-12-18
- Posts: 1,455
Re: curves (splines) for drawing in OSM
Нет, не так, в некоторых они могут пересекаться, в некоторых - нет
Могу заблуждаться, но что-то мне подсказывает что это так...
Еще раз, если в двумерном пространстве "долгота-широта" две кривых пересекаются, то у них есть точка пересечения с своей долготой-широтой (это просто по определению). Любая разумная проекция Долготы-широты в трехмерное пространство (читай натягивание на геоид) переведет кривую в кривую, а общую точку - в общую точку. Или не так? Если не так, то с вас контрпример.
Offline
#43 2012-05-30 14:14:17
- dkiselev
- Member
- Registered: 2010-02-09
- Posts: 3,364
Re: curves (splines) for drawing in OSM
Ну хорошо рассмотрим пример, сплайн около экватора, экватор - прямая. Я в математике не силен, не помню как называются такие кривые, которые проходят через все заданные точки плавненько изгибаясь от одной к другой. (У кривых Безье 2 точки вспомогательные и через них прямая не обязанна проходить - это все из воспоминаний по 3d максу там есть 2 вида сплайнов Безье и т о которых я сейчас говорю).
Допустим у нас кривая проходит через 4 точки. Обозначил их звездочками.
* *
\ /
* *
+
-----------------------
Надеюсь вы узнаете в моих псевдографических каракулях - подобие параболы.
Теперь вы перепроецировали кривую. Допустим что при перепроецировании у вас точки по вертикали сдвигаются тем сильнее чем дальше они от экватора. Это вполне реальная ситуация только не заканчивая профильный вуз по именам я вам эти проекции не назову. sim думаю сможет
Идем дальше: у вас концевые точки сдвинулись от экватора дальше чем точки в серединке, соответсвенно аппроксимируя их тем же путем что и в исходной проекции у вас носик кривой (обозначен плюсиком) вытянется сильнее и пересечет экватор.
Как-то так.
mail: dkiselev@osm.me skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!
Offline
#44 2012-05-30 14:19:26
- dkiselev
- Member
- Registered: 2010-02-09
- Posts: 3,364
Re: curves (splines) for drawing in OSM
Собственно с кривыми Безье ход рассуждений тот же допустим у вас концы в северном полушарии а опорные точки в южном, при этом опорные к экватору ближе чем концевые. Результат тот же, при перепроэцировании у вас концы кривой сместятся сильнее чем опорные точки, соответсвенно сместится и точка перегиба кривой, притом запросто с переходом из полушария в полушарие.
Эти рассуждения можно проводить не обязательно с линией экватора, все будет так же. Просто с экватором проще и нагляднее.
mail: dkiselev@osm.me skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!
Offline
#45 2012-05-30 14:36:04
- chnav
- Member
- From: Russia, mapping Kazakhstan
- Registered: 2010-03-18
- Posts: 3,264
Re: curves (splines) for drawing in OSM
Между двумя точками в географических координатах можно провести разные линии - дугу большого круга (Great Circle), просто прямую при небольших расстояниях, локсодрому (Rhumb Line), прямую в прямоугольных проекциях (Grid Azimuth). В зависимости от крутизны редактора/рендера может импользоваться разная математика, и если в одном редакторе две прямые не пересекаются, в другом редакторе/проекции они запросто пересекутся. Про сплайны даже думать страшно, как собираются считать их на эллипсоиде
Last edited by chnav (2012-05-30 14:38:38)
Offline
#46 2012-05-30 17:23:47
- Vovanium
- Member
- Registered: 2009-07-23
- Posts: 1,094
Re: curves (splines) for drawing in OSM
Между двумя точками в географических координатах можно провести разные линии - дугу большого круга (Great Circle), просто прямую при небольших расстояниях, локсодрому (Rhumb Line), прямую в прямоугольных проекциях (Grid Azimuth).
А выбрали ли «каноническую» кривую? Мне всё время чудится, что это дуга большого круга...
Мне KekcuHa обещал подарить навигатор. Как жаль, у меня уже есть.
Offline
#47 2012-05-30 17:33:17
- Ivan Komarov
- Member
- Registered: 2008-10-02
- Posts: 1,050
Re: curves (splines) for drawing in OSM
А мне подумалось про чуть более сложные алгоритмы, типа Point Location на Trapezoidal Map. Кажется, что со сплайнами будет полный мрак.
Offline
#48 2012-05-30 17:34:49
- chnav
- Member
- From: Russia, mapping Kazakhstan
- Registered: 2010-03-18
- Posts: 3,264
Re: curves (splines) for drawing in OSM
Мне всё время чудится, что это дуга большого круга...
По идее так должно быть, но очень часто программисты не обязаны знать тонкостей геодезии. Поэтому как они ищут пересечения прямых - загадка для всех.
Кстати, очень простой пример.
Рисуем две геодезические линии (по дуге большого круга на сфере или эллипсоиде, т.е. кратчайшей прямой) с азимутом отличным от 0°, параллельные, отстоящие на десяток метров. Естественно они не пересекаются.
Одну из линий делим на отрезки (также по кратчайшей прямой, т.е. дуге большого круга) через 1-10 км и ставим на ней промежуточные точки. Линии по-прежнему не пересекаются (на эллипсоиде).
Переводим массивы координат в меркатор и любуемся результатом. А ведь это типичный результат, например, для протяженных административных границ.
PS: границы с тегом source=www.eastgeology.com имеют много промежуточных точек на "прямых" участках. Неспроста
Last edited by chnav (2012-05-30 17:49:29)
Offline
#49 2012-05-30 18:31:28
- Hind
- Member
- From: Moscow
- Registered: 2009-05-25
- Posts: 3,950
Re: curves (splines) for drawing in OSM
Вы собираетесь проецировать кривые третьего порядка на геоид. Может, не надо? Одумайтесь! :3
Offline
#50 2012-05-30 18:56:56
- Ivan Komarov
- Member
- Registered: 2008-10-02
- Posts: 1,050
Re: curves (splines) for drawing in OSM
как альтернативный вариант - может делать тегами подсказки для рендера? типа geo=smoothed или geo=arc на отрезках way'ев?
Offline