Обикновени XYZ файлове
Въпреки че Gwyddion не работи с произволни XYZ данни и необработените XYZ данни се интерполират към обикновена мрежа, когато се импортират, стана необходимо да се създаде файлов формат, подобен по дух на Gwyddion обикновен формат на поле (.gsf), но представящ данни във формат XYZ. Такъв файлов формат, наречен Gwyddion XYZ Field (.gxyzf), е описан в този раздел.
Трябва да се отбележи, че Z просто означава ординатата в този случай. Стойностите Z във файла всъщност може да са действителни Z координати (височини), но могат също да бъдат токове, напрежения и т.н.
Обща структура
Файлът GXYZF се състои от четири части в следния ред:
Файловете започват с "магически низ", който указва типа на файла.
Заглавката се състои от редове във формат
които определят индивидуалните параметри.
Заглавието завършва с NUL байтове от един до осем, подравнявайки началото на данните към отместване, кратно на 8.
Двоичните данни се записват в 64-битов формат с плаваща запетая.
Магически низ
gxyzf файловете започват с реда
който завършва със знак за нов ред (\n, ASCII 0x0a).
Заглавие на текста
Всеки заглавен ред има формат
, където всеки интервал преди името, около знака за равенство и в края на стойността се игнорира. Имената на полетата са чувствителни към главни и малки букви и следват обичайните правила за идентификатори в езиците за програмиране.
Всички не-ASCII знаци, които могат да се появят, например, в имената на каналите, са кодирани в UTF-8. Символът NUL не може да се появи в заглавката.
NChannels | Задължително | Брой канали за стойност (Z), положително цяло число.Съхранените данни за всяка точка също включват координатите X и Y, но те не се вземат предвид в NChannels. |
N точки | Задължително | Броят точки от данни във файла. |
XYUnits | Не е задължително | Пространствени мерни единици, т.е. единици за стойности X и Y. Трябва да се настрои на основни единици като m или A без десетични префикси (Gwyddion може да разреши тази ситуация, но може да причини проблеми с друг софтуер). По подразбиране няма единици. Това означава, че за SPM данни вероятно искате да зададете XYUnits на m, тъй като страничните размери се измерват в метри. |
ZUnits1, ZUnits2, … | Не е задължително | Стойностни единици, т.е. единици стойности на данни за отделни канали. Каналите са номерирани от 1 до NChannels. Вижте XYUnits по-горе за повече информация. |
Заглавие1, Заглавие2, … | Не е задължително | Имена на отделни канали. Каналите са номерирани от 1 до NChannels. Заглавията нямат стойност по подразбиране, приложенията може да показват „Неизвестно“ или нещо подобно, ако не е дадено заглавие. |
XRes | Не е задължително | Подсказка, указваща предпочитания хоризонтален размер в пиксели, ако данните са интерполирани върху решетка, положително цяло число. Четците на данни могат да го игнорират и да интерполират данни в мрежа с различна резолюция. |
YRes | Не е задължително | Подсказка, указваща предпочитания хоризонтален размер в пиксели, ако данните са интерполирани върху решетка, положително цяло число. Четците на данни могат да го игнорират и да интерполират данни в мрежа с различна резолюция. |
Заглавката може да съдържа други полета, различни от описаните по-горе.Gwyddion ще ги зареди в метаданни. Полетата с обща информация могат да включват коментар, дата или посока.
Полетата могат да бъдат в произволен ред, но се препоръчва да започнете със задължителните полета, след това да добавите незадължителните полета и да завършите с нестандартните.
Прост пример за заглавка на файл с 2 тръби (също включва магически низ):
подравняване с NUL
Текстовото заглавие завършва с един до осем NUL байта ( \0 , ASCII 0x00), които (a) го прекратяват и (b) подравняват началното отместване на данните във файла с кратно на 8. По-точно, като означават N общата дължина на магическия низ и текстовия хедър, данните започват от най-близкото кратно на 8, което е по-голямо от N .
Допълнението, кратно на 8, осигурява подравняване на данните при достъп до паметта при директно картографиране файл към памет. Броят на нулевите байтове се определя еднозначно от остатъка след разделяне на дължината на заглавката на 8 ( N mod 8 ):
0 | 8 |
1 | 7 |
2 | 6 |
3 | 5 |
4 | 4 |
5 | 3 |
6 | 2 |
7 | 1 |
Двоични данни
Стойностите на данните се съхраняват като стандартни IEEE 64-битови числа с плаваща запетая с двойна точност, ред на байтовете с малък ред, LSB или Intel. Точките се съхраняват в произволен ред. Всяка точка се съхранява като блок от NChannels+2 стойности: X, Y и след това всички ординатни стойности в канален ред.
Физическите единици на стойностите са дадени от XYUnits за X и Y и след това ZUnits1, ZUnits2, ... за ординатните стойности.
Размер на данните точно 8*NPpoints*(NChannels+2)байта и след тях не трябва да има данни във файла.