Клуб Народной карты

Беда с береговыми линиями...

HA-KAPTE
17 мая 2012, 12:50

Кто рисует куски суши, кто куски моря...

Не логичней было бы сделать ЛИНЕЙНЫЙ объект - "Береговая линия"? С настройкой "сторона А, сторона Б" и вариантами "суша/вода". При замыкании линий заливка появлялась бы автоматически. В случае незамкнутого контура, заливка отображалась бы в 0,5-1 см вне зависимости от масштаба.

43 комментария
Подписаться на комментарии к посту

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

Ну и в технической простоте такого инструмента я не уверен. Гораздо проще было бы испортить (случайно или намеренно) всю картину - залив большие участки суши.

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

А испортить и сейчас можт кто угодно. Запрещённый к редактированию Каспий залил половину Актау в Казахстане, например.

А с кусками ненаглядно очень... На некоторых масштаба крупные куски моря будут видны, а мелкие ещё нет... И чем дальше будет продвигаться отрисовка морей, тем это хуже будет... Ди и видимые границы этих кусков портят всё впечатление от карты...

Очень спорно. Что значит "замкнутый контур"? Ну обрисую я Сахалин такой линией. И что? Контур замкнулся? Значит, Сахалин - суша, а остальное - вода?

Да. Остальное вода. Но до тех, пор, пока эта вода не наткнётся на другую подобную линию. Например, материковый берег. Или соседний остров. Будет у меня, например замкнутый Тихий океан, я добавлю в него замкнутый контур с параметров "суша" внутри, и появится в океане остров. Проблемы возникнут, на перрвом этапе, когда материковый берег не будет сплошным, а будет прерывистым. На этом этапе (а можно и на всех) можно отключить автозаливку незамкнутых контуров.

В любом случае это будет не просто линейный объект. А "двухлинейный", то есть фактически все равно ведется ДВЕ линии, раз придется указывать - какая из них суша, а какая вода.

То есть это по сути своей даже отдельный класс инстумента. Контур, линия, точка и "это вот чудо".

Потом захотят отрисовывать таким образом леса (тоже проблема с разбивкой на блоки, кстати)", потом еще че-нить, и так далее.

ЗЫ. Я думаю есть выход проще. Надо как-то дать модерам инструмент для объединения контуров. И они эти нарисованные "водоемные блоки" смогут объединять в более крупные. Но опять же - ограничение количества точек... Хотя если снять ограничение на количество точек для запрещенных к редактированию объектов, то это могло бы как-то поспособствовать.

Это бедет линейный объект, но с двумя новыми свойствами)) можно и объеденять... но при этом оставить возможность редактирования. 

Назовите предполагаемые "названия" этих свойств, и вам сразу все станет понятно, что это невозможно )))

Сторона А: суша/вода

Сторона Б: суша/вода

Некие аналогии есть к концами дорог

Отлично. Значит у линии ДВЕ стороны, то есть две линии. То есть опять возвращаемся к двухлинейному объекту.

Идем дальше. Что считать стороной А и стороной Б в:

- горизонтальной линии?

- вертикальной линии?

- диагональной линии?

- круговой (контурной линии)?

Как отличить визуально на карте сторону А от стороны Б, чтобы правильно установить категорию?

 

ЗЫ и про концы дорог. В геометрии (даже в планиметрии) говорится, что у линии есть только начало и конец (если это отрезок). Других физических свойств у нее нет. Вы не поверите, даже толщины нет )))

Двулинейный или однолинейный это зависит от того, как его спрограммировать.

Стороны можно определять, например по порядку рисования (как А и Б в дорогах). Мол, если смотреть по ходу проведения линии, сторона А будет слева, сторона Б будет справа.

Да хоть рендомно будет - ничего страшного. Пользователю зменить сторону "А" на "сушу", в "Б" на "воду" или наоборот не составит труда.

А визуально да, эта линия, например, должна иметь синюю подсветку с той стороны, где в настоящее время у неё значится "вода".

П.С. надо ещё сделать так, что бы значения А и Б были всегда в противофазе, т.е. не были одинаковыми.

А визуально да, эта линия, например, должна иметь синюю подсветку с той стороны, где в настоящее время у неё значится "вода".

