Заполнить/построить массив netcdf4 или numpy из массива строк CVA, хранящегося в текстовом файле ⇐ Python
Заполнить/построить массив netcdf4 или numpy из массива строк CVA, хранящегося в текстовом файле
Я новичок в программировании на Python, поэтому, пожалуйста, будьте терпеливы. Я пытаюсь создать проект 3D-принтера, который потребует от меня использования данных из нескольких больших файлов данных. Я буду использовать скрипт openscad для создания stl-файлов для 3D-печати глобуса с сильно увеличенным рельефным профилем на поверхности. Я извлек и объединил соответствующие данные из двух больших файлов данных netcdf4 GEBCO_2023.nc и GEBCO_2023_TID.nc. Я создал файлы ascii txt, содержащие информацию, которая потребуется openscad. Формат файла, который требуется для openscad, представляет собой массив CSV, в котором все данные хранятся в виде строковых чисел, с использованием [] для обозначения размеров в 2-мерных массивах.
Глобальный массив данных о высоте/глубине океана. Точки данных, представленные в этом файле, составляют небольшую часть от общего количества, хранящегося в исходных файлах netcdf, но в файле все еще есть сотни тысяч точек. Каждое геологическое место, представленное в массиве, имеет 5 переменных (если использовать этот термин в исходном формате NETCDF, как я его понимаю)
[[широта,долгота,высота,TI_Code,segment_code], [[-85.00,-180.00,2331,0,20],[-85.00,-177.13,1034,0,20],[-85.00,-174.26,1966,0,20], ... ,[84.75,172.06,-3224,41,0],[84.75,174.79,-2867,11,0],[84.75,177.52,-2561,41,0]]
Я использовал несколько различных подходов, чтобы попытаться преобразовать этот файл в формат массива, который можно использовать для «поиска» высот местоположения внутри массива. Мне нужно будет найти точку местоположения в массиве, ближайшую к заданной длинной/широтной координате, и скопировать соответствующее значение высоты во второй массив. Насколько я понимаю, формат NETCDF был бы идеальным, поскольку я считаю, что включенная информация заголовка предназначена для выполнения задач такого типа. Мне неоднократно не удавалось прочитать значения массива строк в каком-либо другом формате, даже в формате файла NETCDF. Я считаю, что если я смогу прочитать значения из области ввода в NETCDF и построить необходимую информацию заголовка или, возможно, просто прочитать значения файла в 2D-массив Numpy, я, вероятно, смогу оттуда решить, как выполнить задачу. В проекте имеется второй массив данных, насчитывающий более 6000 точек интереса (городов), расположенных по всему земному шару. Этот второй массив также хранится в том же текстовом формате, что и массив 2d CVS []. Чтобы создать подробный файл STL с помощью openscad, мне нужно будет просмотреть каждое место в файле города. Координаты долготы и широты, указанные в файле города, будут использоваться для определения высоты ближайшей точки, включенной в файл данных высот. Соответствующее значение высоты будет скопировано в новую переменную/столбец в массиве города. Измененный массив городов должен быть сохранен в виде текстового файла в том же формате с добавлением дополнительного значения высоты для каждого местоположения города.
Некоторые или большая часть этого может быть не совсем понятна. Мне сложно кратко описать то, что я пытаюсь сделать.
В общей схеме этого проекта не имеет значения, занимает ли время обработки секунду или час. Мне просто нужен какой-то метод для включения высот каждого города в данные городского массива.
Буду очень благодарен за любые советы, подробную информацию о том, как мне к этому подойти.
Если вы зашли так далеко. Спасибо, что уделили время.
Моей последней попыткой было прочитать файл в переменную, а затем создать массив с использованием этой переменной. Я надеялся, что numpy.array сможет распознать формат CVS, [] и загрузить 2D-массив numpy. Он этого не делает. он загружает массив нулевого измерения
импортировать numpy как np file1 = open("topo_glb2.txt", "r+") print("Выход функции чтения: ") печать(file1.read()) lwarray= np.array(файл1) печать(lwarray.ndim) печать(lwarray.shape) печать (lwarray.dtype) печать (lwarray) выдает этот результат на консоли ... [84.75,161.15,-3490,41,0],[84.75,163.88,-3433,41,0],[84.75,166.61,-3370,41,0],[84.75,169.34,-3352,41,0 ],[84.75,172.06,-3224,41,0],[84.75,174.79,-2867,11,0],[84.75,177.52,-2561,41,0]] 0 () объект
Я новичок в программировании на Python, поэтому, пожалуйста, будьте терпеливы. Я пытаюсь создать проект 3D-принтера, который потребует от меня использования данных из нескольких больших файлов данных. Я буду использовать скрипт openscad для создания stl-файлов для 3D-печати глобуса с сильно увеличенным рельефным профилем на поверхности. Я извлек и объединил соответствующие данные из двух больших файлов данных netcdf4 GEBCO_2023.nc и GEBCO_2023_TID.nc. Я создал файлы ascii txt, содержащие информацию, которая потребуется openscad. Формат файла, который требуется для openscad, представляет собой массив CSV, в котором все данные хранятся в виде строковых чисел, с использованием [] для обозначения размеров в 2-мерных массивах.
Глобальный массив данных о высоте/глубине океана. Точки данных, представленные в этом файле, составляют небольшую часть от общего количества, хранящегося в исходных файлах netcdf, но в файле все еще есть сотни тысяч точек. Каждое геологическое место, представленное в массиве, имеет 5 переменных (если использовать этот термин в исходном формате NETCDF, как я его понимаю)
[[широта,долгота,высота,TI_Code,segment_code], [[-85.00,-180.00,2331,0,20],[-85.00,-177.13,1034,0,20],[-85.00,-174.26,1966,0,20], ... ,[84.75,172.06,-3224,41,0],[84.75,174.79,-2867,11,0],[84.75,177.52,-2561,41,0]]
Я использовал несколько различных подходов, чтобы попытаться преобразовать этот файл в формат массива, который можно использовать для «поиска» высот местоположения внутри массива. Мне нужно будет найти точку местоположения в массиве, ближайшую к заданной длинной/широтной координате, и скопировать соответствующее значение высоты во второй массив. Насколько я понимаю, формат NETCDF был бы идеальным, поскольку я считаю, что включенная информация заголовка предназначена для выполнения задач такого типа. Мне неоднократно не удавалось прочитать значения массива строк в каком-либо другом формате, даже в формате файла NETCDF. Я считаю, что если я смогу прочитать значения из области ввода в NETCDF и построить необходимую информацию заголовка или, возможно, просто прочитать значения файла в 2D-массив Numpy, я, вероятно, смогу оттуда решить, как выполнить задачу. В проекте имеется второй массив данных, насчитывающий более 6000 точек интереса (городов), расположенных по всему земному шару. Этот второй массив также хранится в том же текстовом формате, что и массив 2d CVS []. Чтобы создать подробный файл STL с помощью openscad, мне нужно будет просмотреть каждое место в файле города. Координаты долготы и широты, указанные в файле города, будут использоваться для определения высоты ближайшей точки, включенной в файл данных высот. Соответствующее значение высоты будет скопировано в новую переменную/столбец в массиве города. Измененный массив городов должен быть сохранен в виде текстового файла в том же формате с добавлением дополнительного значения высоты для каждого местоположения города.
Некоторые или большая часть этого может быть не совсем понятна. Мне сложно кратко описать то, что я пытаюсь сделать.
В общей схеме этого проекта не имеет значения, занимает ли время обработки секунду или час. Мне просто нужен какой-то метод для включения высот каждого города в данные городского массива.
Буду очень благодарен за любые советы, подробную информацию о том, как мне к этому подойти.
Если вы зашли так далеко. Спасибо, что уделили время.
Моей последней попыткой было прочитать файл в переменную, а затем создать массив с использованием этой переменной. Я надеялся, что numpy.array сможет распознать формат CVS, [] и загрузить 2D-массив numpy. Он этого не делает. он загружает массив нулевого измерения
импортировать numpy как np file1 = open("topo_glb2.txt", "r+") print("Выход функции чтения: ") печать(file1.read()) lwarray= np.array(файл1) печать(lwarray.ndim) печать(lwarray.shape) печать (lwarray.dtype) печать (lwarray) выдает этот результат на консоли ... [84.75,161.15,-3490,41,0],[84.75,163.88,-3433,41,0],[84.75,166.61,-3370,41,0],[84.75,169.34,-3352,41,0 ],[84.75,172.06,-3224,41,0],[84.75,174.79,-2867,11,0],[84.75,177.52,-2561,41,0]] 0 () объект
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение