Python GDAL: ogr.open или driver.open?

10

Я использовал GDAL с python для манипулирования шейп-файлами. При открытии исходного файла я сначала устанавливаю драйвер в «ESRI Shapefile», прежде чем вызывать метод «Open» драйвера с требуемым шейп-файлом.

У меня не было проблем с этим; однако мне любопытно, в чем разница между методом экземпляра драйвера «Open» и функцией ogr «Open». Например, в чем разница между:

driver = ogr.GetDriverByName("ESRI Shapefile")
source = driver.Open(“O:\myshp.shp”,0)

а также

source = ogr.Open(“O:\myshp.shp”,0)

Есть ли конкретный сценарий, в котором вы бы использовали один над другим?

Али
источник
Дополнительный вопрос: кажется, driver = gdal.GetDriverByNameработает и gdal.Openработает, но driver.Openне работает. Разве нет эквивалента для растровых файлов? Я знаю, что GDAL и OGR изначально разрабатывались разными людьми, но эти несоответствия API и полное отсутствие документации действительно болезненны ...
Адам Стюарт,

Ответы:

11

Если вы укажете драйвер, OGR попытается открыть ваш файл только с указанным драйвером.

Если вы не укажете его, OGR попытается открыть ваш файл со всеми драйверами. Он будет перебирать все драйверы, пока не найдет драйвер, с помощью которого он сможет открыть ваш файл. Порядок, в котором он пытается их открыть, соответствует порядку, указанному в ogrinfo --formats.

Смотрите также этот вопрос: заставить OGR использовать определенный драйвер для формата ввода

ustroetz
источник