Я использовал 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 и полное отсутствие документации действительно болезненны ...Ответы:
Если вы укажете драйвер, OGR попытается открыть ваш файл только с указанным драйвером.
Если вы не укажете его, OGR попытается открыть ваш файл со всеми драйверами. Он будет перебирать все драйверы, пока не найдет драйвер, с помощью которого он сможет открыть ваш файл. Порядок, в котором он пытается их открыть, соответствует порядку, указанному в ogrinfo --formats.
Смотрите также этот вопрос: заставить OGR использовать определенный драйвер для формата ввода
источник