OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2011-12-30 21:16:14

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

JOSM - PicLayer

Тут пишем о плагине, новости, вопросы, пожелания

Информация про плагин тут: http://wiki.openstreetmap.org/wiki/JOSM … s/PicLayer
Для желающих посмотреть на новый способ привязки в действии - там есть ссылка Quick animated how-to: Piclayer Usage на гифку с процессом привязки. Внимание, новые маркеры на точках были сделаны уже после картинки, так что визуально оно немного отличается!

Last edited by Larry0ua (2012-01-12 09:39:20)

Offline

#2 2011-12-30 23:24:25

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,466

Re: JOSM - PicLayer

А поддержка world файлов планируется ? про проекции даже не заикаюсь smile

Offline

#3 2011-12-31 16:34:40

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

А вы пробовали? smile они там были, еще до меня... из пожеланий, которые будут скоро реализованы - undo для привязки, поддержка простых видов kmz (сейчас есть простые kml). Так же собираются еще пожелания, чтоб не захламлять тему вопросов новичков.

Offline

#4 2011-12-31 19:36:42

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,466

Re: JOSM - PicLayer

Larry0ua wrote:

А вы пробовали? smile

Как пересчитывать параметры старого .cal формата в world file  я знал,
новые аффинные коэффициенты чересчур абстрактны:
сдвиг понятен,  а над "новой" 2x2 матрицей надо ломать голову. К тому же
она вообще говоря не ортогональна, что в 99.9% случаев противоречит
здравому смыслу.
Ошибки в GCP было бы желательно также минимизировать инвертированием
матрицы методом наименьших квадратов (A^*Ax=A^*b вместо Ax=b
для прямоугольной A с числом GCP>3).

Offline

#5 2012-01-01 19:35:44

Scondo
Member
Registered: 2011-03-16
Posts: 483

Re: JOSM - PicLayer

Очень хочется привязку по двум точкам без поворота.

Offline

#6 2012-01-03 10:23:19

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

usm78-gis wrote:

Как пересчитывать параметры старого .cal формата в world file  я знал,
новые аффинные коэффициенты чересчур абстрактны:
сдвиг понятен,  а над "новой" 2x2 матрицей надо ломать голову. К тому же
она вообще говоря не ортогональна, что в 99.9% случаев противоречит
здравому смыслу.

кажется, Вы используете PicLayer не по назначению smile он предназначен для отображения подложки в JOSM, а не для привязки картинок с последующим использованием в других программах. Для второго (да и для первого, вообще говоря) можно использовать QGIS.
Ортогональность, насколько мне не изменяет память, должна быть относительно чего-то, так что не понимаю последнюю фразу.

usm78-gis wrote:

Ошибки в GCP было бы желательно также минимизировать инвертированием
матрицы методом наименьших квадратов (A^*Ax=A^*b вместо Ax=b
для прямоугольной A с числом GCP>3).

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

Scondo wrote:

Очень хочется привязку по двум точкам без поворота.

Надо подумать, как это наложить на существующий плагин...

Last edited by Larry0ua (2012-01-03 10:23:47)

Offline

#7 2012-01-04 05:21:38

Paravoz
Member
From: Ярославль
Registered: 2009-12-01
Posts: 685

Re: JOSM - PicLayer

Scondo +1 - хотелось бы системы привязки "как Ози" по группе точек с координатами

Offline

#8 2012-01-04 14:32:08

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

версия плагина 27403 поддерживает undo/redo средствами josm-а. Если будут баги - пишем тикеты.

для запуска 27403 нужна latest (>=4669)

Offline

#9 2012-01-12 09:32:39

KonTur
Member
From: SPB
Registered: 2010-03-10
Posts: 1,465

Re: JOSM - PicLayer

А где можно прочитать как пользоваться новым PicLayer'om?
Желательно пошагово, привязка по трем-четырем  точкам.

Offline

#10 2012-01-12 09:40:46

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

KonTur, Добавил информацию в шапку со ссылкой

Offline

#11 2012-01-12 09:58:56

KonTur
Member
From: SPB
Registered: 2010-03-10
Posts: 1,465

Re: JOSM - PicLayer

Larry0ua

Спасибо большое. Очень стало удобно и быстро.

Offline

#12 2012-01-17 21:10:29

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,466

Re: JOSM - PicLayer

Larry0ua wrote:

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

Ортогональная_матрица :
http://ru.wikipedia.org/wiki/%D0%9E%D1% … 1%86%D0%B0
т.е. ортогональны строки/столбцы относительно друг друга.

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

Точный метод применим только к квадратным (и одновременно неособенным) матрицам. Если число точек N больше 3x,
то матрица для вычисления коэффициентов аффинного преобразования размерностью 2Nx6 очевидно неквадратная,
но умножив ее на саму себя транспонированную A^*A получим обычную квадратную 6x6 (6x2N*2Nx6=6x6),
которая и дает оптимальное решение в смысле наименьших квадратов.
Ошибки же возникают конечно не из-за округления, а из-за "ненулевого" размера самого пиксела и
невозможности "точно"  совместить калибрационную точку (GCP) с пикселом.

Мне также не совсем понятна система единиц для M* коэффициентов, не заглядывая в исходники.
Вот конкретный пример

#JOSM PicLayer plugin calibration data
#Sun Nov 27 22:21:58 CET 2011
POSITION_Y=6708383.375731533
POSITION_X=602463.1049788792
M12=-714.691403694874
M11=0.508636037014039
M10=6.263463862108147E-5
M02=43.42632371753174
INITIAL_SCALE=673.3630407396365
M01=-2.1720970442278513E-4
M00=0.5060984647587284

Что означает, например M00=0.5 ?

(Ортогональность будет выполнена, если M00=M11 и M10=-M01.)

Offline

#13 2012-01-18 05:45:41

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

Напишу пока сюда

C:\Program Files\JOSM>java -jar -Xmx512M josm-tested.jar
Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2011-12-19 02:32:42
Last Changed Author: Don-vip
Revision: 4667
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2011-12-19 00:02:30 +0100 (Mon, 19 Dec 2011)
Last Changed Rev: 4667

ERROR:  ''
java.lang.NullPointerException
        at com.sun.org.apache.xerces.internal.jaxp.validation.StAXValidatorHelpe
r.validate(Unknown Source)
        at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.vali
date(Unknown Source)
        at javax.xml.validation.Validator.validate(Unknown Source)
        at org.openstreetmap.josm.data.Preferences.validateXML(Preferences.java:1436)
        at org.openstreetmap.josm.data.Preferences.load(Preferences.java:580)
        at org.openstreetmap.josm.data.Preferences.load(Preferences.java:542)
        at org.openstreetmap.josm.data.Preferences.init(Preferences.java:678)
        at org.openstreetmap.josm.gui.MainApplication.main(MainApplication.java:190)

Появилось после установки плагина. Похерило мне все настройки и плагином не даёт пользоваться.

Offline

#14 2012-01-18 06:16:22

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

Удалил C:\Documents and Settings\ilis\Application Data\JOSM\

Всё равно такая ошибка. Сломался йосм, помогите!

ЗЫ. И сообщения бы перенести в более подходящую тему, просьба модераторам.

Offline

#15 2012-01-18 09:48:36

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

Ilis, проблема вряд ли в плагине sad

usm78-gis
Матрица афинного преобразования в данном случае записана в сокращенной форме, М20=М21=0, М22=1 - принимаются по умолчанию. Это же принимается при расчете обратной матрицы. В ней, естественно, получаются те же значения на месте этих 0,0,1 и они отбрасываются для удобства записи в java2d AffineTransform

На счет ортогональности - понял, о чем речь, но не понял, каким оно сюда боком.

Кстати, если число точек больше 3, это уже не афинное преобразование...

На счет размерности ничего не могу сказать - это просто коэффициенты - из пиксельных координат картинки в josm-овские внутренние (в которых сдвиг записывается) - или наоборот

Offline

#16 2012-01-18 20:41:54

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,466

Re: JOSM - PicLayer

Larry0ua wrote:

На счет ортогональности - понял, о чем речь, но не понял, каким оно сюда боком.

Это к вопросу о world файле, который тоже задает аффинное преобразование

m00
m01
m10
m11
m02
m12

но векторы (m00,m01) и (m10,m11) должны быть ортогональны
m00*m10+m01*m11=0
Т.е. любой world файл (а значит и для любого геотиффа с проекцией поддерживаемой josm)
коеффициенты можно прямо пересчитать в .cal

из пиксельных координат картинки в josm-овские внутренние (в которых сдвиг записывается) - или наоборот

ok. остается разобраться, как  josm-овские внутренние связаны с экранными пиксельными.

Offline

#17 2012-01-19 12:11:37

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

Итак, йосм у меня запустился, и плагин поставился и заработал.

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

Вручную перемещать, масштабировать и вращать получается намного лучше. Что бы мне помогло? Всего лишь фиксация точки, вокруг которой производится поворот и масштабирование. Я бы совместил один перекрёсток на картинке и карте, зафиксировал бы эту точку, перешёл к другому перекрёстку и небольшими поворотами и масштабированием выровнял бы картинку по второй точке.

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

Offline

#18 2012-01-19 12:30:58

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

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

Кстати, сейчас масштабирование, поворот и прочее делается относительно центра josm-экрана

Offline

#19 2012-01-19 12:42:11

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

Larry0ua wrote:

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

Кстати, сейчас масштабирование, поворот и прочее делается относительно центра josm-экрана

