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

Системы координат, проекции, преобразования, привязка
Ответить
spawner
Активный участник
Сообщения: 103
Зарегистрирован: 09 окт 2009, 16:49
Репутация: 10

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

Сообщение spawner » 06 сен 2020, 20:07

Продолжаю мучать 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 тХитХЬтХитЦСтХитХЦтХитЦУтХитЦСтХитХЬтХит

gamm
Гуру
Сообщения: 4044
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1049
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 06 сен 2020, 20:14

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

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

spawner
Активный участник
Сообщения: 103
Зарегистрирован: 09 окт 2009, 16:49
Репутация: 10

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

Сообщение spawner » 06 сен 2020, 20:19

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

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

trir
Гуру
Сообщения: 5271
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

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

Сообщение trir » 06 сен 2020, 20:53

вы серьезно?
пф

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

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2227
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1500
Откуда: Казань

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

Сообщение Игорь Белов » 07 сен 2020, 09:54

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

Сказано же: используйте Linux для работы, а Windows для игр.
The purpose of computing is insight, not numbers

gamm
Гуру
Сообщения: 4044
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1049
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 07 сен 2020, 12:11

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

drrrrr
Участник
Сообщения: 85
Зарегистрирован: 31 янв 2012, 10:51
Репутация: 50

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

Сообщение drrrrr » 07 сен 2020, 14:57

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

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

spawner
Активный участник
Сообщения: 103
Зарегистрирован: 09 окт 2009, 16:49
Репутация: 10

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

Сообщение spawner » 08 сен 2020, 17:54

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

spawner
Активный участник
Сообщения: 103
Зарегистрирован: 09 окт 2009, 16:49
Репутация: 10

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

Сообщение spawner » 08 сен 2020, 19:13

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

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

spawner
Активный участник
Сообщения: 103
Зарегистрирован: 09 окт 2009, 16:49
Репутация: 10

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

Сообщение spawner » 08 сен 2020, 19:16

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

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2227
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1500
Откуда: Казань

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

Сообщение Игорь Белов » 08 сен 2020, 21:43

spawner писал(а):
08 сен 2020, 19:16
Вам не кажется, что вы слишком категоричны? Я так-то задал простой вопрос, а вы мне предложили перейти на линукс xD
Вы невнимательны. Во-первых, ответ был адресован не Вам, а предложившему править исходники. Во-вторых, с моей стороны не было предложения, только констатация факта.
The purpose of computing is insight, not numbers

Ответить

Вернуться в «Координаты и привязка»

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

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