Экспорт SXF и проблема с кодировкой (encoding)

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

Экспорт SXF и проблема с кодировкой (encoding)

Сообщение glax2020 » 17 апр 2016, 23:55

Всех приветствую!

Пробую SXF экспортировать в формат MapInfo в кодировке Windows (меня в принципе и другая кодировка бы устроила, если бы можно было потом с помощью MapInfo переэкспортировать в Windows кодировку).

Не получается -- сканирую интернет и найти корректный ключ для подобной кодировки не получается ( например в этой теме не смог найти http://gis-lab.info/qa/ogr2ogr-examples.html ).

Пробую команды типа:

ogr2ogr -lco encoding=win-1251 -t_srs EPSG:4326 -f "MapInfo File" ctrl_test4326.mid "Q-58-07,08.sxf" LAYER1

Вместо "-lco encoding=win-1251" пробовал также "1251", "CP1251". Также добавлял предварительно установку "SET GDAL_FILENAME_IS_UTF8=OFF".

Положительного (да и вообще каких то изменений в кодировке выходного MIF файла) - не получилось достичь (похоже выводится в UTF-8, но точно не в win-1251).

Может кто то подскажет, как правильно использовать команду ogr2ogr для SXF, чтобы при экспорте MIF (и TAB тоже устроит) получить с Windows кодировкой?

Для GDAL использовал версию демонстрационного "NextGIS_QGIS", которую сегодня скачал (32 Windows 7).

Спасибо

C уважением, Александр
Последний раз редактировалось glax2020 05 май 2016, 10:24, всего редактировалось 1 раз.

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Boris » 18 апр 2016, 04:51

1. Неужели так трудно выложить пример MIF/MID, хотя бы 100 первых строк, что бы отвечающие не изобретали велосипед?
2. Если получен UTF-8, то что мешает его переводу в Win1251? Программ для этого есть в избытке, например канонический iconv. Или вы в SFX имеете символы принципиально не отображаемые в Win1251?
3. Что мешает переводу в SHP? Раз поставлено условие, что дальнейшая перекодировка может быть выполнена средствами MapInfo? При чтении формата SHP программа MapInfo позволяет использовать кодировку UTF-8
Opening DBF and Shape Files Created with UTF-8 Encoding
MapInfo Professional includes read-only support for DBF files with data stored in UTF-8 encoding. Many Data vendors distribute data in Shapefile format which include DBF files. The attribute data may be in a UTF-8 character set.

Prior to MapInfo Professional 10.0, there was no easy way to access DBF files created with UTF-8 encoding.

To open a DBF or Shape file with UTF-8 encoding:

From the File menu, click Open. The Open dialog displays.
From the Files of type list, select dBASE DBF (*.dbf) or Shape as appropriate
From the Look in list, select the location of the file to open.
Click Open. An information dialog displays.
From the File Character Set list, select UTF-8.
Click OK.
The file opens in a browser or map window, and is marked as read-only.

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение glax2020 » 18 апр 2016, 11:32

Boris писал(а):1. Неужели так трудно выложить пример MIF/MID, хотя бы 100 первых строк, что бы отвечающие не изобретали велосипед?
2. Если получен UTF-8, то что мешает его переводу в Win1251? Программ для этого есть в избытке, например канонический iconv. Или вы в SFX имеете символы принципиально не отображаемые в Win1251?
Это точно UTF-8, потому что если открываешь в Notepad.exe, а потом предлагаешь сохранить, то Notepad.exe указывает что установлена кодировка "UTF-8" (для MID).

Если мы открывает экспортируемый слой (после команды экспортировать все в формате TAB "ogr2ogr -t_srs EPSG:4326 -f "MapInfo File" outdir "Q-58-07,08.sxf", где "outdir" - наименование директории) в МарInfo, то текст в значениях полей не читается, типа "ЛЕСА ГУСТЫЕ ВЫСОК", но при экспорте из MapInfo в MIF, снова получается MID в кодировке "UTF-8".

1) Основная проблема - не знаю как определить в какой кодировке таблица TAB в MapInfo. Из структуры таблицы кажется это не следует.

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

!table
!version 300
!charset Neutral

Definition Table
  Type NATIVE Charset "Neutral"
  Fields 13
    ogc_fid Integer ;
    CLCODE Integer (10) ;
    CLNAME Char (32) ;
    OBJECTNUMB Integer (10) ;
    ANGLE Float ;
    TEXT Char (254) ;
    SC_92 Char (254) ;
    SC_94 Char (254) ;
    SC_143 Char (254) ;
    SC_95 Char (254) ;
    SC_96 Char (254) ;
    SC_79 Float ;
    SC_91 Float ;

При экспорте из MapInfo вообще пишет "WindowsCyrillic" (а ведь это "UTF-8" для MID, и действительно "WindowsCyrillic" для MIF -- может я с MapInfo и "UTF-8" и как точно определить кодировку еще разберусь, но пока не разобрался)???

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

Version   300
Charset "WindowsCyrillic"
Delimiter ","
CoordSys Earth Projection 1, 104
Columns 13
  ogc_fid Integer
  CLCODE Integer
  CLNAME Char(32)
  OBJECTNUMB Integer
  ANGLE Float
  TEXT Char(254)
  SC_92 Char(254)
  SC_94 Char(254)
  SC_143 Char(254)
  SC_95 Char(254)
  SC_96 Char(254)
  SC_79 Float
  SC_91 Float


Получается имею серьезную проблему, что в экспорте после GDAL не могу понять, то ли получил "UTF-8", то ли что то другое. Я могу волевым решением, считать, что это "UTF-8", но хотелось, бы иметь четкий идентификатор параметра в процедуре "ogr2ogr" чтобы когда-нибудь не получить, что то иное.

То есть хотел бы четко разобраться с encoding при использовании "ogr2ogr" для SXF.

Но что касается encoding предпочел бы Win-1251, хотя конечно это не принципиально (на C# это две строчки кода, чтобы из файл в кодировке "UTF-8" конвертировать в кодировку "Win-1251").

То есть принципиальный вопрос: как получить хотя бы какую кодировку, но однозначно определенную с помощью параметров процедуры "ogr2ogr"? Желательно "Win-1251", но это все таки не принципиально.

Спасибо

p.s. В принципе, конечно подобную установку можно внести как параметр в мою программу (просто при каждом новом "GDAL" проводить простенький тест. Это не проблема :)

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Александр Мурый » 18 апр 2016, 15:12

Вообще, полезно искать по форуму по интересующей теме. Посмотрите здесь, например.
Редактор материалов, модератор форума

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение glax2020 » 18 апр 2016, 15:43

Александр Мурый писал(а):Вообще, полезно искать по форуму по интересующей теме. Посмотрите здесь, например.
Собственно искал и тему по Вашей ссылке видел (в стартовой теме не стал все темы найденные мною перечислять, только сказал что искал и одну из них сообщил). Некоторые из вариантов ключей encoding почерпнул в той теме, и все варианты из той темы у меня в качестве вариантов вроде приведены, например "CP1251".

Но это мне не помогло и в той теме товарищ после команды "ogr2ogr -f "Mapinfo File" 1\arc\popnt.mif 1\arc\popnt.shp -lco encoding=1251" пишет что получил "нечитаемую кодировку",

собственно и мне получить экспорт в encoding win-1251 не удалось и как это возможно реализовать - не знаю.

Буду приспосабливаться работать с encoding UTF - 8, хоть это и не так удобно, но в принципе это не очень важно.

Все равно, спасибо

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Александр Мурый » 18 апр 2016, 15:48

Если бы вы выложили кусок данных в SXF для экспериментов (можно пару объектов с атрибутами), то вам можно было бы подсказать что-то. А в устном виде с данными работать сложно.
Редактор материалов, модератор форума

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение glax2020 » 18 апр 2016, 16:19

Александр Мурый писал(а):Если бы вы выложили кусок данных в SXF для экспериментов (можно пару объектов с атрибутами), то вам можно было бы подсказать что-то. А в устном виде с данными работать сложно.
я по видимому мог бы сбросить SXF на файлобменник (и через личку всем желающим мог бы сообщить ссылку), и тогда задача была в том (по моему), чтобы привести вариант командной строки для экспорта, чтобы получились TAB'ы с encoding WIN-1251(экспортировать имеет смысл только все слои сразу, а я умею так только в директорию и в MapInfo TAB'ы, не в MIF).

Если кто то хочет или поэкспериментировать или помочь мне - я мог бы сбросить на файлообменник.

Но в принципе, пока решил не тратить на это время, а работать с UTF-8 -- это тоже подойдет.

Спасибо

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Александр Мурый » 18 апр 2016, 16:25

glax2020 писал(а): Но в принципе, пока решил не тратить на это время, а работать с UTF-8 -- это тоже подойдет.
Работать с UTF-8 - правильное решение. Успехов!
Редактор материалов, модератор форума

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение glax2020 » 18 апр 2016, 17:54

Александр Мурый писал(а):
glax2020 писал(а): Но в принципе, пока решил не тратить на это время, а работать с UTF-8 -- это тоже подойдет.
Работать с UTF-8 - правильное решение. Успехов!
Идея то хорошая, но пока меня беспокоит следующая гипотетическая ситуация:

Предположим, в таблице атрибутов MID нет кириллицы, и я опасаюсь ситуации, что при экспорте в MID из MapInfo уже будет кодировка НЕ UTF-8, а Win-1251 -- и тогда если я буду в этом случае предположим пользоваться стандартными операторами С# типа " System.IO.File.ReadAllText(***, Encoding.UTF8)" и "System.IO.File.WriteAllText(***, ***, Encoding.GetEncoding(1251))" -- опасаюсь в этом случае получить чушь... У меня такие опасения, так как encoding MIF и MID - разный! И могу предполагать, если бы были текстовые объекты в MIF, то и MIF мог бы быть тоже UTF-8....

Поэтому опасаюсь очень неприятной ситуации, но буду тестировать, может и обойдется...

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 443
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 98
Откуда: Город в клёнах и акациях

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Игорь Лебедь » 21 апр 2016, 14:46

Если sxf, то CP866, к бабке не ходи!

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 786
Ваше звание: званий не имею
Откуда: Москва

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Александр Мурый » 21 апр 2016, 16:39

Игорь Лебедь писал(а):Если sxf, то CP866, к бабке не ходи!
CP866 лично я там не заметил.

Вот порядок действий для получения TAB с Windows-1251 в атрибутах:
1) послойно конвертируем в MIF (ogr2ogr);
2) меняем кодировку MID-файла на CP1251 (чем угодно);
3) конвертируем MIF в TAB (ogr2ogr).
Всё читается в MapInfo.
Редактор материалов, модератор форума

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 443
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 98
Откуда: Город в клёнах и акациях

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Игорь Лебедь » 21 апр 2016, 17:46

Так я-то и не видел sxf. Просто всегда работал с панорамовскими sxf в кодировке CP866. Хотя, возможно, зависит от версии и от настроек экспорта. В 10-й, кажется, были опции Win1251, UTF-8, и "как получится" :). Вот это видимо последний вариант. Вообще конечно было бы неплохо автору сделать "файл в студию!". И если я правильно понял, основной вопрос и был про кодировку sxf?

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Boris » 22 апр 2016, 01:21

Александр Мурый писал(а): 3) конвертируем MIF в TAB (ogr2ogr).
Всё читается в MapInfo.
Не знаю как сейчас, но раньше ogr назначал границы карты -180 градусов/+180 градусов или +- 10 миллионов, не смотря на границы в MIFе. Через mapInfo все же надежнее было.

Аватара пользователя
Игорь Лебедь
Завсегдатай
Сообщения: 443
Зарегистрирован: 24 апр 2010, 19:47
Репутация: 98
Откуда: Город в клёнах и акациях

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Игорь Лебедь » 22 апр 2016, 10:50

Похоже, не имеет значения, какая кодировка ни у sxf, ни какую надо mif-у, так как ogr2ogr назначает мифу UTF-8 (если я правильно понимаю, "свою" гдаловскую по умолчанию), так как при процессинге огр пишет, что layer creation options не поддерживается ни для миф, ни для таб). И поэтому даже опция SXF_ENCODING=CP866 или SXF_ENCODING=UTF-8, в корректности которой я несколько сомневаюсь, вряд ли возымеет действие. Я конечно видел людей, которые забивают саморезы как гвозди, но это на любителя.
В итоге решение Александра, получается, лучшее. К тому же проверка "на дурака" (просто открыть файл sxf в QGIS) выдала в свойствах слоёв UTF-8, причём без варианта смены кодировки, как для шейпа, так что видимо панорамовцы проапгрейдили создание sxf до UTF-8.
*
Перевод в shp - это конечно вариант, сам так делал, с тем минусом, что обрежутся длинные названия полей до 10 символов и если есть длинный текст в атрибутах, обстрижётся до 255, тут я бы предложил уж более гибкие постгресы/SQLite, но конечно если оно того стоит.
Всё ущербно в этом мире...

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

Re: Экспорт SXF и проблема с кодировкой (encoding)

Сообщение Boris » 22 апр 2016, 23:36

Так ведь ест geoCSV c WKT - все в одном и предельно наглядно. А дальше уже можно как угодно и куда угодно. И проверить кодировку надо 1 раз на версию GDAL.

Ответить

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

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

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