GDAL, SXF и семантика

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

GDAL, SXF и семантика

Сообщение glax2020 » 13 окт 2014, 19:23

Добрый день.

Возникли проблемы во время написания конвертера из SXF в формат MapInfo. Может кто нибудь сможет проконсультировать или посоветовать что либо, буду очень благодарен.

Сравниваю то, что умеет делать мой конвертер на базе GDAL (SXF Translator, Definition of classes for OGR SXF Datasource; версия от 2014 февраль) в сравнение с экспортом из ГИС Панорама. Для примера взял Тверскую область (O-36-070.sxf) и классификатор "100t05g.rsc". Возьму для примера Layer 12_A (НП_КВАРТАЛЫ).

Проблемы следующие:

1) Панорама экспортирует таблицу с ясными названиями колонок и значений (например: "Плотность застройки": "плотно застроенные"), у меня получаются названия колонок типа как: SC_40, SC_45, SC_243. А значения для SC_45: 1, 2, 3 (привел 3 варианта значений) -- то есть у Панорамы получаются колонки с ясными названиями и значениями, а у меня только некие коды которые я не умею интерпретировать корректно.

2) Могу видеть что Панорама извлекла 6 колонок со значениями кроме базовых:

LayerName Char (32) ;
LayerNumber Integer ;
ObjectName Char (32) ;
ObjectCode Char (32) ;
ObjectNumber Integer ;
ObjectLocal Char (32) ;
ObjectKey Char (32) ;
СОБСТВЕН_НАЗВАН Char (254) ;
ОТН_ВЫСОТА Decimal (18, 1) ;
СОСТОЯНИЕ Char (32) ;
ПЛОТНОСТЬ_ЗАСТРОЙКИ Char (32) ;
НАЗНАЧЕНИЕ_ОБЪЕКТА Char (254) ;
ТИП_ДОРОГ Char (32) ;
ПРИНАДЛЕЖН_НП Char (32) ;


Моя же программа извлекла 3 колонки кроме базовых:

ogc_fid Integer ;
CLCODE Integer (10) ;
CLNAME Char (32) ;
OBJECTNUMB Integer (10) ;
TEXT Char (254) ;
SC_45 Float ;
SC_243 Float ;
SC_40 Float ;


Здесь две проблемы:

а) Панорама извлекает больше колонок со значениями
б) У Панорамы есть колонки с измерениями (ОТН_ВЫСОТА), а у меня только семантические коды.

3) Панорама извлекает корректный код объекта "ObjectKey" (к примеру, "S0043300000"), который однозначно позволяет классифицировать объект. Моя программа умеет извлекать только поле аналогичное "ObjectCode" ( к примеру "45 160 000"), которое не позволяет однозначно классифицировать объект.

Перечислил возникшие проблемы. И я изучал код относящийся к формату SXF в GDAL source (2014 февраль, и сейчас сравнил с текущей версией - принципиальных критических различий не заметил ) и мне показалось, что желаемой мне информации пока еще не присутствует в GDAL SXF source -- но весьма вероятно, что я в чем то просто не разобрался.

Может кто нибудь из Вас мне в этом сможет помочь и посоветовать, в каком направлении двигаться или на что обратить внимание, чтобы разрешить указанные мною проблемы ( без них, конечно, мой конвертер бесполезен на практике... :( ).

Спасибо

С уважением, Александр

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: GDAL, SXF и семантика

Сообщение Дмитрий Барышников » 13 окт 2014, 23:08

1) Такие названия сделаны намеренно, потому как я слабо представляю как написать sql запрос (а GDAL это позволяет) с полем которое называется "Плотность застройки". Кроме того, не все пользователи из России и с таким названием поля в другой локали пользователи просто увидят ?????? ?????
Поэтому, вопрос извлечения названий из rsc отдан на откуп разработчику - т.е. вам. Берите документацию, которая приведена на странице драйвера и разбирайтесь. В GDAL пока поддержки алиасов для полей нет.
2) У вас очень старый GDAL- как вы написали (версия от 2014 февраль). Там был ряд существенных исправлений. Так что надо брать либо последний (1.11.1 - от сентября 2014) а еще лучше собрать из транка - там как раз есть фикс для SXF (http://trac.osgeo.org/gdal/ticket/5647)
3) Вот тут не понятно, для кодов создается дополнительное поле куда из классификатора пишутся значения если такие имеются. Сам код остален - опять же для ускорения выполнения SQL запросов - по цифровому полю это быстрее. Если есть пример, когда такого нет - надо смотреть на данные.
По поводу ObjectKey - надо опять смотреть данные.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: GDAL, SXF и семантика

Сообщение glax2020 » 14 окт 2014, 09:12

Большое спасибо. Будем разбираться

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: GDAL, SXF и семантика

Сообщение Максим Дубинин » 14 окт 2014, 21:13

а если внутри юникод, то почему должны возникнуть проблемы с sql запросом с полем названным кириллицей?
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: GDAL, SXF и семантика

Сообщение Дмитрий Барышников » 15 окт 2014, 10:29

Я и не писал, что будут проблемы с запросом. Проблемы будут с его составлением - попробуйте написать что-то на корейском или испанском - на клаве клавиш нет, в системе шрифтов и т.п. Аналогичная проблема была, когда пути потребовалось писать в UTF8 в консоли Windows (была большая тема по этому поводу).
Для обхода таких проблем - придумали псевдонимы (aliases) - хочешь на своем языке пиши, хочешь на английском.
При этом на имена полей накладываются ограничения, но при наличии псевдонима - это не существенно.
Ну осталось это в GDAL реализовать, чем не тема на следующий GSOC?

Я даже для вывода наименований слоев сделал отдельный ключ - для вывода кратких имен слоев в SXF - они преимущественно на английскои и длинных - на русском. И это дало результат - в рассылке и тикетах писали примеры запросов, когда что-то не работало в SXF (причем иностранцы). А если бы человеку вывелисб бы непонятные буковки, он бы и не репортил вовсе.

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

Re: GDAL, SXF и семантика

Сообщение Boris » 17 окт 2014, 23:31

Я подход, когда поле можно запросить по номеру N с фиксированным алиасом COLN, видел только в мапифно. В стандарте SQL найти такого очевидного подхода не смог, а как обстоят дела в других SQL-диалектах?

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: GDAL, SXF и семантика

Сообщение Дмитрий Барышников » 18 окт 2014, 17:05

Проблема не в стандарте SQL, GDAL вполне вероятно съест такой запрос, а в сложности отладки и написания таких запросов если поле в локали отличной от моей или английской.
Да, и самое интересное - в самом формате SXF нетимен полей (если я что-то пропустил - ткните носом)! Да, это есть в RSC но:
1. Он не является частью формата
2. Нет гарантии что он он не изменится без обратной совместимости
3. То что мы сейчас из него читаем название слоев и некоторых кодов атрибутов - это скорее бонус, чем требование формата. Да и без RSC записи будут раскиданы по слоям, стандартным для ОСМ.

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: GDAL, SXF и семантика

Сообщение glax2020 » 22 окт 2014, 18:08

Дмитрий Барышников писал(а): 3) Вот тут не понятно, для кодов создается дополнительное поле куда из классификатора пишутся значения если такие имеются. Сам код остален - опять же для ускорения выполнения SQL запросов - по цифровому полю это быстрее. Если есть пример, когда такого нет - надо смотреть на данные.
По поводу ObjectKey - надо опять смотреть данные.
Добрый день, Дмитрий!

Поясню проблему, которую не удается разрешить (причем я пересобрал GDAL и свою программу, взял последнюю стабильную версию, и внес fix, который посоветовали).

Итак, на примере. Работаю со слоем 16 (DIKEEXCAVATION_L, НАСЫПИ, ВЫЕМКИ, ЭСТАКАДЫ, ЛЕСТНИЦЫ, линейный).

Панорама извлекает для O36-71 (Тверь) для слоя 16 (DIKEEXCAVATION_L), к примеру, следующие объекты:

Код: Выделить всё

НАСЫПИ НА УЛУЧ.ГР.ДОР.(2стлр.)  - ObjectKey = L00623500007, ObjectCode = 62350000
НАСЫПИ НА ШОССЕ (двусторонние) - ObjectKey =L00623500009, ObjectCode = 62350000
НАСЫПИ НА УСОВЕР.ШОССЕ(2стор.) - ObjectKey =L006235000010, ObjectCode = 62350000
А у меня проблема, что с помощью GDAL SXF не могу классифицировать подобные объекты, так как я имею пока только ObjectCode = 62350000, но не имею ObjectKey -- а ведь разница между типами "насыпи" очень важна...

В коде программы драйвера GDAL SXF, как мне кажется, отсутствует вычисление ObjectKey. Проблема в том, что мне не удается этот код написать самому:

Описание структуры:

Код: Выделить всё

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;
Казалось бы обязательно подобная информация должна находится в этой структуре записи -- но реально мне пока не удается найти нужную информацию для самостоятельной генерации ObjectKey:

nClassifyCode - ObjectCode

где искать эту информацию мне? Искал в "anGroup", "nRef", "nSubObjectCount" -- и пока без результата... :(

Надеюсь кто нибудь из Вас сможет мне подсказать или посоветовать. За это заранее премного благодарен.

С уважением, Глушко Александр
(ИБРАЭ РАН)

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: GDAL, SXF и семантика

Сообщение Дмитрий Барышников » 23 окт 2014, 09:10

1. Для начала надо смотреть спецификацию sxf. Ссылку я приводил выше. Есть ли там такая информация?
2. Вы можете привести порядок действий что бы увидеть code и key в той же Панорама мини? Скриншот тоже бы не помешал. Я посмотрю есть ли у имеющихся у меня карт такая информация. Просто из вашего текста мне не понятно как посмотреть оба кода.

[ Сообщение с мобильного устройства ]

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: GDAL, SXF и семантика

Сообщение Дмитрий Барышников » 23 окт 2014, 09:53

3. Не понятно о каком патче (fix) идет речь. Вообще что вы сделали? Я же написал, что все фиксы применены в транке.
4. Другие ошибки были исправлены в вашей новой сборке (количество полей и т.п.)?

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: GDAL, SXF и семантика

Сообщение glax2020 » 23 окт 2014, 12:05

Дмитрий Барышников писал(а):1. Для начала надо смотреть спецификацию sxf. Ссылку я приводил выше. Есть ли там такая информация?
2. Вы можете привести порядок действий что бы увидеть code и key в той же Панорама мини? Скриншот тоже бы не помешал. Я посмотрю есть ли у имеющихся у меня карт такая информация. Просто из вашего текста мне не понятно как посмотреть оба кода.

[ Сообщение с мобильного устройства ]
Добрый день!

1) Обратился к документации http://gistoolkit.ru/download/doc/sxf4bin.pdf

И там действительно есть вполне воспринимаемое для меня описание формата и теперь я явно вижу и понимаю ссылку на семантику для объекта -- буду вероятно сегодня / завтра пробовать с ней работать, надеюсь, что это то что надо.

2) Спасибо за предложение - я подумаю, как бы мог ответить на Ваше предложение - дело, в том, что в Институте другой сотрудник специалист по Панораме, а мне передает экспортные данные для моей работы и программы.

Большое спасибо!

glax2020
Активный участник
Сообщения: 175
Зарегистрирован: 19 ноя 2012, 15:59
Репутация: 6

Re: GDAL, SXF и семантика

Сообщение glax2020 » 23 окт 2014, 12:24

Дмитрий Барышников писал(а):3. Не понятно о каком патче (fix) идет речь. Вообще что вы сделали? Я же написал, что все фиксы применены в транке.
4. Другие ошибки были исправлены в вашей новой сборке (количество полей и т.п.)?
3. Fix взял по ссылке http://trac.osgeo.org/gdal/changeset/27686

А ссылку взял по Вашей ссылке: http://trac.osgeo.org/gdal/ticket/5647

Может я что то не понял, но я перенес правку из Fix ( http://trac.osgeo.org/gdal/changeset/27686 ) в код драйвера SXF ?

4. По поводу других ошибок -- планирую с ними заниматься по порядку: сейчас семантика для объекта (включая ObjectKey), потом семантика для полей слоев (здесь вероятно постараюсь разобраться и с количеством полей и их соответствием с Панорамой).

Большое спасибо. С уважением, Александр

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: GDAL, SXF и семантика

Сообщение Дмитрий Барышников » 23 окт 2014, 17:30

По п.3 - надо просто взять код из svn или у нас нас из репозитория на github и собрать. Версию ту что в транке - сейчас там 2.0 dev. Все патчи и фиксы там уже применены.

[ Сообщение с мобильного устройства ]

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: GDAL, SXF и семантика

Сообщение gimran » 23 окт 2014, 18:39

Простите за небольшой оффтоп: можно ли стили из Панорамы переконвертировать в кугис?
Ссори за оффтоп, просто вопрос отдельной темы не заслуживает.

[ Сообщение с мобильного устройства ]

Аватара пользователя
gimran
Гуру
Сообщения: 1902
Зарегистрирован: 07 июл 2010, 15:43
Репутация: 242
Откуда: Уфа

Re: GDAL, SXF и семантика

Сообщение gimran » 23 окт 2014, 18:40

Под стилями имел ввиду классификаторы.

[ Сообщение с мобильного устройства ]

Ответить

Вернуться в «GDAL/OGR»

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

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