ХарківТурист тепер у Телеграмі, долучайся!

| рюкзак цена |

Начать новую тему Ответить на тему На страницу Пред.  1 ... 30, 31, 32, 33, 34, 35, 36 ... 62, Bce  След.
Автор Сообщение
СообщениеДобавлено: 28.06.2015 15:49 
Аватара пользователя

Сообщения: 2800
Город: Харьков
Пол: Муж
Возраст: 51
Зарегистрирован:07.06.2005
Это уже интереснее!


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 28.06.2015 15:53 

Сообщения: 28
Город: Australia
Пол: Муж
Зарегистрирован:17.06.2015
xasan писал(а):
UrikEEE
... Буду разбираться как накладывать вектор поверх растра чтобы все корректно отображалось. Не так чтобы сильно нужно с практической точки зрения - но интересно.

Very useful to overlay updated roads like OSM over detailed old raster maps.


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 28.06.2015 17:28 

Сообщения: 1128
Город: Харків, Холодна Гора
Пол: Не указан
Возраст: 44
Зарегистрирован:02.10.2006
Цитата:
Very useful to overlay updated roads like OSM over detailed old raster maps.


Way1: Get an original raster map image. Open it in GM. Draw any lines, points or polygons you want. Make an export to GeoTIFF including vector data. Convert to RMP.

Way2: Draw some roads in GPSmapEdit. Convert .mp to Magellan map. Make an overlay ('light') map .lgt
Use an overlay map together with old raster map.


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 29.06.2015 13:51 
Аватара пользователя

Сообщения: 1172
Город: Харьков
Пол: Муж
Возраст: 47
Зарегистрирован:18.03.2013
Д. Засядько писал(а):
Цитата:
Very useful to overlay updated roads like OSM over detailed old raster maps.


Way1: Get an original raster map image. Open it in GM. Draw any lines, points or polygons you want. Make an export to GeoTIFF including vector data. Convert to RMP.

Way2: Draw some roads in GPSmapEdit. Convert .mp to Magellan map. Make an overlay ('light') map .lgt
Use an overlay map together with old raster map.

Если есть хорошая векторная карта (например, с сайта maps4me), то всё очень просто. В меню навигатора включаем и вектор, и растр. Далее идём сюда: Меню - Опции карты - Режим отрисовки карты. И вместо "Единый" выбираем "Смешанный". Всё! На экране видим растр, поверх которого векторные дороги, тропинки, реки и точечные объекты. Я это успешно проделал с картой Украины от maps4me и километровкой Генштаба от Паганеля.
А вот с вашей, Дима, картой Харьковской области, такое проходит только частично. Она имеет много непрозрачных полигонов, которые во многих местах закрывают растр.

_________________
Карти для GPS-навігаторів: де їх брати? https://encyclopedia-mandriv.blogspot.com/2013/06/karty-dlya-gps-navigatorov.html


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 29.06.2015 14:25 

Сообщения: 1128
Город: Харків, Холодна Гора
Пол: Не указан
Возраст: 44
Зарегистрирован:02.10.2006
А какие конкретно полигоны получились непрозрачными?
В ВантажПоинт все полигоны исчезают при наложении растровой карты.


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 29.06.2015 14:31 
Аватара пользователя

Сообщения: 1172
Город: Харьков
Пол: Муж
Возраст: 47
Зарегистрирован:18.03.2013
Город (серый), лес (зелёный).

_________________
Карти для GPS-навігаторів: де їх брати? https://encyclopedia-mandriv.blogspot.com/2013/06/karty-dlya-gps-navigatorov.html


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 29.06.2015 16:40 

Сообщения: 1128
Город: Харків, Холодна Гора
Пол: Не указан
Возраст: 44
Зарегистрирован:02.10.2006
Попробуйте вот эти два варианта. Там для всех слоёв поменян параметр SIZEQUEUES с дефолтного 20 на 200 и на 2000. Есть подозрение, что он влияет на "пропадаемость" слоёв при наложении растровой карты.
https://cloud.mail.ru/public/9orK/twFFJztfB
https://cloud.mail.ru/public/8cZc/dzg2DWu6Q

