Jump to content
GPS навигатор СитиГИД

Редактор содержания файла трека *plt


Go to solution Solved by /DiOs,

Recommended Posts

Добрый день. Возник вопрос как из некорректного фала трека, сделать корректный. Имею файл 2012_05_30_gps.plt записанный старой доброй Nokia с СГ версии 7.2.32.

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

В общем нужно в этом файле эти три запятые заменить на точки, есть ли способ и идеz как это можно автоматизировать, то есть делать не руками, а программно? 

Пример трека:

OziExplorer Track Point File Version 2.1

WGS 84
Altitude is in Feet
Reserved 3
0,2,255,2012_05_30_gps.plt,0,0,0,255
0
59,756850,31,068454,0,0,41059,1655671,2012-05-30,07-58-25
59,756852,31,068458,0,0,41059,1655903,2012-05-30,07-58-27
59,756853,31,068459,0,0,41059,1656019,2012-05-30,07-58-28
59,756853,31,068459,0,0,41059,1656134,2012-05-30,07-58-29
59,756853,31,068458,0,0,41059,1656250,2012-05-30,07-58-30
59,756854,31,068460,0,0,41059,1656366,2012-05-30,07-58-31
59,756856,31,068462,0,0,41059,1656713,2012-05-30,07-58-34
59,756855,31,068459,0,0,41059,1656713,2012-05-30,07-58-34

 

Link to post
Share on other sites

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

Link to post
Share on other sites

Не получится. В смысле тупо запятую менять не получится. Там тогда и остальные запятые поменяются (которые реально запятые, между параметрами).

Надо менять по такому шаблону:

Заменить "CR/LF 59," на "CR/LF 59." (возможно потребуется и с 60 поиграть)

А потом аналогично ",31," на ",31."

Все остальные параметры по-моему могут и вовсе отсутствовать, СНГ не обидится.

Вариант второй - с экселем. Открываем файл экселем, как "фикс. Формат" и ставим колонки где нам надо. То есть чтоб по колонкам попали например

59,245677 , 31,234567 , 0 и т.д., чтоб запятые были в отдельных ячейках. Потом в колонках где координаты заменяем запятую на точку. И обратно превращаем в текст. Этот вариант можно даже автоматизировать с vba.

Забыл - при импорте в Эксель импортировать все ячейки как "просто текст"

-----

За ашыпки прашю винить TapaTalk

Edited by IШIN
  • Upvote 1
Link to post
Share on other sites

Дети, вы что-нибудь слышали про регэкспы? А вот FARовский плагин слышал... А в третьем ФАРе это вообще стоковая функциональность. Я уж не говорю про порты awk'а, sed'а и прочих полезных вещей под винду.

 

Мышовое гуевозение не должно быть шорами на всю жизнь, дети!

  • Upvote 1
Link to post
Share on other sites

Дети, вы что-нибудь слышали про регэкспы? А вот FARовский плагин слышал... А в третьем ФАРе это вообще стоковая функциональность. Я уж не говорю про порты awk'а, sed'а и прочих полезных вещей под винду.

 

Мышовое гуевозение не должно быть шорами на всю жизнь, дети!

Где это можно почитать об этом наиболее доступно?

Link to post
Share on other sites

Кажется, мы разбудили какую-то страшную Ктулху.... [emoji15]

-----

За ашыпки прашю винить TapaTalk

  • Upvote 1
Link to post
Share on other sites

Где это можно почитать об этом наиболее доступно?

https://ru.wikipedia.org/wiki/Sed

https://ru.wikipedia.org/wiki/AWK

https://ru.wikipedia.org/wiki/%D0%E5%E3%F3%EB%FF%F0%ED%FB%E5_%E2%FB%F0%E0%E6%E5%ED%E8%FF

 

и

 

https://ru.wikipedia.org/wiki/%CA%F2%F3%EB%F5%F3

Edited by svlad2012
Link to post
Share on other sites


Где это можно почитать об этом наиболее доступно?
man regular expression :)

 

Если серьёзно -- гуглим те самые regular expressions и из этой пропрвы выбираем что-нибудь типа "для чайников". В том виде, в котором это нужно для данной задачи -- это даже "для дырочки в шишечке крышки для чайника".

 

Как применить на винде? Если есть ФАР, то уже сказал, после F7 ставим крыжик "использовать регулярные выражения". Если отдельным инструментом -- гуглим на тему портов юниховых тулзей под винду.

Link to post
Share on other sites

Если к ФАРу идиосинкразия, то для этой конкретной задачи я взял бы sed.

Link to post
Share on other sites

Если к ФАРу идиосинкразия, то для этой конкретной задачи я взял бы sed.

Я правильно понимаю что это нужно делать при непосредственном открытии файла?

sed это команда в far или отдельная утилита?

Link to post
Share on other sites

Это отдельный текстовый редактор, но из командной строки, то есть неинтерактивный.

