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

ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 26 ноя 2019, 14:52
Slinger
Приветствую.

Есть следующая проблема. Необходимо множество .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 ? Ведь, как я понимаю, данный файл способен не только перевычислять, а назначать проекцию.

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 26 ноя 2019, 15:07
trir
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

Re: ogr2ogr и MITAB_BOUNDS_FILE

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 30 ноя 2019, 07:44
lam
Используйте тогда MapInfo

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

Re: ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 01 дек 2019, 10:26
trir
Используйте тогда MapInfo
там нет такого функционала

Re: ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 01 дек 2019, 13:58
lam

Re: ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 01 дек 2019, 16:16
trir
это не штатный функционал

Re: ogr2ogr и MITAB_BOUNDS_FILE

Добавлено: 01 дек 2019, 21:48
lam
Не штатный, зато бесплатный :D

Re: ogr2ogr и MITAB_BOUNDS_FILE

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

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

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)