Кстати, на карте из maps4me некоторые леса почему-то отсутствуют. Например, лес вокруг точки N50 01'08" E36 08'57" на моей карте есть, а на Алексовой отсутствует.
А ещё у него немножко неправильно слои сложены. Слой landuse и слой "зелёнки" перепутаны местами. Поэтому вся зелёнка в посёлке Циркуны не видна.


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 30.06.2015 01:55 
Аватара пользователя

Сообщения: 1172
Город: Харьков
Пол: Муж
Возраст: 47
Зарегистрирован:18.03.2013
Попробовал, ничего не изменилось. На экране навигатора обе эти карты изображаются с непрозрачными полигонами, частично закрывая растр.
Что любопытно: в меню навигатора они оказались не в папке "Детальные карты", а появилась новая папка "Дополнительные".

P.S. Ещё один способ "обновить" топокарту. В SAS Планете включить, например, генштаб, плюс один из слоёв - Гугл или Яндекс гибрид, Яндекс Народная карта, Викимапия и т.д. Есть там и гибрид от OSM - Mapsurfer. Но маленькие дорожки там тоненькие и беленькие, и почти не различимы на экране компьютера (тем более - на экране навигатора). Если маршрут пролегает по популярной туристской местности, то можно включить наложение на карту слоя с туристскими маршрутами Waymarked Trails.

_________________
Карти для GPS-навігаторів: де їх брати? https://encyclopedia-mandriv.blogspot.com/2013/06/karty-dlya-gps-navigatorov.html


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 08.07.2015 18:57 

Сообщения: 1128
Город: Харків, Холодна Гора
Пол: Не указан
Возраст: 44
Зарегистрирован:02.10.2006
Сегодня поковырялся со старыми магеллановскими морскими картами, которые наконец-то скачались в eMule. Обнаружил странные ошибки в таблицах с содержимым в файлах.
В некоторых случаях, если в таблице название текущего суб-файла короче, чем название предыдущего суб-файла, то к названию текущего суб-файла дописывается "хвост" от названия предыдущего. Например, имеем суб-файл "bmp4bit.ics", а за ним идет файл "nav.blu". Дык почему-то к имени файла "nav" приклеился кусок "bit", причём через нулевой байт. Вот так: "nav bit" (между nav и bit не пробел, а невидимый символ с кодом "00").
Из-за этого косяка мой распаковщик некорректно обрабатывал названия суб-файлов, и собранный заново файл карты получался некорректным. Хотя ВантажПоинт эти некорректные названия проглатывает без проблем. Наверное, он по другому их обрабатывает. Мой распаковщик читает все 8 байт имени файла, отбрасывая байты "00", а ВантажПоинт, вероятно, прерывает чтение при первом обнаруженном нулевом байте, и ненужный "хвост" игнорирует.

Если кому интересно, вот ссылка.
https://cloud.mail.ru/public/Dd3a/4WppSyapf
Там оригинальные файлы, один файл с поправленной вручную таблицей и разлоченные файлы. Я их разлочил вручную, тупо забивая нужные места байтом FF, контрольную сумму не пересчитывал, но ВантажПоинт открывает их и так.
Интересно бы проверить на живом навигаторе, особенно на Тритоне.


Вернуться к началу
shoppage  personalpage P  
 
 Заголовок сообщения:
СообщениеДобавлено: 08.07.2015 19:18 
Аватара пользователя

Сообщения: 471
Город: Екатеринбург
Пол: Муж
Возраст: 59
Зарегистрирован:26.03.2012
Все очень просто. Там используется стандартная для C/C++ null terminated string. Т.е. нулевой байт это символ конца строки. В C/C++ такая строка автоматически обрабатывается всеми библиотечными функциями.

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

_________________
//Cheers, Victor
//Magellan eXplorist 310, Transystem TripMate 852, Columbus V-990, Transystem PersonalMate 860Lite, Garmin Nuvi 50


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 08.07.2015 19:58 

