Я смотрю, как преобразовать следующий файл .gp в формат csv при преобразовании координат в скорость и время в R

Хотите преобразовать файл .gp в .csv. Эти данные являются извлечением из GPS-устройства, которое постоянно отслеживает его положение с течением времени.

Кроме того, я хотел бы найти время и скорость во всем.

Вот пример вывода.

$GNRMC,020555.90,A,4828.05510,N,12318.87567,W,0.059,,170322,,,A*7E
$GNRMC,020556.00,A,4828.05509,N,12318.87569,W,0.030,,170322,,,A*7D
$GNRMC,020556.10,A,4828.05509,N,12318.87570,W,0.040,,170322,,,A*73
$GNRMC,020556.20,A,4828.05508,N,12318.87571,W,0.018,,170322,,,A*7D
$GNRMC,020556.30,A,4828.05508,N,12318.87572,W,0.043,,170322,,,A*71
$GNRMC,020556.40,A,4828.05508,N,12318.87573,W,0.058,,170322,,,A*7D
$GNRMC,020556.50,A,4828.05508,N,12318.87573,W,0.017,,170322,,,A*77
$GNRMC,020556.60,A,4828.05509,N,12318.87573,W,0.047,,170322,,,A*70
$GNRMC,020556.70,A,4828.05510,N,12318.87572,W,0.041,,170322,,,A*7E
$GNRMC,020556.80,A,4828.05510,N,12318.87573,W,0.075,,170322,,,A*77
$GNRMC,020556.90,A,4828.05511,N,12318.87572,W,0.066,,170322,,,A*74

Это является файл csv. Вам просто нужно выяснить, что означают разные поля. Я не думаю, что .gp является стандартным форматом файла. Я предполагаю, что первое поле — это устройство, второе — представление времени, четвертое — широта, шестое — долгота.

Allan Cameron 19.03.2022 18:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
dat <- read.csv(text=txt, head=FALSE)
dat
#--------------
       V1      V2 V3       V4 V5       V6 V7    V8 V9    V10 V11 V12  V13
1  $GNRMC 20555.9  A 4828.055  N 12318.88  W 0.059 NA 170322  NA  NA A*7E
2  $GNRMC 20556.0  A 4828.055  N 12318.88  W 0.030 NA 170322  NA  NA A*7D
3  $GNRMC 20556.1  A 4828.055  N 12318.88  W 0.040 NA 170322  NA  NA A*73
4  $GNRMC 20556.2  A 4828.055  N 12318.88  W 0.018 NA 170322  NA  NA A*7D
5  $GNRMC 20556.3  A 4828.055  N 12318.88  W 0.043 NA 170322  NA  NA A*71
6  $GNRMC 20556.4  A 4828.055  N 12318.88  W 0.058 NA 170322  NA  NA A*7D
7  $GNRMC 20556.5  A 4828.055  N 12318.88  W 0.017 NA 170322  NA  NA A*77
8  $GNRMC 20556.6  A 4828.055  N 12318.88  W 0.047 NA 170322  NA  NA A*70
9  $GNRMC 20556.7  A 4828.055  N 12318.88  W 0.041 NA 170322  NA  NA A*7E
10 $GNRMC 20556.8  A 4828.055  N 12318.88  W 0.075 NA 170322  NA  NA A*77
11 $GNRMC 20556.9  A 4828.055  N 12318.88  W 0.066 NA 170322  NA  NA A*74

Я нашел описание формата файла в https://docs.novatel.com/OEM7/Content/Logs/GPRMC.htm

Итак, время равно V2, а скорость в узлах равна V8:

dat$V8
# [1] 0.059 0.030 0.040 0.018 0.043 0.058 0.017 0.047 0.041 0.075 0.066

Приложение: Хотя я ответил на конкретные вопросы о времени и скорости, я остался озадачен кодированием широты и долготы. Я думаю, что это может быть закодировано как

Декабрь Мин. 3857.5634N09515.92890W ддмм.мммм дддмм.мммм

Таким образом, широта будет 48 градусов, 28,055 минут северной широты, а долгота 123 градуса 18,88 минут западной долготы, так что это будет недалеко от стадиона Сентенниал в Виктории, Британская Колумбия, Канада. См. https://www.earthpoint.us/convert.aspx для примеров других параметров формата lat long.

