Найти тему

LAS 3.0 Форматы и типы данных. (часть 4)

Оглавление

В прошлой публикации была описана структура и типы разделов формата LAS 3.0. В этой публикации продолжу описание данных в альтернативной интерпретации.

Форматы данных LAS 3.0

LAS файлы версии 2.0 позволяли использовать формат чисел с плавающей запятой только для данных, хранящихся в разделе ~ASCII. Данные, хранящиеся в поле "Значение" любой строки данных параметров, могут быть либо числом с плавающей запятой, либо текстовой строкой, например:

Пример формата данных LAS 2.0
Пример формата данных LAS 2.0

Версия LAS 3.0 позволяет использовать ШЕСТЬ типов форматов: числа с плавающей запятой, целые числа, экспоненциальные числа, строки, дата\время, градусы\минуты\секунды. Необязательная спецификация (для типа данных с плавающей точкой и строк) формата помещается в соответствующий набор фигурных скобок {}, которые помещаются после поля DESCRIPTION и перед разделителем ASSOCIATION | (вертикальная черта), если присутствует, в любой строке параметра или строке определения столбца.

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

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

Единственным исключением из правил является формат обязательного параметра DATE в разделе ~Well. Если спецификация формата отсутствует, формат даты должен быть {ДД/ММ/ГГГГ}. Спецификация формата не должна использовать знак пробела. Единственное исключение допускается - если формат содержит и дату и время одновременно, например {ДД/ММ/ГГГГ ЧЧ:ММ:СС}.В этом случае можно использовать один пробел между форматом даты и форматом времени.

Формат с плавающей точкой {Fx.y}

Формат с плавающей точкой (Float) начинается с символа F в качестве первого символа поле символа { (левая фигурная скобка). Необязательное значение xy - это десятичное число >0, которое выражает общую длину числа с плавающей запятой и количество десятичных знаков. Где: x - общая длина, а y - количество знаков после запятой. Размерность x должна быть как минимум равна y+2, чтобы удовлетворять допустимому формату. Значение xy является необязательным, однако если используется, то должны отображаться как x так и y.

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

Если представляемое число имеет меньше цифр, чем указанный формат, то пробелы добавляются ПЕРЕД числом. Если количество знаков после запятой в формате больше числа знаков, то в конце числа добавляются нули. Если количество знаков после запятой в формате меньше, чем само число, то число округляется до указанного количества знаков после запятой. Пример указан ниже, пробелы, для понимания, указаны точками.

Пример формата с плавающей запятой.
Пример формата с плавающей запятой.

Формат целочисленный {Ix}

Целочисленный формат (Integer) начинается с символа I, как первого символа после символа { (левая фигурная скобка). Необязательное значение x - целое число >0, которое выражает общую длину целого числа. Если указан x, то ВСЕ элементы данных должны быть записаны с использованием указанного количества символов, даже если необходимо добавить пробелы. Если значение x не указано, то значение данных может быть любой длины. Формат может быть указан так, например: {I} или {I10}.

Строковый формат {Sx}

Строковый формат (String) начинается с символа S как первого символа после символа { (левая фигурная скобка). Это означает, что данные, на которые ссылается формат, должны интерпретироваться как текст. Необязательное значение x - целое число >0, которое выражает общую длину строки. Если указан x, то ВСЕ элементы данных должны быть записаны с использованием указанного количества символов, даже если необходимо добавить пробелы или удалить лишние символы. Если значение x не указано, то каждая текстовая строка может быть любой длины. Формат может быть указан так, например: {S} или {S32}.

Экспоненциальный формат {E0.00E+00}

Экспоненциальный формат начинается с символа E как первого символа после символа { (левая фигурная скобка). Остальная часть формата является стандартным экспоненциальным форматом. Знак + (плюс) указывает место для знака (который может быть + или - для любого конкретного числа) показателя степени. Количество нулей не ограничено ни в одной части формата. Все номера канала должны быть записаны именно в указанном формате. При необходимости можно добавлять начальные пробелы.

Пример использования экспоненциального формата.
Пример использования экспоненциального формата.

Формат Даты и Времени {DD/MMM/YYYY hh:mm:ss}

Формат даты и времени использует стандарт ISO 8601. Формат включает в себя формат даты (прописные буквы) и формат времени (строчные буквы). Использовать можно отдельно дату и отдельно время или использовать вместе и дату и время.

Дата

Формат даты использует верхний регистр символа D для количества дней, верхний регистр символа M для количества месяцев и верхний регистр символа Y для количества лет. Число каждого из этих символов определяет точный формат.

Примеры описания формата даты
Примеры описания формата даты

Для формата года это единственный формат года применяемый в LAS 3.0.

Разделителями могут выступать знаки - (тире ASCII код 45) или / (знак деления ASCII код 47). Использование пробелов в формате даты не допускается.

Время

В формате времени используется строчный символ h для указания количества часов, строчный символ m для указания количества минут и строчный символ s для указания количества секунд. Это единственный случай учета регистра символов в формате LAS 3.0.

Пример описания формата времени
Пример описания формата времени

Разделителем может быть только символ : (двоеточие ASCII код 58). В формате времени использование пробелов не допустимо. Формат времени может быть: hh, hh:mm или hh:mm:ss.

Формат даты и формат времени если используются оба, должны быть разделены хотя бы одним пробелом.

Градусы, минуты, секунды {° ‘ "}

Этот формат предназначен для указания географических координат, а именно широты и долготы и может быть выражен с помощью градусов, минут и секунд. Например:

23.45° 34.06' 58.19"

Используется три специальных символа: градус ° (ASCII код 176), одинарная кавычка ' (ASCII код 39) и двойные кавычки " (ASCII код 34). Все три знака должны использоваться при использовании формата. В качестве альтернативы, часто применяются простые десятичные значения и этот вариант представляется форматом с плавающей запятой {F}.

Продолжение описания в следующей публикации.