Сообщения: 1128
Город: Харків, Холодна Гора
Пол: Не указан
Возраст: 44
Зарегистрирован:02.10.2006
Дело не в паскалевских причудах. Это у меня в программе указано "читать побайтно, игнорируя нули, остальное собирать в единую строчку".
Код:
{Вначале файл читается кусками по 4 байта. Так удобнее читать таблицу с содержанием.}
TOCfileName:=''; {стринговая переменная, хранящая имя текущего суб-файла}
     for i:=1 to 4 do {читаем очередные 4 байта из файла карты}
  {byteArray[] - одномерный массив из четырёх (порядковый номер от 1 до 4) чисел типа "байт" (целые 0..255)}
      if byteArray[i]<>0 then TOCfileName:=TOCfileName+chr(byteArray[i]); {если байт не нулевой, то игнорируем, иначе превращаем в символ и добавляем к TOCfileName}
      {... and second part of the current sub-file name from TOC}
     BlockRead(MapFile, byteArray, 1); {читаем ещё кусочек}
     {..... тут вырезан кусок кода по проверке чек-суммы, он не важен....}
     for i:=1 to 4 do {и аналогично обрабатываем}
      if byteArray[i]<>0 then TOCfileName:=TOCfileName+chr(byteArray[i]);
     Cells[1,TOCrecordNumber]:=TOCFileName;{запихиваем полученное имя файла в табличку StringGrid}


Вернуться к началу
shoppage  personalpage P  
 
 Заголовок сообщения:
СообщениеДобавлено: 08.07.2015 21:52 
Аватара пользователя

Сообщения: 471
Город: Екатеринбург
Пол: Муж
Возраст: 59
Зарегистрирован:26.03.2012
В данном случае, судя по всему, файл содержит массив структур (как они в паскале называются, записи?) фиксированного формата. Лучше сразу читать его поэлементно.

Ну или если знаете, что сейчас читается имя файла. То просто игнорировать то, что идет после нулевого байта - там мусор.

_________________
//Cheers, Victor
//Magellan eXplorist 310, Transystem TripMate 852, Columbus V-990, Transystem PersonalMate 860Lite, Garmin Nuvi 50


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 08.07.2015 22:32 

Сообщения: 1128
Город: Харків, Холодна Гора
Пол: Не указан
Возраст: 44
Зарегистрирован:02.10.2006
Цитата:
если знаете, что сейчас читается имя файла. То просто игнорировать то, что идет после нулевого байта - там мусор.


Вы правы. Переделал.
Теперь байты вкорячиваются в строчку все восемь без разбору, а потом строчка обрезается до первого встречного hex00. Ну или не обрезается, если нулей нет, а имя занимает все восемь байт.
Код:
{Reading first part of sub-file name...}
     BlockRead(MapFile, byteArray, 1);
TOCfileName:='';
     for i:=1 to 4 do
       TOCfileName:=TOCfileName+chr(byteArray[i]);
     {... and second part of the current sub-file name from TOC}
     BlockRead(MapFile, byteArray, 1);
     
     for i:=1 to 4 do
       TOCfileName:=TOCfileName+chr(byteArray[i]);
     {Cutting "zero" (hex00) bytes and erroneous "tail" from sub-file name}
     If Pos(chr(0), TOCfileName)<>0 then SetLength(TOCfileName,Pos(chr(0),TOCfileName)-1);
     Cells[1,TOCrecordNumber]:=TOCFileName;

Выложил новую версию (0.5a) своего распаковщика/упаковщика. https://cloud.mail.ru/public/LW4q/uuQsW1dJh

UPD: Добавил функцию извлечения отдельных суб-файлов из файла карты. После открытия файла карты, когда появляется табличка со списком суб-файлов, двойной щелчок на строчке, соответствующей данному суб-файлу. Вроде работает. Вроде даже корректно :-)
Качайте (версия 0.5b) https://cloud.mail.ru/public/Ji9H/TZmWRYpvA

Кстати, поддержку старых карт в формате .img от прошлой серии Эксплористов делать или не надо?
Там в принципе, всё то же, только в таблице с содержанием везде, где циферки, там байтики в другом порядке идут. Не как сейчас от младшего к старшему, а от старшего к младшему. Ну, может ещё что-то по другому.


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 28.08.2015 01:22 
Аватара пользователя