Да, можно вокруг единственной установленной точки. Или вокруг только первой точки, если их несколько.

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

Offline

#20 2012-01-19 12:43:28

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

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

Это вообще заменит сразу и поворот и масштабирование вокруг одной точки.

Last edited by Ilis (2012-01-19 12:44:11)

Offline

#21 2012-01-22 21:40:47

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,466

Re: JOSM - PicLayer

Вот реальный практический пример: геотифф 20020819_brovey8_2_4_5.tif с 16-битной палитрой,
сдвоенная сцена ландсат, 20281 на 25821 пикселов,
проекция UTM 35N

Origin = (438600,6932700)
Pixel Size = (15,-15)
Upper Left  (  438600.000, 6932700.000) ( 25d48'26.29"E, 62d31'12.72"N)
Lower Left  (  438600.000, 6545385.000) ( 25d55'47.67"E, 59d 2'36.52"N)
Upper Right (  742815.000, 6932700.000) ( 31d42'28.12"E, 62d26'45.02"N)
Lower Right (  742815.000, 6545385.000) ( 31d13'32.13"E, 58d58'44.17"N)
Center      (  590707.500, 6739042.500) ( 28d39'55.93"E, 60d46'35.35"N)

Из него создается 8-битный трехканальный .png (+world) файл  с помощью gdal_translate.
piclayer хоть и справляется с 16-битным png, но josm при этом занимает 14ГБ в ОЗУ и работает "небыстро".

$ gdal_translate -co worldfile=yes -of png -ot Byte -expand rgb 20020819_brovey8_2_4_5.tif 20020819_brovey8_2_4_5.png

20020819_brovey8_2_4_5.wld переименовывается для piclayer в 20020819_brovey8_2_4_5.pgw

$ cat 20020819_brovey8_2_4_5.pgw
15
0
0
-15
438607.5
6932692.5

Квадратные пикселы по 15 метров, никакого вращения, верхний левый угол в центре верхнего левого пиксела
(сдвинут на пол-пиксела=7.5 метра относительно Upper Left/Origin  (  438600, 6932700), как и положено )
piclayer сохраняет для него следующий .cal файл (в новом формате)

$ cat 20020819_brovey8_2_4_5.png.cal
#JOSM PicLayer plugin calibration data
#Sat Jan 21 17:08:49 CET 2012
POSITION_Y=6739042.5
POSITION_X=590707.5
M12=0.0
M11=1499.0209994075628
M10=0.0
M02=0.0
INITIAL_SCALE=1.0
M01=-0.0
M00=1496.619909949947

POSITION_X, POSITION_Y совпадает с Center  (  590707.5, 6739042.5), единицы "метры".
M00,M11 (единицы "сантиметры/пиксел", но установив INITIAL_SCALE=100 можно использовать "метры/пиксел").
Вопрос: почему M11 не равно М00 и не равно 15 метрам ?
4 сантиметра / пиксел вроде бы как не много, но на 26000 пикселах
набегает немалая ошибка.
Не стоит ли пересмотреть функцию getMetersPerEasting()
как слишком грубую ?

    /**
     * Returns the distance in meter, that corresponds to one unit in east north
     * space. For normal projections, it is about 1 (but usually changing with  
     * latitude).
     * For EPSG:4326, it is the distance from one meridian of full degree to the
     * next (a couple of kilometers).
     */

Last edited by usm78-gis (2012-01-23 22:52:10)

Offline

#22 2012-01-22 21:45:20

usm78-gis
Member
Registered: 2008-04-21
Posts: 2,466

Re: JOSM - PicLayer

Ilis wrote:

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

Такое есть в qlandkarte: привязка по 2 точкам с квадратными пикселами.

Offline

#23 2012-01-23 03:53:57

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

usm78-gis wrote:
Ilis wrote:

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

Такое есть в qlandkarte: привязка по 2 точкам с квадратными пикселами.

Что такое qlandkarte?

И почему не сделать такое в PicLayer?

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

Можно ещё добавить функцию удаления точек привязки (например, щёлкнуть по ней с контролом).

Offline

#24 2012-01-23 09:32:34

Larry0ua
Member
Registered: 2010-09-19
Posts: 1,061

Re: JOSM - PicLayer

usm78-gis, похоже, есть такая проблема. Если знаешь, как решить, с радостью приму патч в подарок smile

на счет qlandkarte - а что если пользователь хочет прямоугольную привязку без соотношения сторон и поворота - тоже по двум точкам реализуется ведь?

Offline

#25 2012-01-23 13:21:08

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: JOSM - PicLayer

Сделайте, плиз, выравнивание по двум точкам! У меня проект огромного куска дороги лежит, подложить его нынешними средствами никакой возможности нет, промахи на полкилометра получаются smile

Offline

Board footer

Powered by FluxBB