Ну вот - опять ДВЕ линии вместо одной. К чему я и веду.

 

Стороны можно определять, например по порядку рисования (как А и Б в дорогах). Мол, если смотреть по ходу проведения линии, сторона А будет слева, сторона Б будет справа. 

Гемор. Пользователь может не заморачиваться на таких тонкостях. Получим хороший такой трэш в карте. Это раз. А если еще соединяться эта линия будет с разными значениями вода/суша - то вы вообще никогда не получите замкнутого контура.

 

 

Да почему две-то? Одна двуцветная. Единый объект, с едиными ручками, разделяющий поверхнсоть карты на две зоны. Кстати, это в матиметике у линии нет толщины. А на практике у любой нарисованной линии есть толщина. 

пользователь может не заморачиваться на таких тонкостях

Ага... И на разных уровнях дорог в развязках он не заморачивается... Или хочешь сказать, уровни в развязках гораздо проще, чем отличить воду от суши?

И пусть 1 пользователь ляпнет берег на изнанку, так другой за 3 клика вывернет его в правильное значение. Исправить же развязку, состоящую из  десятков отрезков дорог намного сложнее. 


Да почему две-то? Одна двуцветная. Единый объект, с едиными ручками, разделяющий поверхнсоть карты на две зоны. 

То есть, образно говоря - две банки краски и две кисточки. Так понятнее? 

Так одна линия или две?

Все равно это ОТДЕЛЬНЫЙ инструмент. Отдельный класс. И создавать новый класс для такого узкого использования нецелесообразно - раз, кроме этого придется полностью пересматривать принципы рендирования. 

Не будет этого. Успокойтесь уже )))

Отдельный инструмент, отдельный класс, отдельный программный код.

Только применение далеко не узкое. Только в России 37,6 тыс. км. береговой линии... И это только с морями... И сейчас для полноценной карты надо эту береговую линию замостить кусочками и суши и моря (т.е. проложить за 70 тыс кв берега). пример дал ниже в комментариях.

Ну а быть или не быть, решать не мне)) Я лишь предложил))

К тому же это не избавит вас от необходимости "разделять" разные водоемы между собой. Как например тут http://n.maps.yandex.ru/-/CNs1eXZv 

Вот про названия да... Надо ещё подумать...

Для примера: http://n.maps.yandex.ru/?ll=143.669842,46.153989&spn=1.557312,0.640394&z=10&l=wmap

 

Обратите внимание на этот полуостров. Сейчас там точно по снимкам отмечены морские участки. Но на схеме народной всё равно бред (воды со стороны залива больше, чем надо (сравните схему народной и снимок со спутника). Чтобы бреда небыло придётся рисовать ещё и сушу, т.е. по сути дублировать уже отмеченый берег.

А будь линейный объект "береговая линия" дублировать не пришлось бы.

sergey.vasketsov
17 мая 2012, 16:31

>придётся рисовать ещё и сушу

Если речь о необходимости иметь операцию вычитания полигонов, то поддерживаю.

А что есть "вычитание полигонов"? Не вкурсе.

Я про то, что изначальный контур боря был несколько сдвинут относительно спутниковых снимков. Я нарисовал море с востока этого полуострова и этим самым отсёк лишнюю, фальшивую сушу со схемы НЯК (осталя лишь треугольник на юге - там был изначально мыс этого полуотрова, согласно схеме). Уточнил контур залива с запада. Но лишняя вода с запада на схеме никуда не делась. Чтобы доделать этот полуочтров теперь надо отобразить ещё и сушу по сути продублировав весь берег, который я уже сделал, когда делал морские куски.

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

sergey.vasketsov
17 мая 2012, 16:46

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

Да... Это верная идея... Тогда этот полуостров нарисовал бы каким-нибудь шестиугольником заведомо большего размера и вычел бы куски моря...

Некрасивая кусковость от этого не исчезнет, но работать станет проще))

Да здесь скорее всего пригодится вычитание полигонов, как говорит  - образно говоря, установить уровень контуров - что выше, что ниже... Приоритет, что ли.

sergey.vasketsov
17 мая 2012, 16:04

Что предполагается делать в том случае, если есть 2 водоёма, которые независимые, на разной высоте, и при проецировании на эллипсоид будут пересекаться?

