Вопросы по JOSM

Поясните алгоритм работы плагина Relation Toolbox.
Есть один мультиполигон и другой полигон (не мульти) с общими точками (примыкающий, у них по границе 2 вея) - жму “создать мулт полигон” - иногда плагин автоматом убирает ненужный вей, а иногда оставляет и приходится руками удалять дублируйщий вей.
Что сделать чтоб всегда дубликат удалялся?

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

Кстати, в RelToolBox встречаются конфликты сочетаний клавиш с ядром и по такому случаю кнопки туда-сюда ползают . Надо бы исправить :slight_smile:

akks, я когда-то правил, но люди постоянно дописывают плагины, меняют сочетания в ядре, и покорствовать этой мутотени я не собираюсь.

Люди - они, конечно, те ещё изверги :slight_smile: . Но подправить наверное придётся, когда само ядро в порядок приведут малость. Конфликты с плагинами - может и побоку, а из-за ядра свои же кнопки ползают, и в результате ими просто не пользуются.

Сильно подозреваю, что вопрос сей не только меня занимал, и возможно, ответ где-то есть …

Вопрос - как сделать в JOSM …

Пусть имеется несколько (допустим, три) частично совпадающих (несколькими идущими подряд точками) линий.

Ну, пусть для примера:
линия A, состоящая из точек A1, A2, A3, A4, A5
линия B, состоящая из точек B1, B2, B3, B4, B5
линия C, состоящая из точек C1, C2, C3, C4, C5
Точка A2, B2, C2 - это одна точка. Аналогично, A3, B3, C3 - одна точка, и A4, B4, C4 - одна точка. (далее я иногда буду называть этот отрезок X2-X4)
Точки A1, B1, C1, A5, B5, C5 - это отдельные точки с разными координатами.
Задача - “вытянуть” наружу из линии на участке X2-X4 точку B3 (на самом деле, неважно какую из X2-X4 merged точек, какой из трех (A,B,C) линий).

Чисто теоретически, мне думалось, задача выеденного яйца не стоит, и я делал так, как казалось бы, оно должно решаться - вот так:
Сначала все три склеенных точки разделим - команда “Разъединить линии” (G) (UnGlue Ways).
Вообще, достаточно разъединить только одну точку, которую мы хотим вытянуть из линии, но чего мелочиться - разъединим все три - когда будет нужно, сделаем Объединить Точки (M) (Merge).
OK, сделали, теперь у нас три независимые линии, совпадающие по координатам тремя точками.

Как выбираем точку конкретной линии? Я делаю так: выделяем интересующую нас линию, чью точку хотим вытянуть из общего отрезка - это легко, поскольку “хвосты” линий торчат в разные стороны и не наложены друг на друга.
Дальше, с зажатым Ctrl выбираем нужную точку на линии - она дополнительно отмечается.
(Вот тут я явно переоцениваю логику JOSM - я предполагал, что выбирается точка НА ТОЙ ЖЕ отмеченной линии).
Дальше, продолжая держать Ctrl, снова селектим эту же линию, инвертируя ее выбранность, т.е. снимаем с линии пометку.
Здесь я считал, что оставшаяся выбранная точка принадлежит той самой линии, которую я выбрал первой.
Тянем ее, и убеждаемся, что она какая угодно любая, но никак не той линии, которая была выбрана первой.
Таким образом, фокус не удался - не удалось адресоваться к точке конкретной линии, когда в этих же координатах имеются другие точки.
(Если бы он удался, то следующим шагом бы было Объединение обратно точек на отрезке X2-X4, но в точке X3 были бы объеденены 2 точки, не три, поскольку третью мы вытянули из линии наружу).

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

(Очевидно, есть деструктивный способ - растащить три точки из одной координаты в разные места, тогда можно будет легко выбрать нужную. Беда в том, что собрать остальные на ровно то же место уже не получится)

P.S. В рамках этого вопроса не имеет значение, как так получилось, что линии совпадают, правильно это или нет, и как это переделать.

Ну, во первых, кмк, 3 линии содержащие 3 одинаковых отрезка - это не правильно. “из нескольких линий, наложенных на друг-друга” - это ошибка в терминах ОСМ. В рамках ответа на P.S. - это ошибка, так делать не стоит. Не стоит отождествлять 3 дороги (или сколько их там) с 3мя объектами ОСМ - лучше разделить имеющиеся дороги на отрезки и проставить нужные теги на каждом из отрезков.
Дорога - это не одна непрерывная линия на карте, а совокупность отрезков, имеющих определенные теги. И одна линия на карте может обозначать разные объекты (в данном случае дороги) представленные разными тегами.

to AlexTheTux:

В рамках поставленного вопроса: щелчок колёсиком мыши на точке и в выпавшем списке объектов выбрать нужную точку. Повторить с остальными.

Если же этих слепленных точек много, то я бы просто вырезал этот сегмент из нужного мне вея и Удалил бы старый кусок. Потом перерисовал бы его и присовокупил обратно к концам вея. Не затрагивая 2 других вея. Как-то так.

Как правильно добавить вот эти острова: http://kosmosnimki.ru/permalink.html?Nde110c95 вот сюда: http://www.openstreetmap.org/?lat=72.8105&lon=105.4451&zoom=13&layers=M
И почему на подложке IRS’а нету этой местности, а на сайте есть?

