Экспорт в JNX

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: Tolik, zed, vdemidov

Экспорт в JNX

Сообщение AlexWhiter » 19 янв 2012, 15:44

Скачал последние исходники, откомпилировал, переключился в Спутник Yandex, проверил получающиеся JNX файлы.
Экспорт в JNX работает явно не в тех координатах, которые были выделены. Особенно хорошо это заметно, если выбрать сразу пару-тройку соседних слоев.

Посмотрел исходники и так не понял, почему при экспорте в KML используется в качестве GeoConvert
Код: Выделить всё
FMapType.GeoConvert

а при экспорте в JNX
Код: Выделить всё
FCoordConverterFactory.GetCoordConverterByCode(CGELonLatProjectionEPSG, CTileSplitQuadrate256x256)


Попробовал заменить на FMapType.GeoConvert - экспорт вроде заработал правильно, но ни с чем, кроме Yandex, я его не проверял, поэтому не уверен в корректности изменения.
Объясните, почему всё же изначально не был использован конвертер FMapType.GeoConvert?
AlexWhiter
Новичок
 
Сообщения: 32
Зарегистрирован: 12 янв 2012, 16:55
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

Re: Экспорт в JNX

Сообщение vdemidov » 19 янв 2012, 15:50

Потому что при экспорте в kml нас слабо волнует результирующая проекция, поэтому мы оставляем проекцию исходной карты как есть.
А вот при экспорте JNX, как я понял, требуется проекция LonLat, вот мы ее и создаем.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Экспорт в JNX

Сообщение AlexWhiter » 19 янв 2012, 16:11

Скажу честно, я пока не разобрался с тем, в какой проекции работает SAS.Планета, но, как мне представляется, экспорт должен работать вот таким образом:
* пользователь выбирает некоторую область, задающуюся координатами в проекции, в которой работает текущий источник тайлов;
* координаты конвертируются в пиксели, по пикселям выбираются тайлы;
* картинки тайлов сохраняются в выходной файл, как есть, без изменений, а вот к координатам тайлов применяется преобразование из текущей проекции в LatLon.

Как работает имеющаяся сейчас реализация:
* пользователь выбирает некоторую область, задающуюся координатами в проекции, в которой работает текущий источник тайлов;
* координаты конвертируются в пиксели так, как будто они заданы не в текущей проекции источника, а в LatLon, по этим пикселям выбираются тайлы;
* записываются тайлы и координаты тайлов, переведенные из пикселей обратно в LatLon.
В результате получаем, что если проекция источника отличается от LatLon, в файл сохраняются не те тайлы, которые были нужны.

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

В моем эксперименте я выбирал вытянутую по горизонтали область, и в KML сохранялось 8 тайлов из 12го уровня.
В JNX же ушло всего 4, и результирующая область оказалась вытянутой уже по вертикали.
AlexWhiter
Новичок
 
Сообщения: 32
Зарегистрирован: 12 янв 2012, 16:55
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

Re: Экспорт в JNX

Сообщение vdemidov » 19 янв 2012, 16:36

Во-первых, я не утверждаю, что в существующем коде нет ошибок. Я его не писал, а просматривал исключительно по диагонали.
Во-вторых, вы ошибаетесь.
Точки спроецированные задаются не географическими координатами, а пиксельными.
Пиксельные координаты одной и той же точки в разных проекциях разные, поэтому для перехода из одной проекции в другую приходится пересчитывать их в географические.
Картинки тайлов сохраняются с перепроецированием (по крайней мере должны)
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Экспорт в JNX

Сообщение AlexWhiter » 19 янв 2012, 16:44

Я никаких претензий и не предъявлял. Просто пытаюсь понять, почему экспортируется не то, что было выбрано :)

Координаты, которые показываются на экране и которые приходят в TThreadExport в виде массива с вершинами выделения - они в какой проекции?
Это уже LatLon, или это зависит от текущего источника тайлов?
AlexWhiter
Новичок
 
Сообщения: 32
Зарегистрирован: 12 янв 2012, 16:55
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

Re: Экспорт в JNX

Сообщение vdemidov » 19 янв 2012, 16:51

AlexWhiter писал(а):Координаты, которые показываются на экране и которые приходят в TThreadExport в виде массива с вершинами выделения - они в какой проекции?Это уже LatLon, или это зависит от текущего источника тайлов?

Это уже географические координаты. Для них речь может идти только о системе координат, но SAS поддерживает только эквивалентные друг-другу системы координат.

AlexWhiter писал(а):Просто пытаюсь понять, почему экспортируется не то, что было выбрано

Экспортируется меньше или больше того что выбрано? Дело в том что экспорт идет по тайлам в другой проекции, соответсвенно и результат не может точно совпадать с выделенной областью.
Возможно где-то округление не в ту сторону стоит.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Экспорт в JNX

Сообщение AlexWhiter » 19 янв 2012, 16:55

vdemidov писал(а):Экспортируется меньше или больше того что выбрано? Дело в том что экспорт идет по тайлам в другой проекции, соответсвенно и результат не может точно совпадать с выделенной областью.
Возможно где-то округление не в ту сторону стоит.


Экспортируется вообще другая область.
В одном из тестов я выделял вытянутую по горизонтали область, сохранял всего один слой, на выходе получил вытянутую по вертикали.
В другом выделил три слоя, при просмотре оказалось, что они сдвинуты друг относительно друга - 12й слой более-менее на месте, 13й и 14й сдвинуты на юг.
Источником в обоих тестах были спутниковые снимки Yandex.

Попробую сейчас перепроверить с большей по размеру областью.
AlexWhiter
Новичок
 
Сообщения: 32
Зарегистрирован: 12 янв 2012, 16:55
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

Re: Экспорт в JNX

Сообщение vdemidov » 19 янв 2012, 16:57

Значит где-то ошибка. Повторюсь, что идеологически там все должно быть правильно. Подобная техника отрабатывалась на экспорте в МЯК. Но возможны ошибки. Нужно искать.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1166
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 92 раз.
Поблагодарили: 52 раз.

Re: Экспорт в JNX

Сообщение garl » 19 янв 2012, 17:13

у меня Yandex спунтик нормально экспортируется и отображается.
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Специалист
 
Сообщения: 941
ICQ: 275245033
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар
Благодарил (а): 30 раз.
Поблагодарили: 100 раз.

Re: Экспорт в JNX

Сообщение AlexWhiter » 19 янв 2012, 17:20

Выбрал вот такую область:
Код: Выделить всё
[HIGHLIGHTING]
zoom=10
PointLon_1=36,4796027823471
PointLat_1=55,2120678482114
PointLon_2=38,2346687003159
PointLat_2=55,2120678482114
PointLon_3=38,2346687003159
PointLat_3=54,6315018299848
PointLon_4=36,4796027823471
PointLat_4=54,6315018299848
PointLon_5=36,4796027823471
PointLat_5=55,2120678482114


Экспортировал 12 и 13 уровни в JNX.
Открыл в BaseCamp, 12й уровень показывается в прямоугольнике с координатами
36.38673, 55.54728 - верхний левый угол, 38.3201, 54.66873 - нижний правый.
13й уровень уполз на юг. Верхний левый угол показывается в координатах 36.475, 55.37077.
Ну и изображение явно сдвинуто относительно 12го уровня.
AlexWhiter
Новичок
 
Сообщения: 32
Зарегистрирован: 12 янв 2012, 16:55
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

След.

Вернуться в Раздел для разработчиков программы SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron