Jump to content
GPS навигатор СитиГИД
Sign in to follow this  
fims7

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

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

 

Share this post


Link to post
Share on other sites

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

Share this post


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

Share this post


Link to post
Share on other sites

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

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

-----

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

  • Upvote 1

Share this post


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

Share this post


Link to post
Share on other sites


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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

 

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

 

 

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


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

Share this post


Link to post
Share on other sites

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

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

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

Edited by MonoRAil.kz

Share this post


Link to post
Share on other sites

Пробую

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Edited by fims7

Share this post


Link to post
Share on other sites


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

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by curopat

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites


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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Если файлов не больше десятка, то проще всего так, да. Если много, то можно открыть один, удобно отладить на нем regexp(ы) для поиска-замены, а потом использовать их в командной строке SED в батнике )))

Share this post


Link to post
Share on other sites

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

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

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

UPD

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

Edited by fims7

Share this post


Link to post
Share on other sites

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

^(d{2}),(d{6}),(d{2}),(d{6})
$1.$2,$3.$4
  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×