Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2018 18:24:22

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна подсказка!

Есть *.dat файл, в котором содержится заголовок и двоичные данные в формате:

 str:=inttostr(Map.xlen)+'|'+ //размер карты по ширине
      inttostr(Map.ylen)+'|'+            //размер карты по длине
      floattostr(Map.stepx)+'|'+      //масштаб карты по ширине
      floattostr(Map.stepy)+'|'+     //масштаб карты по длине
      inttostr(Map.startx)+'|'+        //начало данных на карте по ширине
      inttostr(Map.starty)+'|'+     //начало данных на карте по длине
      inttostr(Map.lastx)+'|'+      //конец данных на карте по ширине
      inttostr(Map.lasty)+'|'+      // конец данных на карте по длине
     inttostr(Map.width)+'|'+    //количество точек по ширине
      inttostr(Map.height)+'|'+//количество точек по длине
      floattostr(Map.level)+'|';//базовый уровень
    Writeln(F, str);
    str:=inttostr(len);
    Writeln(F, str);//длина заголовка
// Map contains single values
    for i:=Map.starty to Map.lasty do
    BlockWrite(FT, Map.zmatrix[i][Map.startx], Map.width, bytes);

Как правильно взять параметры из файла, чтоб построить на их основе 3д график?

Отредактировано RatiborMur (Апрель 22, 2018 19:30:39)

Прикреплённый файлы:
attachment 63417_2_28.03_39_39.dat (438,3 KБ)

Офлайн

#2 Апрель 16, 2018 12:58:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Нужна подсказка!

Считать 1 строку, методом строки split разделить ее на элементы, привести полученные строки к численному типу.
За подсказку сойдет?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Апрель 16, 2018 18:24:21

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна подсказка!

Да, спасибо. Как раз начал читать про этот метод. Это позволит заполнить настройки карты, а вот как вытащить все параметры отклонения по оси Z (Map.zmatrix), тоже для меня загадка.

Офлайн

#4 Апрель 17, 2018 00:03:39

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна подсказка!

Частично проверил, вроде получилось. Мб усложняю, но как могу. Всплыл косяк с переводом в Float, пришлось менять “,” на “.”, иначе ошибку выдавало.

 import re
inputfile = '58637-1-102.00_00_01.dat'
fn = open (inputfile,mode='r',encoding='latin_1')
for num, line in enumerate(fn):
    if num<1:
        s=line.split('|')
        print (s)
fn.close()
xlen=s[0]
ylen=s[1]
stepx=s[2]
stepy=s[3]
print(xlen)
print(ylen)
print(stepx)
print(stepy)
result = re.sub(r',', '.', stepx)
print(result)
print(int(xlen)+float(result))

Еще б, разобраться с отклонениями по оси Z и вроде можно строить карту поверхности.

Офлайн

#5 Апрель 17, 2018 06:51:56

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нужна подсказка!

RatiborMur
Всплыл косяк с переводом в Float
Я бы советовал сразу поменять разделитель в локали ОС на всех машинах где будет работать ПО а не городить огород с заменами.
Практически любое ПО для обработки данных требует точек как разделителей. автозамена запятых искажает данные, например как вы будете читать таблицу в которой разделители полей запятые?

Поэтому думаю в требованиях к исходным данным надо сразу сказать - запятые во float недопустимы. Их надо не допускать при экспорте данных а не убирать при импорте.



Отредактировано doza_and (Апрель 17, 2018 06:53:18)

Офлайн

#6 Апрель 22, 2018 12:59:40

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна подсказка!

Как я понимаю файл создан/заполнен был через Delphi, но в справочниках формат записи BlockWrite() , не соответствует немного данному:

 // Map contains single values
    for i:=Map.starty to Map.lasty do
         BlockWrite(FT, Map.zmatrix[i][Map.startx], bytes);
В полном тупике, как обработать массив этих байтов, чтоб выцепить значение отклонения по оси Z.

Отредактировано RatiborMur (Апрель 22, 2018 13:00:24)

Офлайн

#7 Апрель 22, 2018 13:34:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нужна подсказка!

RatiborMur
В полном тупике
Мы тоже. В ваших постах нет данных о формате записи в файл. Откуда нам знать что и в каком порядке там записано.

А почему вы из паскаля не записываете данные в нормальном общепринятом формате (hdf5, protobuf, json)?



Офлайн

#8 Апрель 22, 2018 13:43:01

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна подсказка!

Потому, что задание :

На языке python (для Windows) версии 3 и выше сделать обработку предлагаемого двоичного файла, в котором содержится заголовок и двоичные данные в формате, согласно приложению 1. Обработанные данные вывести средствами python на 3D график (surface chart). Данные содержат отклонения от горизонтали поверхности в мм (примеры значений: 0..100мм, обычно 7-25мм). В итоге должен получится скрипт Python в параметрах которому можно передать имя файла и он выведет график.

Приложение 1 - первый пост.
+ привязаны файлы, подобные файлу, прикрепленному так же в 1 посте.

Отредактировано RatiborMur (Апрель 22, 2018 13:45:00)

Офлайн

#9 Апрель 22, 2018 16:52:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нужна подсказка!

RatiborMur
Потому, что задание :
Знаем мы таких задавателей. Ничего не понимают а техническое задание берутся писать.
Формат входных данных не описан. Шлите задавателя думать над заданием.



Отредактировано doza_and (Апрель 22, 2018 16:52:40)

Офлайн

#10 Апрель 22, 2018 17:37:36

RatiborMur
Зарегистрирован: 2018-04-15
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна подсказка!

Рука лицо… А, вариант, что не могу я слать задавателей не рассматривали?!
+ в целом же принцип заполнение файла данными указан, первая строка сформирована из настроек карты, что я достал, а массив отклонения по оси Z заполнен функцией WriteBlock().
А, если даже чтот и требовать, то надо понимать что. Можете хотя бы линк на инфу подобную скинуть или любой похожий вариант, но с известным форматом данных?

Отредактировано RatiborMur (Апрель 22, 2018 17:42:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version