Страница 1 из 1

GDAL и русские имена полей

Добавлено: 06 сен 2020, 20:07
spawner
Продолжаю мучать GDAL, возникла новая проблема:
есть Mapinfo файл с русскими именами полей, пытаюсь через sql сделать выборку по полю 'название' - ничего не работает, не понимаю, это вообще в GDAL возможно?

Выполняю такие команды :
SET OGR_FORCE_ASCII = NO
ogr2ogr xxx.shp xxx.tab -lco ENCODING=CP1251 -sql "select название from xxx"

Уже во всяких кодировках попробовал, ошибку выводит:
win1251:
ERROR 1: SQL Expression Parsing Error: syntax error, unexpected end of string. Occurred around :
select ╤Н╤А╤З╤В╤А╤Н╤И╤Е from xxx

UTF-8:
ERROR 1: SQL Expression Parsing Error: syntax error, unexpected end of string. Occurred around :
select тХитХЬтХитЦСтХитХЦтХитЦУтХитЦСтХитХЬтХит

Re: GDAL и русские имена полей

Добавлено: 06 сен 2020, 20:14
gamm
меня еще в 80-е годы прошлого века научили не использовать русских букв в именах полей, переменных и файлов. Это сэкономило много времени и сил :mrgreen:

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

Re: GDAL и русские имена полей

Добавлено: 06 сен 2020, 20:19
spawner
>меня еще в 80-е годы прошлого века научили не использовать русских букв
это все конечно замечательно, но 1) времени прошло много, я с такими проблемами года с 2000 не сталкивался, 2) не все умеют читать английский буквы

>у вас же есть исходники.
вы серьезно? :shock:

Re: GDAL и русские имена полей

Добавлено: 06 сен 2020, 20:53
trir
вы серьезно?
пф

загрузите всё в одну БД и не мучайтесь

Re: GDAL и русские имена полей

Добавлено: 07 сен 2020, 09:54
Игорь Белов
Сообщество затратило огромные усилия, чтобы перевести весь софт на Юникод. Практически весь опенсорсный софт, включая GDAL, прекрасно работает под UNIX и MacOS. Неужели кто-то думает, что можно добровольно полезть адаптировать программы обратно под пещерную ОС, существующую в сотнях или тысячах кодировок?

Сказано же: используйте Linux для работы, а Windows для игр.

Re: GDAL и русские имена полей

Добавлено: 07 сен 2020, 12:11
gamm
spawner писал(а): 06 сен 2020, 20:19вы серьезно?
абсолютно. Либо следуйте простым правилам, если хотите чтобы работало, либо правьте исходники.

Re: GDAL и русские имена полей

Добавлено: 07 сен 2020, 14:57
drrrrr
spawner, вот так у меня все работает:
ogr2ogr -f "MapInfo File" tmp.mif tmp.shp -sql "select ""номер"", ""адрес"" from tmp" -lco ENCODING=CP1251 -oo ENCODING=CP1251

т.е. явно задайте кодировку источника данных -oo ENCODING=CP1251 и в запросе экранируйте кириллические имена полей двойными кавычками.

Re: GDAL и русские имена полей

Добавлено: 08 сен 2020, 17:54
spawner
drrrrr писал(а): 07 сен 2020, 14:57spawner, вот так у меня все работает:
А у вас какая версия GDAL? Что-то в 3.1.2 не получается.

Re: GDAL и русские имена полей

Добавлено: 08 сен 2020, 19:13
spawner
Вообщем решил проблему:
1. использую не -sql, а -select "Название";
2. имя поля case-sensitive.

ogr2ogr xxx.shp xxx.tab -select "Название" -lco ENCODING=CP1251 -oo ENCODING=CP1251

Re: GDAL и русские имена полей

Добавлено: 08 сен 2020, 19:16
spawner
Игорь Белов писал(а): 07 сен 2020, 09:54Сказано же: используйте Linux для работы, а Windows для игр.
Вам не кажется, что вы слишком категоричны? Я так-то задал простой вопрос, а вы мне предложили перейти на линукс xD
gamm писал(а): 07 сен 2020, 12:11абсолютно. Либо следуйте простым правилам, если хотите чтобы работало, либо правьте исходники.
Пффф, ради того, чтобы сконвертировать таблички, вы предлагаете копаться в огромных исходниках. Не знаете ответа на вопрос - зачем писать всякую муть?

Re: GDAL и русские имена полей

Добавлено: 08 сен 2020, 21:43
Игорь Белов
spawner писал(а): 08 сен 2020, 19:16Вам не кажется, что вы слишком категоричны? Я так-то задал простой вопрос, а вы мне предложили перейти на линукс xD
Вы невнимательны. Во-первых, ответ был адресован не Вам, а предложившему править исходники. Во-вторых, с моей стороны не было предложения, только констатация факта.