You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#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,670

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,670

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: 726

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,657

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,657

Re: JOSM - PicLayer

Larry0ua

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

Offline

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

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

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,670

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,670

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,670

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