Qmapshack как открыть файл map
Вы когда-нибудь думали, как было бы здорово, если бы слитый в один файл и минифицированный яваскрипт код в production-окружении можено было удобно читать и даже отлаживать без ущерба производительности? Теперь это возможно, если использовать штуку под названием source maps.
Если коротко, то это способ связать минифицированный/объединённый файл с файлами, из которых он получился. Во время сборки для боевого окружения помимо минификации и объединения файлов также генерируется файл-маппер, который содержит информацию об исходных файлах. Когда производится обращение к конкретному месту в минифицированном файле, то производится поиск в маппере, по которому вычисляется строка и символ в исходном файле. Developer Tools (WebKit nightly builds или Google Chrome Canary) умеет парсить этот файл автоматически и прозрачно подменять файлы, как будто ведётся работа с исходными файлами. На момент написания (оригинальной статьи — прим. перев.) Firefox заблокировал развитие поддержки Source Map. Подробнее — на MozillaWiki Source Map.
Пример — правильное определение места в исходном коде
В этом примере можно ткнуть в любом месте textarea правой кнопкой и выбрать пункт «Get original location». При этом будет произведено обращение к файлу-мапперу с передачей строки и номера символа в минифицированном коде, и будет показан соответствующий кусок кода из исходного файла. В консоль будут выведены номер строки и номер символа в исходном файле и другая интересная информация.
Реальное использование
Прежде чем смотреть следующий пример, нужно активировать просмотр source maps в Chrome Canary или WebKit nightly, для этого в свойствах активировать пункт «Enable source maps» (см. скриншот)
Зачем вообще нужны Source Maps?
- CoffeeScript
- ECMAScript 6 и выше
- SASS/LESS и т.п.
- Практически любой язык, который компилируется в JavaScript
Google Web Toolkit (GWT) недавно добавил поддержку Source Maps и Ray Cromwell из GWT сделал отличный скринкаст, показывающий работу Source Map в действии.
Другой пример использует библиотеку Google Traceur, которая позволяет писать на ES6 (ECMAScript 6) и компилировать в ES3-совместимый код. Компилятор Traceur также генерирует source map. Посмотрите на пример использования особенностей ES6 (классов и traits), как если бы они поддерживались браузером нативно. Textarea в примере также позволяет писать ES6-код, который будет компилироваться на лету в ES3 и также будет создаваться файл-маппер.
Пример — можно написать код на ES6 и сразу посмотреть в отладчике
Как это работает?
Единственный пока компилятор/минификатор с поддержкой Source Map — Closure compiler (как при компиляции сгенерировать маппер — написано ниже). При минификации JavaScript будет создан и файл-маппер. Пока Closure compiler не добавляет в конец файла специальный комментарий для Google Chrome Canary dev tools о том, что доступен файл-маппер:
Такой комментарий позволяет браузеру искать нужное место в исходном файле, используя файл-маппер. Если идея использовать странные комментарии вам не нравится, то можно добавить к скомпилированному файлу специальный заголовок:
Как и комментарий, это скажет клиенту, где искать маппер для этого файла. Использование заголовка также позволяет работать с языками, которые не поддерживают однострочные комментарии.
Файл-маппер будет скачан только если включено свойство и открыта консоль. Ну и конечно нужно будет залить исходные файлы, чтобы они были доступны по указанным в маппере путям.
Как сгенерировать файл-маппер?
Как уже говорилось выше, нужен будет Closure compiler для минификаци, склейки и генерации файла-маппера для нужных JavaScript-файлов. Для этого нужно выполнить команду:
Нужные флаги — это --create_source_map и --source_map_format . Последний нужен, т.к. по умолчанию маппер создаётся в формате V2, а нам нужен V3.
Внутреннее устройство Source Map
Чтобы лучше понять Source Map, возьмём для примера небольшой файл-маппер и подробно разберём, как устроена «адресация». Ниже приведён немного модифицированный пример из V3 spec:
- Версию маппера
- Название минифицированного/объединённого файла для production
- sourceRoot позволяет дописывать префикс в путь к исходным файлам
- sources содержит названия исходных файлов
- names содержит все настоящие названия переменных/функций из полученного файла
- а mappings — это соответствующие минифицированные названия
BASE64 VLQ или как сделать Source Map маленьким
Изначально в спецификации был описан очень подробный вывод всех зависимостей, что делало файл-маппер в 10 раз больше размером, чем сгенерированный файл. Вторая версия уменьшила размер файла вполовину, а третья версия — уменьшила ещё раз вполовину. Теперь для 133kB файла генерируется
- Номер символа в сгенерированном файле
- Исходный файл
- Номер строки в исходном файле
- Номер символа в исходном файле
- Исходное название (если есть)
Потенциальные проблемы с XSSI
В спецификации говорится о возможных проблемах с внедрением XSS при использовании Source Map. Избавиться от неё можно, написав в начале своего map-файла " )]> ", чтобы сделать это js-файл невалидным и вызвать ошибку. WebKit dev tools уже умеет её забарывать:
Как видно, первые три символа обрезаются и производится проверка их на соответствие указанному в спецификации невалидному коду и в этом случае вырезается всё до следующего символа перевода строки.
@sourceURL и displayName в действии: eval и анонимные функции
Эти два соглашения хотя пока и не входят в спецификацию Source Map, но позволяют серьёзно упростить работу с eval и анонимными функциями.
Первый хелпер очень похож на свойство //@ sourceMappingURL и вообще-то в спецификации (V3) упоминается. Включив этот специальный комментарий в код, который потом будет выполнен через eval , можно назвать eval -ы, что даст им более логичные имена при работе в консоли. Ниже приведён простой пример с использованием компилятора CoffeeScript:
Пример — пропущенный через eval код со сгенерированным именем
Другой хелпер позволяет давать имена анонимным функциям при помощи свойства displayName , указанного в контексте этой функции. Попрофилируйте этот пример, чтобы увидеть displayName в действии.
Пример — названия для анонимных функций через displayName (только WebKit NIghtly)
При профилировании будут показываться красивые названия вместо (anonymous function) . Но скорее всего displayName не будет включён в финальную сборку Google Chrome. Хотя надежды ещё остаются, предлагают также переименовать свойство в debugName.
К моменту написания статьи присваивание названий коду, выполненному через eval , поддерживают только Firefox и Google Chrome. Свойство displayName доступно только в ночных сборках Google Chrome.
Вливайтесь
Есть очень длинное обсуждение по поддержке Source Map в CoffeeScript.
У UglifyJS также есть тикет про поддержку Source Map.
Вы можете помочь, если примете участие в обсуждении и выскажете мнение по поводу нужности поддержки Source Map. Чем больше будет инструментов, поддерживающих эту технологию, тем будет проще работать, так что требуйте её поддержки в вашем любимом OpenSource-проекте.
Source Map не идеален
Есть одна неприятность с использованием Source Map для нормальной отладки. Проблема заключается в том, что при попытке проверить значение аргумента или переменной, определённой в контексте исходного файла, контекст ничего не вернёт, т.к. он на самом деле не существует. Нужен какой-то обратный маппинг, чтобы проверить значение соответствующей переменной/аргумента в минифицированном коде и сопоставить его исходному коду.
Проблема решаемая, а при должном внимании к Source Map могут появиться ещё более интересные его применения.
Инструменты и ресурсы
- Nick Fitzgerald сделал форк UglifyJS с поддержкой Source Map
- Paul Irish сделал простое демо Source Map
- Conrad Irwin написал удобный Source Map gem для Ruby-разработчиков
- Что ещё почитать про именование eval и свойство displayName
- Можно посмотреть исходный код Closure Compiler создания Source Map
- Несколько скриншотов и разговор о поддержке GWT source maps
Source Map — мощный инструмент для разработчика. Он позволяет держать production-код максимально сжатым, но при этом позволяет его отлаживать. Так же полезен для начинающих разработчиков, чтобы посмотреть код, написанный опытными разработчиками, чтобы поучиться правильному структурированию и написанию своего кода без необходимости продираться сквозь минифицированный код. Так чего же вы ждёте? Сгенерируйте Source Map для своего проекта!
Несколько лет назад QLandkarte GT когда-то считался лучшим инструментом для отображения карт бесплатно для Linux (и, возможно, некоторые из наших читателей помнят или начнут использовать). Эти карты могут быть загружены на устройства Garmin. К сожалению, этот проект был заброшен поэтому многие пользователи обратились к другим вариантам.
Перо не все было потеряно с момента отказа от QLandkarte GT с помощью нескольких пользователей QmapShack родился который представляет собой переработанную и концептуально другую ветвь программы QLandkarte GT (разработанную тем же автором) и перенесенную на Qt5.
На QmapShack
Это приложение можно использовать на этапе планирования походов, чтобы спланировать маршрут, а также сохранять информацию о пройденных маршрутах, вести дневник путешествий или составлять отчеты о поездках.
Подготовленный маршрут можно экспортировать в разные форматы. и используется в кампании на разных устройствах и в разных навигационных программах. Поддерживаются различные форматы карт и цифровые модели рельефа.
Al mismo tiempo, вы можете увидеть несколько карт, накладывающихся друг на друга, установка порядка его прорисовки по масштабу и изменение уровня прозрачности. К точкам на карте можно добавлять метки и даже прикреплять мультимедийные файлы.
Для любой точки дороги можно увидеть расстояние от начала до конца дороги, время в пути от этой точки, высоту над уровнем моря, угол наклона рельефа и скорость движения.
Вы можете просматривать, создавать и редактировать маршруты и маршруты GPX. Возможна даже автоматическая маршрутизация. QMapShack объединяет информацию из разных источников как «проект», что делает программу интересной для более крупных проектов с несколькими различными элементами. В общем, QMapShack лучше всего можно описать как универсальный инструмент для планирования карты и маршрутизации.
Среди его основных функций выделяются следующие:
Карты:
- Векторные карты и растровые карты Garmin * .jnx
- Растровые карты, совместимые с GDAL
- Растровые карты GEMF
- Онлайн-карты (TMS и WTMS (частично))
- Показать несколько карт в одном окне
- Перепроецируйте карты на лету, чтобы увидеть проекцию
- Цифровая модель рельефа, не зависящая от карт.
- Растушевка и раскраска сережек
Данные ГИС:
- 100% проектно-ориентированное управление данными
- Обобщить проект по журналу
- Поддержка треков, маршрутов, путевых точек и областей.
- Поддержка расширений точек отслеживания (например, пульса)
- Поддерживает собственный двоичный формат GPX, SLF, FIT, TCX, SMl, LOG, QLB и QMapShack
- Простая поддержка тайников
- Хранить проекты в базе данных
- Поддержка нескольких баз данных.
планирование:
- История отмен / повторов для всех элементов
- Режим редактирования точки трека для создания / изменения треков, маршрутов или областей
- Вырезать / копировать / комбинировать / инвертировать треки
- Различные фильтры для улучшения треков
- Расширения точек отслеживания, такие как частота сердечных сокращений, частота вращения педалей и т. Д.
- Настроить статистику отслеживания по активности
- Раскрасьте трек по расширению или активности
- Возможность создавать маршруты и рассчитывать их с помощью Routino (офлайн), MapQuest (онлайн) или BRouter (онлайн / офлайн)
Код распространяется под лицензией GPLv3. Совместим с Linux, Windows и macOS.
Как установить QmapShack в Linux?
Чтобы установить это приложение в нашей системе, мы должны загрузить исходный код приложения для выполнения компиляции.
Мы должны перейти по следующей ссылке где мы можемs получить исходный код. Сделано скачивание мы собираемся распаковать пакет с помощью следующей команды:
Теперь мы входим в каталог, который был создан с помощью:
И приступаем к компиляции выполняя следующие команды:
Сейчас для пользователей Arch Linux и любые другие его производные можно установить из репозиториев Arch Linux.
Им просто нужно открыть терминал и запустить в нем следующую команду:
Наконец, вы можете ознакомиться с документацией по использованию приложения. По следующей ссылке.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Любители Linux » Общие » Программное обеспечение Linux » QMapShack - отличное приложение для планирования маршрута и данных GPS
тип карты GARMIN в настройках экспортируемого в шейп исходного файла мр карты?
Я правильно понял?
и я её понял так, что нужно в шейпы экспортировать с использованием скрипт экспорта ShpDefault.dat с AnglingCharts, и после перевода типов в набор Lowrance.
То есть это можно не делать?
Тут же написано, что есть ВАРИАНТ. И этот вариант без использования dbf2imc. Мапэдит сама будет делать нужные шейпы.Еще раз прочитайте инструкцию dbf2imc.
Возьмите родной img. Тип карты garmin. Даже проще. Есть у меня видео на ютюбе касательно конвертации. Там все видно какие галочки нажимать и что делать. Если после этого не получится, значит, что-то у Вас с системой. Некоторые, для пущей бдительности заводят пользователя с ограниченными правами. Пробуйте. Я отправил человеку весь проект в исходниках, в компах он шарит "я подозреваю" ))
Согласен, инструкция к самой проге dbf2imc довольно куцая, предусматривается что пользователь заглянет в описание формата AT5 сначала. Но проблема явно лежит в плоскости администрирования или установленных компонент.
stepan021
Доброго времени суток всем.Люди добрые если не трудно, объясните пожалуйста в чем проблема.
Установил МапЭдит последний, GPSмаппер, мапсенд, с опенстрита карту в мр -формате ну и приступил.
Начал с точек в нулевом уровне (всего их три с "0").Данные не аппаратные,то есть все с эхолота и навигатора с начала на бумагу, а уже потом в карту ввожу дома и ручками.
Суть проблемы в том, что глубина промерянная хренак и на суше, не далеко от воды, но все равно как-то не понятно. В базкемпе все открывается как надо. Такое Ощущение что имеется разница координатной в программах.
stepan021
"глубина промерянная хренак и на суше, не далеко от воды, но все равно как-то не понятно"
Не совсем понятен вопрос
Но из того что есть, можно сделать вывод, что числовые значения точек с глубинами изменились после конвертации и заливки в эхолот.
Вы пишите "МапЭдит последний, GPSмаппер, мапсенд"
А вас не смущает, что того же cGPSmappera в сети лежат версии от 82 до 100d?
Вы не обижайтесь, но на заправке вы говорите вам в машину "просто топлива" налить , все равно какого, или говорите заправщику:
"92-регляр", "95 ЭКТО", "95 ЕВРО-5", "98 премиум", "ДИЗТОПЛИВО-ЭКТО", "ДИЗТОПЛИВО ЕВРО"?
Вопрос нужно задавать с точным указанием операционной системы, версии и ключей программного обеспечения, и желательно, что бы без словаря и запросов на перевод было понятно, что именно в вашем понимании значит "хренак".
На ваш не совсем понятный вопрос даю подсказку:
"Улучшение: Для карт с набором типов "Lowrance" в заголовке файлов MP поддерживается новый нестандартный атрибут "LcmDivDepths=Y", управляемый из закладки "lcmBuilder" окна "Свойства карты".
При наличии такого атрибута во время экспорта в формат Lowrance .LCM производится предварительное деление значений глубин и высот на коэффициент 3,28084 (количество футов в метре)."
Верно для MacOS X, JDK, Garmin Oregon 450.
Должно работать на всём.
Метод первый - сложный, но надёжный.
Итак, нам нужна карта какого-то конкретного участка - города, села, страны, континента .
Функция Экспорта работает просто - захватывает и экспортирует именно тот участок карты, который открыт у вас на экране, поэтому, полнота и границы карты зависят от вашего внимания ;-)
Теперь у вас на компьютере есть файл карты под названием map со всей необходимой внутри файла информацией. Но информация эта там находится в, как бы, сыром виде. Для использования её необходимо "приготовить", после чего использовать в навигаторе Garmin.
Теперь у нас есть:
map-файл
mkgmap
Для удобства, кладём map-файл в одну папку с программой mkgmap.
mkgmap - это программа без графического интерфейса, управляемая только с командной строки. Поэтому, нам надо под MacOs открыть Terminal (а под Windows запустить /Пуск/Выполнить/cmd . а как в новых версиях, я не знаю)
Для тех, кто никогда не работал с командной строкой (а точнее, с шеллом юникса), эта операция будет непростой.
Но мы попробуем!
pwd - смотрим, где мы находимся сейчас. /Users/Davydoff - всё верно. Мои файлы лежат в папке Загрузки/mkgmap.
ls - покажет файлы и папки в этом разделе:
Applications Documents Dropbox Library Music Public
Desktop Downloads Google Диск Movies Pictures avn_clb
В оригинале, папка называется Downloads. Переходим в неё:
cd Downloads/mkgmap (и нажимаем Tab - система сама дополнит за вами точное название папки, в которую вы переходите).
pwd
ls
Теперь мы на месте!
Davydoff$ cd Downloads/mkgmap-r3363/
Davydoff-MacAir:mkgmap-r3363 Davydoff$ pwd
Davydoff-MacAir:mkgmap-r3363 Davydoff$ ls
LICENCE doc lib mkgmap.jar osmmap.tdb
README examples map optionsfile.args
Всё просто, может любой!
Мы видим среди прочего - главное: файл map и программу mkgmap.jar
Фактически, наша задача натравить mkgmap.jar на map, сказав ему сделать из map карту для Garmin.
Для этого, нам потребуется создать файл с пояснениями:
pico optionsfile.args (назвать файл можно как угодно, я скопировал у автора)
Открывается редактор pico
Внутрь пустого файла копируем:
family-name: OSM Shan States
series-name: OSM Shan States
description: OSM Shan States
route
add-pois-to-areas
index
name-tag-list=name:en
Этот самый Shan States можете менять на что угодно, чтобы потом вам было понятно, что у вас за карта такая.
Нажимаем ctrl+x (именно ctrl, а не command), pico нас спрашивает, хотим ли мы сохранить файл - отвечаем "y(es)" и всё.
Файл с описанием создан.
Теперь остаётся только натравить mkgmap.jar на файл map, указав параметры описанные нами в optionfile.args (все эти файлы должны быть в одной папке)
java -jar mkgmap.jar --gmapsupp -c optionsfile.args map
И скорее всего, вы узнаете о том, что у вас не установлен Java Developer Kit (JDK). Увидите соответствующее предупреждение и кнопочку "Подробнее". Жмите и скачивайте для вашей MacOS X соответствующую JDK с сайта производителя, который непременно откроется сам.java -jar mkgmap.jar --gmapsupp -c optionsfile.args map
Davydoff-MacAir:mkgmap-r3363 Davydoff$ java -jar mkgmap.jar --gmapsupp -c optionsfile.args map
Time started: Sun Dec 07 19:41:26 ICT 2014
Number of MapFailedExceptions: 0
Number of ExitExceptions: 0
Time finished: Sun Dec 07 19:41:52 ICT 2014
Total time taken: 25382ms
Программа некоторое время подумает и отработает (может и с минуту повисеть, и с пять, в зависимости от объёма выбранного вами участка карты).
После этого у вас образуется новые файлы, из которых нам нужен только один: gmapsupp.img
Это и есть готовый отконвертированный файл карты для устройства Garmin.
Далее, этот файл вы заливаете на флешку вашего Гармина, открываете в настройках устройства и вперёд!
В BaseCamp/MapSource вы точно также увидите эту вашу новую карту!
Поздравляю! Вы прошли испытание!
Метод второй, простой.
Если в Первом Методе вы в любой момент можете это повторить самостоятельно, то второй метод вызывает зависимость от работоспособности ресурса.
Читайте также: