На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Проблема при импорте из SXF файла в Gdal.

Поиск  Пользователи  Правила  Войти
Форум » Общие вопросы » Конвертация данных
Страницы: 1
RSS
Проблема при импорте из SXF файла в Gdal.
 
Добрый день. При экспорте карты в sxf в новых версиях Профессиональная ГИС "Карта 2011" (проверены версии 11.12.8 и 11.12.9), столкнулся с тем, что файл становится не возможно прочитать с помощью GDAL (1.11.2, 2.0.0). Ошибка: SXF. Data are not corresponde to the projection. При этом sxf созданный с помощью версии 11.12.6 открывается. В чем может быть проблема?
 
Цитата
Dmitry пишет:
Добрый день. При экспорте карты в sxf в новых версиях Профессиональная ГИС "Карта 2011" (проверены версии 11.12.8 и 11.12.9), столкнулся с тем, что файл становится не возможно прочитать с помощью GDAL (1.11.2, 2.0.0). Ошибка: SXF. Data are not corresponde to the projection. При этом sxf созданный с помощью версии 11.12.6 открывается. В чем может быть проблема?

Мы с такой ошибкой не сталкивались.
Просьба сообщить разработчикам библиотеки GDAL об ошибке и запросить причину, по которой она может выдаваться.
Или скачать исходные тексты библиотеки, найти место, где выдается сообщение и выслать нам текст.
Мы проанализируем и подскажем.

Или использовать библиотеки gislib с нашего сайта.
 
Проблема скорей всего в том, что изменился формат (вернее внесли некие правки), которые видимо и не читаются библиотекой GDAL!
См. на сайте, в разделе Документация - Векторный формат SXF. Cтруктура данных в двоичном виде 15.06.2015 272 Kb sxf4bin.pdf
?
 
Все правки не меняют расположение полей и их назначение.
Могут задействоваться резервные поля для расширения хранимых данных.
Если они не обрабатываются (например, код EPSG, гриф секретности), то эти данные не переносятся в приложение,
но ошибки не возникают.
 
Столкнулся с той же проблемой. Дело в том что версии панорамы >=11.12.8 добавляют "лишний" бит.(в моем файле sxf это была строка с адресом 1D0 строка выглядит так: a8 f4 14 03 68 a0 00 00 00 01 46 04 ff 05 00 00  9-ый бит "лишний"). я просто затер эти два нолика и все заработало. получается что все биты после выделенного сдвигаются и GDAL читает неправильные данные, и во флаг Flag of the correspondence to projection (1 bit) попадет 1 вместо 0. https://svn.osgeo.org/gdal/trunk/gdal/ogr/ogrsf_frmts/sxf/org_sxf_defs.h
Вопрос к разработчикам - Что это за бит?? и можно ли его убрать средствами панорамы (имеется ввиду в версиях 11.12.8 и старше)? например галочка какая новая появилась или опцию отключить в настройках??
 
По смещению 452 байта (400 на паспорт + 52 на дескриптор) записывается заголовок первого объекта.
Теоретически первая запись может быть и по другому смещению. Версия 11.12.8 до 25.06.15 записывала первый объект на один байт дальше. Ее в свое время исправили.

Заголовок первого объекта (GDAL):

Код
typedef struct{
    GUInt32 nID;                /* Identifier of the beginning of record (0x7FFF7FFF) */
    GUInt32 nFullLength;        /* The overall length of record (with the title) */
    GUInt32 nGeometryLength;    /* Length of certificate (in bytes) */
    GUInt32 nClassifyCode;      /* Classification code */
    GUInt16 anGroup[2];         /* 0 - group no, 1 - no in group */
    GByte   nRef[3];            /* Reference data */
    GByte   byPadding;
    GUInt32 nPointCount;        /* Point count */
    GUInt16 nSubObjectCount;    /* The sub object count */
    GUInt16 nPointCountSmall;   /* Point count in small geometries */
} SXFRecordHeader;


В ГИС Карта 2011:

Код
typedef struct SXFHEAD                         // ЗАГОЛОВОК ЗАПИСИ
{
          int         RecordLabel            ; // Идентификатор начала записи(0x7FFF7FFF)
          int         RecordLength           ; // Общая длина записи(с заголовком)
          int         MetricLength           ; // Длина метрики в байтах
 unsigned int         ClassificalCode        ; // Классификационный код
                                               // СОБСТВЕННЫЙ НОМЕР ОБЪЕКТА
 unsigned short int   MemberNumber           ; // Номер в группе
 unsigned short int   UnionNumber            ; // Номер группы

#ifdef NUMBERTURN                              // СПРАВОЧНЫЕ ДАННЫЕ
 unsigned short int   Reserv2             : 3; // Резерв
 unsigned short int   Multipolygon        : 1; // Признак мультиполигона        // 17/04/16
 unsigned short int   Local               : 4; // Характер локализации
 unsigned short int   ShowUp              : 1; // Отображать объект выше всех   // 03/03/14
 unsigned short int   ShowDown            : 1; // Отображать объект ниже всех   // 03/03/14
 unsigned short int   VerticalAlignment   : 1; // Признак выравнивания подобъектов по вертикали
 unsigned short int   Unicode             : 1; // Признак текста в UNICODE
 unsigned short int   Vector3D            : 1; // Наличие записи вектора привязки
 unsigned short int   MetricElementSize   : 1; // Размер элемента метрики
 unsigned short int   SemanticOccurrence  : 1; // Наличие семантики
 unsigned short int   Press               : 1; // Признак сжатия - только для графических объектов
#else
 unsigned short int   Local               : 4; // Характер локализации
 unsigned short int   Multipolygon        : 1; // Признак мультиполигона        // 17/04/16
 unsigned short int   Reserv2             : 3; // Резерв
 unsigned short int   Press               : 1; // Признак сжатия - только для графических объектов
 unsigned short int   SemanticOccurrence  : 1; // Наличие семантики
 unsigned short int   MetricElementSize   : 1; // Размер элемента метрики
 unsigned short int   Vector3D            : 1; // Наличие записи вектора привязки
 unsigned short int   Unicode             : 1; // Признак текста в UNICODE
 unsigned short int   VerticalAlignment   : 1; // Признак выравнивания подобъектов по вертикали
 unsigned short int   ShowDown            : 1; // Отображать объект ниже всех   // 03/03/14
 unsigned short int   ShowUp              : 1; // Отображать объект выше всех   // 03/03/14
#endif

#ifdef NUMBERTURN
 unsigned short int   Spline              : 2; // Тип сплайна (1-сглаживающий,
                                               // 2-огибающий)
 unsigned short int   Scale               : 1; // Признак масштабируемости
 unsigned short int   MetricWithDrawFlag  : 1; // Признак метрики с графическими описанием объекта
 unsigned short int   MetricWithTextFlag  : 1; // Признак метрики с текстом
 unsigned short int   MetricElementType   : 1; // Тип элемента метрики
 unsigned short int   NotationDimension   : 1; // Размерность представления
 unsigned short int   MetricRecordFormat  : 1; // Формат записи метрики
                                               // УРОВЕНЬ ГЕНЕРАЛИЗАЦИИ
 unsigned short int   Top                 : 4; // Верхняя граница видимости
 unsigned short int   Bot                 : 4; // Нижняя граница видимости
#else
 unsigned short int   MetricRecordFormat  : 1; // Формат записи метрики
 unsigned short int   NotationDimension   : 1; // Размерность представления
 unsigned short int   MetricElementType   : 1; // Тип элемента метрики
 unsigned short int   MetricWithTextFlag  : 1; // Признак метрики с текстом
 unsigned short int   MetricWithDrawFlag  : 1; // Признак метрики с графическими описанием объекта
 unsigned short int   Scale               : 1; // Признак масштабируемости
 unsigned short int   Spline              : 2; // Тип сплайна (1-сглаживающий,
                                               // 2-огибающий)
                                               // УРОВЕНЬ ГЕНЕРАЛИЗАЦИИ
 unsigned short int   Bot                 : 4; // Нижняя граница видимости
 unsigned short int   Top                 : 4; // Верхняя граница видимости
#endif    // NUMBERTURN
                                               // ОПИСАТЕЛЬ МЕТРИКИ
                int   BigPointCount          ; // Число точек для больших объектов
          short int   SubObjectCount         ; // Число подобъектов
 unsigned short int   PointMetricCount       ; // Число точек метрики (Если = 65535,
                                               // то число точек в поле BiGPointCount
}
  SXFHEAD;
 
проверил версии 11.12.6; 11.12.9; 11.12.11; 11.12.12; 11.13.3 - В них чтение SXF через GDAL работает, не работает лишь в 11.12.8
Изменено: Дмитрий Литвинов - 30.05.2016 22:12:29
 
Цитата
Дмитрий Литвинов написал:
проверил версии 11.12.6; 11.12.9; 11.12.11; 11.12.12; 11.13.3 - В них чтение SXF через GDAL работает,   не   работает лишь в 11.12.8
Точно так же как и у Дмитрия. Что подскажете сделать, так как у меня все немного шатнулось после брата. Очень нужна помощь. Или проще переустановить или же обновить.
 
Цитата
Viktor написал:
Цитата
 Дмитрий Литвинов  написал:
проверил версии 11.12.6; 11.12.9; 11.12.11; 11.12.12; 11.13.3 - В них чтение SXF через GDAL работает,   не   работает лишь в 11.12.8
Точно так же как и у Дмитрия. Что подскажете сделать, так как у меня все немного шатнулось после брата. Очень нужна помощь. Или проще переустановить или же обновить.
Предлагаем обновить версию программы до последней.
Раздел "Скачать":
http://www.gisinfo.ru/download/download.htm
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности