Код: Выделить всё
import os
from gsfpy import open_gsf
from xtf import XTFFile, XTFPingHeader, XTFPingChannelHeader, XTFPing
def convert_gsf_to_xtf(gsf_file_path, xtf_file_path):
# Open the GSF file
with gsfpy.GSFF(gsf_file_path) as gsf_file:
# Create an XTF file and add metadata
xtf_file = XTFFile()
xtf_file.set_sonar_name("My Sonar")
xtf_file.set_recording_program_name("My Program")
xtf_file.set_number_of_channels(gsf_file.number_channels)
# Loop through each ping in the GSF file
for ping_number in range(gsf_file.number_pings):
ping_data = gsf_file.read_ping(ping_number)
# Create an XTF ping header and add metadata
ping_header = XTFPingHeader()
ping_header.set_serial_number(ping_data.serial_number)
ping_header.set_ping_number(ping_data.ping_number)
ping_header.set_number_of_channels(gsf_file.number_channels)
ping_header.set_sonar_depth(ping_data.sonar_depth)
ping_header.set_frequency(gsf_file.frequency)
ping_header.set_sample_rate(gsf_file.sample_rate)
ping_header.set_ping_date(ping_data.datetime)
# Loop through each channel in the GSF ping
for channel_number in range(gsf_file.number_channels):
channel_data = ping_data.channels[channel_number]
# Create an XTF channel header and add metadata
channel_header = XTFPingChannelHeader()
channel_header.set_channel_number(channel_data.channel_number)
channel_header.set_gain(channel_data.gain)
channel_header.set_pulse_length(channel_data.pulse_length)
channel_header.set_sample_rate(gsf_file.sample_rate)
# Create an XTF ping and add channel data
ping = XTFPing()
ping.set_channel_data(channel_number, channel_data.data)
# Add the channel header and ping to the XTF file
ping_header.add_channel_header(channel_header)
ping.add_channel(channel_number, channel_header, channel_data.data)
# Add the ping header and ping to the XTF file
xtf_file.add_ping_header(ping_header)
xtf_file.add_ping(ping_header, ping)
# Save the XTF file with the same name as the GSF file but with .xtf extension
xtf_file_name = os.path.splitext(gsf_file_path)[0] + ".xtf"
xtf_file.save(xtf_file_name)
# Convert all GSF files in the directory to XTF format
gsf_directory = "C:/Users/repco.geo3/Desktop/Working"
for file_name in os.listdir(gsf_directory):
if file_name.endswith(".gsf"):
gsf_file_path = os.path.join(gsf_directory, file_name)
convert_gsef_to_xtf(gsf_file_path, gsf_file_path[:-4] + ".xtf")
Traceback (последний вызов):
Файл "C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\site-packages\gsfpy3_08\bindings.py", строка 36,
_libgsf = CDLL(libgsf_abs_path)
^^^^^^^^^^^^^^^^^^^^
Файл "C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\ctypes_init.py", строка 376, в init
self._handle = _dlopen(self._name, mode)
^^^^^^^^^^^^^^^^^^^^^^^
Ошибка ОС: [WinError 193] %1 не является допустимым приложением Win32
Вышеупомянутое исключение было прямой причиной следующего исключения:
Traceback (самый последний вызов — последний):
Файл «C:\Users\repco.geo3\Desktop\Working\convert gsf to xtf.py», строка 2, в
из gsfpy import open_gsf
Файл "C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\site-packages\gsfpy_init_.py", строка 64, в
mirror_default_gsf_version_submodule(globals())
Файл "C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\site-packages\gsfpy_init_.py", строка 45, в Mirror_default_gsf_version_submodule
gsf_submodule = import(gsf_submodule_name, globals_dict, None, ["*"], 0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\site-packages\gsfpy3_08_init_.py", строка 10, в
из gsfpy3_08.bindings import (
файл «C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\site-packages\gsfpy3_08\bindings.py», строка 38, в
вызове исключение (
Исключение: невозможно загрузить общую библиотеку из C:\Users\repco.geo3\AppData\Local\Programs\Python\Python311\Lib\site-packages\gsfpy3_08\libgsf\libgsf03-08.so Установите для переменной среды $GSFPY3_08_LIBGSF_PATH правильный путь или удалите ее из среды, чтобы использовать версию по умолчанию.
Процесс завершен с помощью код выхода 1