Что предполагается делать, если озеро примыкает к реке, в том месте где их стыковка, где там суша?

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

Вот с разными водоёмами, это вопрос к названию. Это да, пока не вижу, как удобно сделать возможность называть и моря, и заливы в них, и впадающие реки...

Может быть, всё же дать возможноть проводить линии с параметром "вода" с обоих сторон. Для отделения рек от морей, морей от других морей. Но не для развиения больших морей на 1000 кусочков.

sergey.vasketsov
17 мая 2012, 16:23

>Не могу представить ничего подобного

В горах и пещерах давно были?

 

>кроме акведука над рекой, который можно обозначить, как сооружение

От этого акведук не перестаёт быть водоёмом. Пруды в конце концов тоже искуственные.

 

>Но не для развиения больших морей на 1000 кусочков

Точно также бьётся и лес, и болото, так что, отдельную линию для каждой пары типов полигонов выдумывать? Ведь чем отличается пара "суша-вода" от пары "вода-болото"?

Не видел даже в горах пересекающихся рек или рек, текущих над озёрами. 

Для пещер же сейчас на НЯКе вообще инструмента нет.

От того, что в акведуке течёт вода, он ен пререстаёт быть сооружением. Ты бы ещё водопровод назвал водоёмом...

 

sergey.vasketsov
17 мая 2012, 16:35

>Не видел

И что с того, что кто-то чего-то не видел?

 

>он не пререстаёт быть сооружением

Тогда и пруд, и старый залитый водой карьер - сооружение, а не водоём?

А про "видел/невидел"... Софизмом я не занимаюсь.

sergey.vasketsov
17 мая 2012, 17:01

>Софизмом я не занимаюсь

Тогда при чём тут "не видел"?

Электрон например принципиально невозможно увидеть.

Так что предлагаю дискутировать по существу, а не на основе ограничений собственного опыта.

Ну так вперёд. Пока ничего от тебя в этой ветке (не про вычитание) не прочитал, кроме флуда и предположения, что существуют некие пересекающиеся в разных уровнях водоёмах. Примеров никаких не привёл (а ещё у меня спрашиваешь - ничего не может перечекаться?). Пещеры не в счёт, т.к. они вообще на НЯК не реализованы. Да и вообще разноуровневых объектов в НЯК нет. Зато ты начал убеждать, что акведук - водоём. Спрашивать, был ли я в горах, в пещерах... О невидимости электронов... О опыте... Только речь не о том совсем. В общем, флудом я не занимаюсь.

Упрямый? Да? 

Толковый словарь Ушакова:

АКВЕДУК, акведука, муж. (лат. aquaeductum) (спец.). Водопровод (устар.). || Сооружение в виде моста для провода воды.

 

Толковый словарь Ожегова:

АКВЕДУК — АКВЕДУК, а, муж. Мостовое сооружение с каналом (или трубопроводом) для подачи воды через овраг, реку.

 

Толковый словарь русского языка Кузнецова:

АКВЕДУ́К -а; м. [от лат. aquaeductus - водопровод]. Сооружение в виде моста, служащее для перевода водопроводных труб, оросительных и гидроэнергетических каналов через глубокие овраги, ущелья, долины рек, железные и шоссейные дороги.

 

Современная энциклопедия. 2000.:

АКВЕДУК (от латинского aqua - вода и duco - веду), сооружение в виде моста или эстакады с водоводом (трубой, лотком, каналом), подающим воду к населенным пунктам, оросительным и другим системам от расположенных выше источников. Начали сооружаться со 2-го тысячелетия до нашей эры в странах Древнего Востока, с 7 в. до нашей эры - в Древней Греции.
sergey.vasketsov
17 мая 2012, 16:58

>Упрямый? Да?

Забавно наверное себе оппонировать?

Вспомнил про акведук и "доказал" что он сооружение? Молодец. Акведук действительно сооружают. Но дальше-то что?

1. Сооружение не бывает водоёмом? 

2. Кроме акведуков больше ничего не может "пересекаться"?

Так приведи пример и сооружения и водоёма))

Пруд не сооружение - его не возводят, а выкапывают. Его и зовут искусственный водоём.

