Изменение структуры DAT (DBF) файла

MapInfo, MapBasic
Ответить
rim
Интересующийся
Сообщения: 20
Зарегистрирован: 26 авг 2011, 16:51
Репутация: 0

Изменение структуры DAT (DBF) файла

Сообщение rim » 06 июн 2012, 17:31

Все привет. Не специалист по картам и географии, рабочая необходимость, подскажите, если можете.

Вопросы:
1) Как и чем можно безболезнено модифицировать структуру DAT файла?
2) Есть ли необходимость при этом как-то обновлять ID-файл?

Ситуация:
- Есть карта, которая представлена набором файлов с расширениями DAT, TAB, ID и MAP.
- Добавил новое поле в DAT-файл (для удобства фильтрации в MapServer), с помощью стороннего редактора DBF.
- MapServer отказался воспринимать модифицированную базу.
- Скачал Mapinfo 11, отредактировал таблицу в нем, та же самая проблема с MapServer, не может прочитать.

Кстати, Mapinfo вообще не знает такого расширения, как DAT, пришлось переименовывать в DBF, чтобы открыть. Посему дополнительный вопрос, эти DAT файлы генерятся/конвертируются отдельной утилитой какой-то, чтобы MapServer их понимал?

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Изменение структуры DAT (DBF) файла

Сообщение dab » 06 июн 2012, 17:39

Если стандартно всё выполнять, тогда
1. открываете в Мапинфо TAB(!) файл
2. в меню "Таблица" -> "Изменить" -> "Перестроить"
3. меняете поля таблицы

rim
Интересующийся
Сообщения: 20
Зарегистрирован: 26 авг 2011, 16:51
Репутация: 0

Re: Изменение структуры DAT (DBF) файла

Сообщение rim » 06 июн 2012, 18:28

Таким образом тоже делал. Все равно MapServer выдает "OGR error. Unsupported field type!". Добавил обычное сивольное поле.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Изменение структуры DAT (DBF) файла

Сообщение Boris » 13 июн 2012, 01:43

MapInfo DAT file = DBF III (номер версии файлов DBF). DBF III содержал ограниченное количество встроенных типов данных, и их меньше, чем знает MapInfo. Все типы данных как поддерживаемые форматом DBF, так и не поддерживаемые, распознаются ТОЛЬКО через описание в таблице Mapinfo в файле TAB. По другому MapInfo и драйвера OGR эти поля не понимают. В принципе, зная любовь Мапинфо к прямым ссылкам, можно ожидать, что исправление DAT Файла нарушит целостность ссылок для файла ID.
Исправление файла DAT, как файла DBF, никакого корректного исправления файла не выполняет. Корректным является только исправление таблицы, загруженной через файл TAB.

rim
Интересующийся
Сообщения: 20
Зарегистрирован: 26 авг 2011, 16:51
Репутация: 0

Re: Изменение структуры DAT (DBF) файла

Сообщение rim » 14 июн 2012, 21:17

Выше уже написал, все одно получается при правке набора полей даже через открытие TAB, сбивается формат. Возможно, версия Mapinfo здесь тоже влияет. Но честно говоря, меня это уже не волнует, переквалифицировал mapinfo в PostGIS. Ибо, насколько понял, возясь с фильтрами, при использовании DBF Mapserver выбирает из него все объекты, попадающие в BBOX, а потом уже фильтрует по дополнительным полям из фильтра. В итоге, роста производительности это не давало.

P.S. Спасибо за ответы, в любом случае.

Sibit
Активный участник
Сообщения: 216
Зарегистрирован: 21 окт 2009, 13:29
Репутация: 28
Откуда: Новосибирск

Re: Изменение структуры DAT (DBF) файла

Сообщение Sibit » 15 июн 2012, 12:13

немного не понял в чем проблема.
Если надо поправить структуру - открываете tab файл и в Mapinfo Таблица/Изменить/Перестроить, можно сохранить таблицу как dBase dbf и править уже непосредственно dbf файл(если очень уж нужно). Но если менять структуру таблицы не в MapInfo, тогда не забывать исправлять и tab- файл(ну это уже для очень особенных случаев).

SergS
Активный участник
Сообщения: 120
Зарегистрирован: 14 апр 2011, 13:24
Репутация: 5
Откуда: Екатеринбург

Re: Изменение структуры DAT (DBF) файла

Сообщение SergS » 15 июн 2012, 13:59

Boris писал(а):MapInfo DAT file = DBF III (номер версии файлов DBF). DBF III содержал ограниченное количество встроенных типов данных, и их меньше, чем знает MapInfo. Все типы данных как поддерживаемые форматом DBF, так и не поддерживаемые, распознаются ТОЛЬКО через описание в таблице Mapinfo в файле TAB. По другому MapInfo и драйвера OGR эти поля не понимают. В принципе, зная любовь Мапинфо к прямым ссылкам, можно ожидать, что исправление DAT Файла нарушит целостность ссылок для файла ID.
Исправление файла DAT, как файла DBF, никакого корректного исправления файла не выполняет. Корректным является только исправление таблицы, загруженной через файл TAB.

это все вроде бы не совсем так. "MapInfo DAT file = DBF III" - касается только структуры файла. dbf имеет милую особенность хранить не сами данные, а их текстовое представление. а mapinfo в своем dat что пишет, то и хранит ( в том формате, который свойственен именно этому типу данных). т.е. для Integer всегда выделится 4 байта, для float - 8. и так и запишется в заголовок. Программы, читающие dbf, ждут встретить именно текстовое представление, но читая dat как dbf не находят, поэтому и возникают всякие крякозябры в лучшем случае, а в худшем -
rim писал(а):Unsupported field type!

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя