Вопросы по JOSM

С табом проблемы округления, починить крайне тяжело, если вообще возможно. Пересчитыаются координаты угла карты, коэффициент масштабирования не меняется.
Карта проецируется на экран с учётом координат границ и где-то там на ± пиксел уползает.

Да, лучше починить. Карточку сделайте, а?

А если использовать округление всегда до меньшего Ceil?

Погрешность увеличится.

Я бы попробовал координаты текущего вида привязывать к карте. Такой а-ля snap to grid, где в качестве сетки - пиксели подложки. Это возможно?
Тогда, округление будет всегда давать одинаковый (и более правдивый, чем сейчас) результат, т.к. существование двух разных видов с одинаковым расположением подложки на экране станет невозможным.

Судя по коду он всегда так работал. Наверное в районе нулевых координат (экватор или гринвич) мало кто мапит из тех кто работает с утилитами, поэтому и не замечали. В качестве workaround-а можно использовать бинарные форматы (pbf и т.п.). Плохо то, что нет формального описания какие варианты записи допустимы.

сделал

кое-что есть http://wiki.openstreetmap.org/wiki/Node

Там идея такая, что есть MapView-частный случай NavigatableComponentх, который содержит center и scale. Они и пересчитываются при изменении окна. Функции этого класса занимаются пересчётом экранных координат в проецированные EastNorth и в LatLon (с помощью Projection). Отображалка тайлов тоже пользуется этими функциями.

Если предложите работающие изменения кода, чтобы стало лучше - с удовольствием примем :slight_smile:

эммм…

ну ладно

Блин, и там всем лень. Открыл заново, попрепираемся :slight_smile: http://josm.openstreetmap.de/ticket/10115

А вообще, в карточке надо писать о не работающих стандартных программах, т.е. нам не просто захотелось починить то, что работает )

Смотрю, у вас там весело :slight_smile:

Большое спасибо

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

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

akks ты недавно тут запилил нахождение полигоны по дабл клику, подскажи где это реализовано, а то такая же фича понадобилась.

Сделано это без хитростей и оптимизаций вот так:
полным прогоном ищутся все линии и мультиполигоны, в которые попадает точка (если замкнутая линия участвует в мультиполигоне, она из поиска исключается)

Попадание точки в полигоны есть тут или по-другому тут, если писать заново - вообще лучше использовать JTS:
http://stackoverflow.com/questions/5175216/calculate-if-an-object-is-inside-a-set-of-coordinates.

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

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

Удалить слой и создать заново? :slight_smile: А вообще, конечно, это баг (утечка памяти). Если будет чёткая инструкция, как воспроизвести (типа открыть, подвинуть 100500 объектов, скопировать и ставить их туда-то → всё тормозит), можно починить.

Удаление и открытие помагает на первых порах, потом только рестарт JOSM. Подозреваю, дело не в утечке памяти (Java все равно не отъесть больше, чем я ей выделил), а возможно, некая история.
Проявляет себя после создания вот таких вот объектов (сканэриал), упрощении полученного контура, удалений 99% иннер линий при повторении процедуры 10+ раз.

Размер *.osm понятно, скачет 2, 10, 3, 15, 3.5, 10, 4, 20, 4 и т.д. Ладно на 20Мб тормозит, но и после очистки до 2-х работать становится невозможно, только перезапуск и дальше сного комфортаня работа с этими же данными. Перезапуск же занимает много времени (используемые подложки отчего-то долго “включаются”).

Как можно выяснить текущий зум?

Во, случайно залез в инфо по слою

где-то JOSM явно хранит эту историю, возможно, при ее разбухании и загибается, а рестарт ее чистит…

История действительно хранится, хотя бы для Undo (и примитивы в качестве удалённых тоже в общем списке есть). Но после открытия слоя заново память тоже должна чиститься.