То есть запускается из ком. строки (ну или batником) 

Link to post
Share on other sites

В ФАРе версий 1.х можно установить дополнительный плагин регулярных выражений. Начиная с ФАР2 функционал есть уже "из коробки". И в окнах search/replace появляется чекбокс для этого варианта поиска/замены.

 

 

Если крыжик поставить, поиск будет осуществляться по правилам разбора регулярных выражений:

 

 

В фаровском хелпе есть  и про регекспы.


sed, awk и пр. -- отдельные (изначально) юниховые тулзы. Очень мощный аппарат для обработки текста.

Link to post
Share on other sites

notepad++ тоже умеет регулярные выражения.

и еще он умеет в гуёвом виде показывать неправильные разрывы  переносы строк, которые, бывало, встречались в СитиГИДовских треках, то есть вместо CRLF был просто CR

из-за чего винда читала такой файл в одну строку.

Edited by MonoRAil.kz
Link to post
Share on other sites

Пробую

 получаю что выбирает не всё что нужно как мне кажется

Что то не так делаю? В англицком не силен...

Link to post
Share on other sites

Дык вроде все правильно - в каждой строке по три вхождения.

В результатах поиска он же каждую строку по три раза пишет.

И указывает - в какой строке и с какой позиции - в каждой с 1, с 11 и с 28 позиции.

Link to post
Share on other sites

Дык вроде все правильно - в каждой строке по три вхождения.

В результатах поиска он же каждую строку по три раза пишет.

И указывает - в какой строке и с какой позиции - в каждой с 1, с 11 и с 28 позиции.

Точно, не сообразил что он строчку три раза дублирует, спасибо!

Как теперь это всё заменить?

И ещё вопрос, можно ли это сделать с десятком файлов, чтобы не открывать каждый и править так?

Edited by fims7
Link to post
Share on other sites


И ещё вопрос, можно ли это сделать с десятком файлов, чтобы не открывать каждый и править так?
sed

Или пользовательское меню на F2.

Link to post
Share on other sites

Что то не так делаю? В англицком не силен...

Бросайте эти эксперименты для гиков, берите нормальный интерактивный редактор типа Notepad++ и сочиняйте регулярные выражения в нем :) Так Вам явно будет проще и быстрее. Кстати, у Notepad++ и справка, помнится, была по regexp-ам. Нормальная, читабельная в отдельном окне ;)

А можно (в нем же) через поиск/замену, с использованием рег.выражений или даже без.

Edited by curopat
Link to post
Share on other sites

берите нормальный интерактивный редактор типа Notepad++ и сочиняйте регулярные выражения в нем  :) Так Вам явно будет проще и быстрее. 

Но ведь каждый трек надо будет отдельно открывать и заменять.

А SED в BATе, как я понимаю, позволит одним кликом конвертнуть например все треки в папке.  

Link to post
Share on other sites


А SED в BATе, как я понимаю, позволит одним кликом конвертнуть например все треки в папке.
Если уж совсем до точки дойти, то я в ФАРе такое тоже сооружу, но это уже от чистого фанатизма. Это как я в фидошные времена на 4dos'е писал рутеры, файлэхопроцессоры... Ну да, забавно. Ну да, работали. Но,тем не менее, голимый фан.
Link to post
Share on other sites

Но ведь каждый трек надо будет отдельно открывать и заменять.

 

Ну зачем же каждый в отдельности? Открываем все сразу ... а в окошке замены выбираем во всех открытых документах

Link to post
Share on other sites

Ну да, забавно. Ну да, работали. Но,тем не менее, голимый фан.

Ну да. Так то вы, а кому-то и squish настроить было проблемой. Хватает инструментов, позволяющих непродвинутым людям делать разные вещи наглядно и без... фана ;)

Link to post
Share on other sites

Открываем все сразу ... а в окошке замены выбираем во всех открытых документах

Если файлов не больше десятка, то проще всего так, да. Если много, то можно открыть один, удобно отладить на нем regexp(ы) для поиска-замены, а потом использовать их в командной строке SED в батнике )))
Link to post
Share on other sites
  • 3 months later...

Снова вопрос по теме, в начале отвлекли по работе не смог разобраться до конца, в общем суть осталась >та же.

Но с прогрессом поставил notepad++, сделал регулярное выражение которое выбирает почти что надо, ещё подцепляет 3 группу символов, которую подцеплять рег. выражением не нужно.

И вот вопрос что можно добавить в рег. выражение чтобы не цепляло 3 группу символов, сам не могу сообразить и что нужно поставить в окно "заменить на" чтобы только запятая менялась на точку.

UPD

С первым вопрос вроде разобрался, остался второй и основной

Edited by fims7
Link to post
Share on other sites
  • Solution

Я не знаю, как в нотепадовской, а в перловой нотации это выглядело бы так:

^(d{2}),(d{6}),(d{2}),(d{6})
$1.$2,$3.$4
  • Upvote 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...