Для OSM разрешено использовать только снимки IRS и SPOT, а на сайте их больше:
http://forum.openstreetmap.org/viewtopic.php?pid=108258#p108258

Мы с Felis Pimeja и Hind обсуждали редактирование по принципу “лоскутного одеяла”. (Я такое сделал вручную здесь, где scrub и heath) Есть такой плагин в JOSM?

Есть что-то на связанное с этим http://wiki.openstreetmap.org/wiki/RU:JOSM/Plugins/ContourMerge , но там не мультиполигоны.

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

Из неудобств я замечаю вот что

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

Или это есть?

А как бы вам хотелось это рисовать с использованием гипотетического "идеального"плагина?

reltoolbox

  1. это очень сложно автоматизировать в общем случае, но почти всегда гораздо проще сделать вручную: выделить все линии и их замену и нажать одну кнопку в reltoolbox.
  2. увы, нужно два щелчка: выделить линию, щёлкнуть на отношение лоскутка в списке.
  3. ээээ?™
  1. Линии ещё порезать придётся… Да и получается из одного мультиполигона - два. Хорошо бы в RelToolbox добавить, хотя бы для одиночного разреза. Алгоритм ясен - поделить линию автоматом, решить, какая часть до неё, а какая-после и перенести 2-ю половину в новый мультиполигон… Ужас только в определении куда какие Inner-ы по какую сторону разреза, но функцию принадлежности точки мультиполигону я вроде допилил по вашему когда-то предложенному алгоритму:
    http://trac.openstreetmap.org/browser/applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/selection/NodeWayUtils.java#L347
    http://trac.openstreetmap.org/browser/applications/editors/josm/plugins/utilsplugin2/src/utilsplugin2/selection/SelectAllInsideAction.java

  2. А линия может быть в нескольких (ладно, в двух) мультиполигонах, да ещё и недокачанных с сервера - какой выделять?
    Хотелось бы вообще в середину кликать. И чтоб домики деревяные набигали :slight_smile:

  3. Обрисовали лес 10 кусками без тегов и потом мучаемся, выделяем их… Они ж ветвятся. А так - щёлк, и замкнутый или почти замкнутый цикл выделен. Осталось только “Multi” нажать.

Могу за что-нибудь взяться между праздниками, лучше - 2 или 3)

Супер!
До средней кнопки мыши я сам не додумался.
Действительно, работает.
Спасибо.

Я опять не выдержал и написал ещё один пункт в меню “Выделение”, плагин UtilsPlugin2. На этот раз, кажется, полезный)

Итак, Shift-/ или “Выделить границу”.

Выделяем линию или точку на ней. Жмём Shift-/.

Если есть отношения (мультиполигоны и др.) с этой линией, они выделяются по очереди (нужно повторно нажимать кноку)

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

Если Utilsplugin2 упал или делает что-то не то - сообщайте :slight_smile:

что обозначаю в файле *.cal (калибровка изображение)? и можно перевести координатами

В JOSM 4765-4768 добавлены

  1. Рисование выровненных линий в режиме “A” по кнопке TAB (углы кратные 30 и 45), щелчком правой кнопки на сегменте можно рисовать параллельно ему.
    (примеры http://josm.openstreetmap.de/ticket/6694#comment:20 ), yfcnhjwqrb в draw.anglesnap.*

  2. Галочка в настройках для параметра draw.target-highlight - можно отключить подсветку линий на слабых машинах.

  3. Попыталитсь исправить глюки с настройками сочетаний клавиш в F12.

Если что-то из перечисленного поломалось или работает как-то не так - обращайтесь сюда, в http://forum.openstreetmap.org/viewtopic.php?id=6513&p=18
или на http://josm.openstreetmap.de/newticket

  1. если я нажимаю и держу tab, начинается идиотская дискотека
  2. зачем мне цифры и буквы во время рисования? математику я умею в уме
  3. это первое появление оранжевого цвета в интерфейсе. что такого важного, что нельзя было воспользоваться стандартным красным?
  4. зачем кружок при рисовании? если он нужен, почему его нет в обычном режиме?
    *) пока всё это выглядит как функциональность для отдельного плагина, а не часть josm.
  1. А зачем его держать-то? Переключает как положено. Даже подсказку выводит внизу. В стадии разработки пункт меню с галочкой, тогда дискотека, видимо, исчезнет и клавишу можно будет менять.

  2. В уме 120 от 135 градусов не так уж и просто отличить.

  3. На вкус и цвет товарищей нет) Вспомогательная геометрия как-то же должна отличаться от основной. Для желающих есть draw.anglesnap.color (или что-то типа того)

  4. В обычном режиме и так понятно, где точка окажется, а тут некоторым неочевидно. Могу сделать настройку отключения всех вспомогательных линий и цифр - для любителей минимализма :slight_smile: (а пока можете и цветом вырубить)

*) Делал по запросу в тикетах josm. Плагином было бы в 10 раз проще. Сам чуть не опух разбираться в ф-ях на 200-300 строк в стандартной рисовалке и нарезать их на куски.

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

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