Сообщения: 1172
Город: Харьков
Пол: Муж
Возраст: 47
Зарегистрирован:18.03.2013
Только что удалось сделать точную карту без смены проекции, т.е. без использования Глобал Маппера!

Теперь подробнее. Достаточно часто растровые карты для Магелланов делаются при помощи связки из трёх программ: SAS Планета + Global Mapper + RMPCreator. В этом случае они проигрывают Гарминам, для которых можно создать растровую карту при помощи одной лишь SAS Планеты. Но, оказывается, для Магелланов не всё так плохо. При помощи небольшой хитрости можно убрать из этой связки Global Mapper, таким образом, потребуется уже не три, а две программы. Точность при этом страдает настолько незначительно, что вы этого не заметите даже на подробных картах.

Откуда взялась идея. Сравнивая проекции Mercator (используемая в SAS Планете) и Geografic Lat/Lon (используемая в Магелланах), я заметил, что карты в этих проекциях совпадают по краям, а вот в центре карты наблюдается сдвижка по вертикали. Причём, чем больше размер участка карты (в километрах), тем сильнее эта сдвижка. На картах с размером по вертикали менее 20 км различия между проекциями достаточно малы.

Что я сделал. Я экспортировал из SAS Планеты карту Харьковской области. Использовал карту OpenStreetMap, чтобы было удобно сравнивать с имеющейся векторной картой от maps4me. Скачал 15-й зум (он примерно соответствует 500-метровкам).

Далее нужно было экспортировать карту из SAS Планеты в формате .jpg + .map. И вот здесь кроется маленькая хитрость. При экспорте я указал, что карту нужно разбить по вертикали на 20 частей. Вся карта по вертикали имеет около 200 км, так что получились файлы, занимающие около 10 км по вертикали.

Затем я все эти файлы загнал в RMPCreator и перегнал в RMP. При этом выставил, чтобы на выходе всё объединилось в один RMP-файл. Результат - идеальное совпадение с векторной картой. Для сравнения: если конвертировать в RMP эту же карту в проекции Mercator без разрезания, то в центре карты объекты будут сдвинуты на расстояние более 1 км!

То есть, элементарная операция в SAS Планете, на которую тратится несколько секунд, избавляет от использования лишней программы и от лишней траты времени.

P.S. Для полноты картины замечу, что я всегда при экспорте из SAS Планеты разбиваю карту на фрагменты менее 10000х10000 пикселей. Это потому, что, как я ни бился, но у меня RMPCreator для карт размером более 10000х10000 пикселей запускает внешний нарезчик тайлов, который работает жуть как долго (я ни разу не дождался окончания). Из-за этого я нарезаю карту на заведомо меньшие куски, а потом объединяю их на конечном этапе в один RMP-файл. Теперь же оказалось, что нарезка карты на мелкие фрагменты способна избавить нас от необходимости использовать Global Mapper.

_________________
Карти для GPS-навігаторів: де їх брати? https://encyclopedia-mandriv.blogspot.com/2013/06/karty-dlya-gps-navigatorov.html


Вернуться к началу
shoppage  personalpage P  
 
СообщениеДобавлено: 28.08.2015 07:45 

Сообщения: 292
Город: Kiev
Пол: Муж
Возраст: 53
Зарегистрирован:06.07.2011
SAS позволяет клеить карту в EPSG:4326, это и есть lat/lon. Карту нарезать всё равно придётся, иначе итоговый JPEG съест всю оперативку.
К сожалению, разработчики SAS не хотят работать ни с GeoTIFF, ни с RMP.
К сожалению, разработчик RMPCreator не хочет работать ни с ECW ни со скачанным кешем.
К сожалению, Mobac клеит RMP с ошибкой.

Так и живём.

_________________
Штурман, нада дёрнуть!


Вернуться к началу
shoppage  personalpage P  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему На страницу Пред.  1 ... 30, 31, 32, 33, 34, 35, 36 ... 62, Bce  След.


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
  © Mishael 2003-2024
Наши друзья: Телеграм-канал про SEO | Рыбалка в Полтаве
Мобильный вид

[ Time : 0.142s | 31 Queries | GZIP : On ]
Reputation System ©'