Экспорт SXF и проблема с кодировкой (encoding)
-
- Активный участник
- Сообщения: 175
- Зарегистрирован: 19 ноя 2012, 15:59
- Репутация: 6
Экспорт SXF и проблема с кодировкой (encoding)
Всех приветствую!
Пробую 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 уважением, Александр
Пробую 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 раз.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Экспорт SXF и проблема с кодировкой (encoding)
1. Неужели так трудно выложить пример MIF/MID, хотя бы 100 первых строк, что бы отвечающие не изобретали велосипед?
2. Если получен UTF-8, то что мешает его переводу в Win1251? Программ для этого есть в избытке, например канонический iconv. Или вы в SFX имеете символы принципиально не отображаемые в Win1251?
3. Что мешает переводу в SHP? Раз поставлено условие, что дальнейшая перекодировка может быть выполнена средствами MapInfo? При чтении формата SHP программа MapInfo позволяет использовать кодировку UTF-8
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.
-
- Активный участник
- Сообщения: 175
- Зарегистрирован: 19 ноя 2012, 15:59
- Репутация: 6
Re: Экспорт SXF и проблема с кодировкой (encoding)
Это точно UTF-8, потому что если открываешь в Notepad.exe, а потом предлагаешь сохранить, то Notepad.exe указывает что установлена кодировка "UTF-8" (для MID).Boris писал(а):1. Неужели так трудно выложить пример MIF/MID, хотя бы 100 первых строк, что бы отвечающие не изобретали велосипед?
2. Если получен UTF-8, то что мешает его переводу в Win1251? Программ для этого есть в избытке, например канонический iconv. Или вы в SFX имеете символы принципиально не отображаемые в Win1251?
Если мы открывает экспортируемый слой (после команды экспортировать все в формате 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 ;
Код: Выделить всё
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
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Экспорт SXF и проблема с кодировкой (encoding)
Вообще, полезно искать по форуму по интересующей теме. Посмотрите здесь, например.
Редактор материалов, модератор форума
-
- Активный участник
- Сообщения: 175
- Зарегистрирован: 19 ноя 2012, 15:59
- Репутация: 6
Re: Экспорт SXF и проблема с кодировкой (encoding)
Собственно искал и тему по Вашей ссылке видел (в стартовой теме не стал все темы найденные мною перечислять, только сказал что искал и одну из них сообщил). Некоторые из вариантов ключей 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
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Экспорт SXF и проблема с кодировкой (encoding)
Если бы вы выложили кусок данных в SXF для экспериментов (можно пару объектов с атрибутами), то вам можно было бы подсказать что-то. А в устном виде с данными работать сложно.
Редактор материалов, модератор форума
-
- Активный участник
- Сообщения: 175
- Зарегистрирован: 19 ноя 2012, 15:59
- Репутация: 6
Re: Экспорт SXF и проблема с кодировкой (encoding)
я по видимому мог бы сбросить SXF на файлобменник (и через личку всем желающим мог бы сообщить ссылку), и тогда задача была в том (по моему), чтобы привести вариант командной строки для экспорта, чтобы получились TAB'ы с encoding WIN-1251(экспортировать имеет смысл только все слои сразу, а я умею так только в директорию и в MapInfo TAB'ы, не в MIF).Александр Мурый писал(а):Если бы вы выложили кусок данных в SXF для экспериментов (можно пару объектов с атрибутами), то вам можно было бы подсказать что-то. А в устном виде с данными работать сложно.
Если кто то хочет или поэкспериментировать или помочь мне - я мог бы сбросить на файлообменник.
Но в принципе, пока решил не тратить на это время, а работать с UTF-8 -- это тоже подойдет.
Спасибо
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Экспорт SXF и проблема с кодировкой (encoding)
Работать с UTF-8 - правильное решение. Успехов!glax2020 писал(а): Но в принципе, пока решил не тратить на это время, а работать с UTF-8 -- это тоже подойдет.
Редактор материалов, модератор форума
-
- Активный участник
- Сообщения: 175
- Зарегистрирован: 19 ноя 2012, 15:59
- Репутация: 6
Re: Экспорт SXF и проблема с кодировкой (encoding)
Идея то хорошая, но пока меня беспокоит следующая гипотетическая ситуация:Александр Мурый писал(а):Работать с UTF-8 - правильное решение. Успехов!glax2020 писал(а): Но в принципе, пока решил не тратить на это время, а работать с 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....
Поэтому опасаюсь очень неприятной ситуации, но буду тестировать, может и обойдется...
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
Re: Экспорт SXF и проблема с кодировкой (encoding)
Если sxf, то CP866, к бабке не ходи!
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Экспорт SXF и проблема с кодировкой (encoding)
CP866 лично я там не заметил.Игорь Лебедь писал(а):Если sxf, то CP866, к бабке не ходи!
Вот порядок действий для получения TAB с Windows-1251 в атрибутах:
1) послойно конвертируем в MIF (ogr2ogr);
2) меняем кодировку MID-файла на CP1251 (чем угодно);
3) конвертируем MIF в TAB (ogr2ogr).
Всё читается в MapInfo.
Редактор материалов, модератор форума
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
Re: Экспорт SXF и проблема с кодировкой (encoding)
Так я-то и не видел sxf. Просто всегда работал с панорамовскими sxf в кодировке CP866. Хотя, возможно, зависит от версии и от настроек экспорта. В 10-й, кажется, были опции Win1251, UTF-8, и "как получится" . Вот это видимо последний вариант. Вообще конечно было бы неплохо автору сделать "файл в студию!". И если я правильно понял, основной вопрос и был про кодировку sxf?
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Экспорт SXF и проблема с кодировкой (encoding)
Не знаю как сейчас, но раньше ogr назначал границы карты -180 градусов/+180 градусов или +- 10 миллионов, не смотря на границы в MIFе. Через mapInfo все же надежнее было.Александр Мурый писал(а): 3) конвертируем MIF в TAB (ogr2ogr).
Всё читается в MapInfo.
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
Re: Экспорт SXF и проблема с кодировкой (encoding)
Похоже, не имеет значения, какая кодировка ни у 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, но конечно если оно того стоит.
Всё ущербно в этом мире...
В итоге решение Александра, получается, лучшее. К тому же проверка "на дурака" (просто открыть файл sxf в QGIS) выдала в свойствах слоёв UTF-8, причём без варианта смены кодировки, как для шейпа, так что видимо панорамовцы проапгрейдили создание sxf до UTF-8.
*
Перевод в shp - это конечно вариант, сам так делал, с тем минусом, что обрежутся длинные названия полей до 10 символов и если есть длинный текст в атрибутах, обстрижётся до 255, тут я бы предложил уж более гибкие постгресы/SQLite, но конечно если оно того стоит.
Всё ущербно в этом мире...
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Экспорт SXF и проблема с кодировкой (encoding)
Так ведь ест geoCSV c WKT - все в одном и предельно наглядно. А дальше уже можно как угодно и куда угодно. И проверить кодировку надо 1 раз на версию GDAL.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 30 гостей