Бассейн - сооружение, но не водоём. 

Может быть, канал можно ещё и так, и так назвать. Но проблем в обозначение каналов береговыми линиями я не вижу.

А кроме акведуков много ещё что прересекается. Только к теме это всё не относится.

П.С. Кстати, инопланетные пересекающиеся на разных уровнях реки и сейчас никак не обозначить))

sergey.vasketsov
17 мая 2012, 18:29

>Так приведи пример и сооружения и водоёма

Зачем? Опять пляшешь от акведука? Мне глубоко пофигу на понятие сооружения. Исходить надо из понятия водоёма.

 

 >к теме это всё не относится

Ещё как относится. Только кто-то почему-то решил что так не бывает.

В курсе, что реки могут пересекать горы и уходить под землю?

В курсе про речки Велна и Нельба в городе Вонгровец?

Я совершенно потерял нить обсуждения и связь его с первоначальным вопросом.

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

sergey.vasketsov
21 мая 2012, 21:57

Если береговая линия неразрывна (в итоге проведения всех правок) и вместе с остальным множеством береговых линий определяет полигоны водоёмов - то:

1. В случае пересечения рек придётся рвать одну из рек, так как никакая точка (любая внутри пересечения водоёмов) не может быть одновременно внутри множества водоёмов (внутри хотя бы одной реки) и вне его (вне хотя бы одной реки). Это чисто математически абсурдно с точки зрения теории множеств, если только не придумать отдельный полигон "пересечение рек" с несколькими названиями (упакованными в одно? нонсенс). Какую из двух рек рвать? На каком основании? Тычемся в пересечение, какой реке принадлежит точка? Правильный ответ - проекция точки внутри пересечени рек должна принадлежать полигонам обеих рек.

2. Начисто и навсегда исключаются пересечения проекций водоёмов на разном уровне. Вот скажем надо будет нанести объекты ЮНЕСКО - и пипец, облом и слив. Потому что там в том числе подземные водоёмы. Сейчас пещер нет и из подземных отсилы метро и тоннели - это одно, но заведомо вводить систему, ограничивающую нанесение некоторых типов объектов на карту-схему в будущем - это мягко говоря неумно.

 

Я ратую за добавление функциональности сложения и вычитания полигонов. Это отдельная фича, которая сама по себе позволит многое рисовать быстрее чем сейчас, в том числе при исправлении ошибок.

А вот желание поменять хранение данных со 100500 раз проверенного метода (хранится граница полигона) на какую-то непродуманную несуразицу (хранятся границы дырок по всему миру) я категорически не могу понять.

Но делать с этим что-то надо. Вот например - http://n.maps.yandex.ru/?oid=11995830

Да таких примеров любой остров. Более того - любой берег моря. Только в разной степени. Нарисовал остров -- молодец. Хочешь вменяемый вид на схеме НЯК (стереть мнимую сушу), нарисуй ещё и море вокруг. При этом на спутниковом слое получишь две линии на берегу - серую и синюю. 

Я с этим на Камчатке столкнулся и создал эту тему. А тут мне про пересекающиеся подземные реки...

Появились спутниковые изображения поточней и/или ты захотел уточнить берег (например пляжа, где купался), будь добр меняй и море, и сушу%))

Да даже многие порты (Рим, например http://n.maps.yandex.ru/?oid=53897) сейчас на схеме НЯК сдвинуты от моря. Хочешь подвинуть к нему море - рисуй его.

А на противоположном берегу, наоборот (http://n.maps.yandex.ru/?oid=20181741) море слишком много залазит на сушу. Будь добр рисовать сушу.

А для рисовании суши вообще ничего нет, кроме островов и каких-то обрывов... Значит для рисования суши Италии, ищи её административное деление и рисуй их районы))

При рисовании рек пригодилась бы функция "добавить берега" как в редакторе карт на википедии. Очень удобная штука. Програмисты, обратите пожалуйста свое внимание.

Не надо квадратиками рисовать ни море, ни сушу. Толу то, в отличии от маленький водоемов близ послеков моря и океаны и так понятно, где они и что это они.

Надо федя, надо... Нарисованные по умолчанию берега сдвинуты от реального положения местами до 10 км.