Эффектная находка формата, IRTFM, хорошая работа. Я согласен с вашей интерпретацией широты и долготы ... Я не могу сказать, что когда-либо видел это представление раньше, но оно имеет смысл и должно быть достаточно простым для обработки OP с операторами %/% и %%.

r2evans 19.03.2022 19:42

Стратегия поиска формата файла заключалась в том, чтобы включить «$ GNRMC» с GPS. Поиск форматов lat-long был немного более трудоемким. Не уверен, что понимаю предложение использовать операторы по модулю для анализа кодировки минут в градусах, поскольку на самом деле это не одиночные числа. Я бы представил себе использование gsub("^(\\d{2}", "\\1 ", lat) и gsub("^(\\d{3}", "\\1 ", long)

IRTFM 19.03.2022 19:56

это тоже может работать, предполагая, что либо (а) ничто не является однозначной степенью, либо (б) они 0-дополняют. В отсутствие этого, поскольку V4 и V6 кажутся numeric, достаточно использовать lon = V6 %/% 100 + (V6 %% 100)/60 и аналогичные для lat., что приводит к формату DD.DDDD в десятичных градусах.

r2evans 19.03.2022 20:05

Но если они являются строковыми, а строковые операции предпочтительнее, то я, вероятно, извлеку выгоду из предположения, что всегда используются 2-значные целые минуты (плюс десятичные), и позволю градусам быть переменными, аля strcapture("^(.+)(..\\..*)", dat$V6, list(deg=0, min=0)), а затем преобразовать в любой формат, который предпочтительнее для фактические расчеты.

r2evans 19.03.2022 20:09

Почти уверен, что они 0 pad.

IRTFM 19.03.2022 20:09

Я думаю, что презумпция «строки», возможно, спорна, как если бы вы просто использовали для этого read.*, R по умолчанию должен быть числовым, что делает менее эффективным использование регулярных выражений для его анализа, предпочитая операторы %/%/%%. В любом случае, хорошая находка.

r2evans 19.03.2022 20:10

ХОРОШО. Предполагалось, что вы используете базу 90 или 180. Простое использование базы 100 для выделения или удаления первых двух цифр может быть успешным, если вы находитесь достаточно далеко от экватора и Гринвича.

IRTFM 19.03.2022 20:15

Я думаю, что у нас разные взгляды на формат DDMM.MMM ... я предполагаю, что если мы уберем DD (или 0D или DDD) слева, то MM.MMM будет просто десятичной минутой. Почему на это влияет близость к экватору/меридиану?

r2evans 19.03.2022 20:20

Я думал, что начальный 0 - это проблема, когда слишком близко к экватору или Гринвичу, а не к расчету минут. Проверив только сейчас, я понял, что это не так.

IRTFM 19.03.2022 20:31

Я не вижу проблемы. Если V4 = c(4828.055, 828.055), то исходный V4 %/% 100 + (V4 %% 100)/60 производит то, что я предполагаю правильным: [1] 48.467583 8.467583.

r2evans 19.03.2022 20:34

Теперь я согласен. Извините за шум. 0857.5634 %/% 100 [1] 8

IRTFM 19.03.2022 20:34

Не проблема! Не шум. Подтверждение того, что я понял проблему (не то, чтобы мне нужно было решить ее как таковую). Возможно, ОП увидит эти комментарии и воспримет их как предложения о том, как продолжить использование данных для других нужд.

r2evans 19.03.2022 20:35

Отличные навыки гугления. Я вычислил приблизительную схему, но отказался от поиска точной спецификации после нескольких попыток, полагая, что если я не нашел ее сейчас, то это должен быть закрытый формат, который не был бы общедоступным.

Allan Cameron 19.03.2022 23:13

@AllanCameron Похоже, существует множество возможных форматов: anavs.com/knowledgebase/nmea-format определяется начальным $-элементом

IRTFM 20.03.2022 00:28

@IRTFM спасибо вам за это! мог бы сказать, что это были координаты, но не понял бы, что в этом формате файла скорость указывается в узлах. Большое тебе спасибо

Sprint123 20.03.2022 07:20

Другие вопросы по теме