ogr2ogr и MITAB_BOUNDS_FILE

Ответить
Slinger
Гуру
Сообщения: 833
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 189
Откуда: Москва

ogr2ogr и MITAB_BOUNDS_FILE

Сообщение Slinger » 26 ноя 2019, 14:52

Приветствую.

Есть следующая проблема. Необходимо множество .tab файлов либо пересчитать, либо поменять баунды (в зависимости от задачи). Хотел воспользоваться для решения задачи огром.

Написал строчку для конвертирования единичного файла

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

ogr2ogr --config MITAB_BOUNDS_FILE d:\Simpletest\myproj.txt -f "MapInfo File" d:\Simpletest\test.tab d:\Simpletest\GZRO.TAB -lco ENCODING=CP1251
в файле конфига две строчки, как в мануале, но уже со своими СК

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

Source      = CoordSys Earth Projection 8, 1001, "m", 124.71666666666, 0, 1, 2300000, -5116586.44

Destination = CoordSys NonEarth Units "m" Bounds (0, 0) (20000000, 20000000)
Но ничего не происходит. Происходит формирование нового файла test.tab, но проекция и баунды остаются теми же. Соответственно у меня вопрос.

1) Что я делаю не так ? Нужно ли указывать дополнительные ключи s_srs и t_srs ? Если да, то что ?

2) Для чего внутри файла строка для sourse ? Ведь, как я понимаю, данный файл способен не только перевычислять, а назначать проекцию.

В общем, как заставить его работу и перевычислять ?

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение trir » 26 ноя 2019, 15:07

NonEarth :mrgreen:

попробуй просто

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

CoordSys NonEarth Units "m" Bounds (0, 0) (20000000, 20000000)
Starting with GDAL 2.0, it is possible to override those bounds through two mechanisms.

specify a user-defined file that contain projection definitions with bounds. The name of this file must be specified with the MITAB_BOUNDS_FILE configuration option. This allows users to override the default bounds for existing projections, and to define bounds for new projections not listed in the hard-coded table in the driver. The format of the file is a simple text file with one CoordSys string per line. The CoordSys lines should follow the MIF specs, and MUST include the optional Bounds definition at the end of the line, e.g.
https://gdal.org/drivers/vector/mitab.html

Slinger
Гуру
Сообщения: 833
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 189
Откуда: Москва

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение Slinger » 26 ноя 2019, 15:52

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

lam
Гуру
Сообщения: 757
Зарегистрирован: 01 авг 2012, 13:55
Репутация: 179

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение lam » 30 ноя 2019, 07:44

Используйте тогда MapInfo

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение Игорь Белов » 30 ноя 2019, 20:58

Давайте в очередной раз вспомним про MIF/MID.
  1. Создадим MIF/MID:

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

    ogr2ogr -f "MapInfo File" -dsco FORMAT=MIF -lco ENCODING=CP1251 layer.mif layer.TAB
  2. Заменим строку CoordSys.
  3. Создадим новый TAB:

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

    ogr2ogr -f "MapInfo File" -lco ENCODING=CP1251 layer_z.tab layer_z.mif
Вот шелл-скрипт для обработки всех TAB-файлов в папке:

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

#!/bin/sh
crs='CoordSys NonEarth Units "m" Bounds (0, 0) (20000000, 20000000)'
for f in *.TAB
do
    g=${f%.*}
    ogr2ogr -f "MapInfo File" -dsco FORMAT=MIF -lco ENCODING=CP1251 ${g}.mif ${f}
    awk -v crs="${crs}" '{
    	if ($1 == "CoordSys") {
	   print crs
	} else {
	   print $0
	}
    }' ${g}.mif > ${g}_z.mif
    cp ${g}.mid ${g}_z.mid
    ogr2ogr -f "MapInfo File" -lco ENCODING=CP1251 ${g}_z.tab ${g}_z.mif
done

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение trir » 01 дек 2019, 10:26

Используйте тогда MapInfo
там нет такого функционала

lam
Гуру
Сообщения: 757
Зарегистрирован: 01 авг 2012, 13:55
Репутация: 179

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение lam » 01 дек 2019, 13:58


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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение trir » 01 дек 2019, 16:16

это не штатный функционал

lam
Гуру
Сообщения: 757
Зарегистрирован: 01 авг 2012, 13:55
Репутация: 179

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение lam » 01 дек 2019, 21:48

Не штатный, зато бесплатный :D

Slinger
Гуру
Сообщения: 833
Зарегистрирован: 17 июн 2010, 23:14
Статьи: 2
Репутация: 189
Откуда: Москва

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение Slinger » 02 дек 2019, 10:55

lam, внутренние утилиты использовал, это само собой. Вопрос был именно в использовании сторонних утилит для получения "План-схемы", в рамках написания своих скриптов.

Игорь Белов, решает задачу, спасибо. Хоть и не таким методом, как хотелось бы. Потому как хотелось бы получить строку для огра, который потом можно было бы использовать в питоне в кугисе

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Сообщение Игорь Белов » 02 дек 2019, 12:42

Slinger писал(а):
02 дек 2019, 10:55
хотелось бы получить строку для огра, который потом можно было бы использовать в питоне в кугисе
Хм. В исходной формулировке о питоне в кугисе ни слова.
Впрочем, это неважно. Если не получается решить задачу через вызовы функций GDAL, можно сделать это запусками ogr2ogr:

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

ogr_opt = ['ogr2ogr', '-f', 'Mapinfo File', '-dsco', 'FORMAT=MIF', 'tmp1.mif', src]
call(ogr_opt)

Ответить

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

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

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