Я использую QGIS 2.0.1 и подключен к пространственно включенной базе данных MS SQL Server (не ESRI). Я могу подключиться к слою и загрузить его в свой TOC просто отлично. Я спрятал ряд полей, которые не важны для видимости.
Теперь я хочу экспортировать эти данные в другой тип данных (для этого примера мы будем использовать шейп-файл). Когда я щелкаю правой кнопкой мыши по слою, выбираю «Сохранить как» и определяю выходной файл, я получаю следующую ошибку:
Экспорт в векторный файл не удался. Ошибка: неподдерживаемый тип для поля GlobalID
Примечание 1 : Если я отмечу «Пропустить создание атрибута» в диалоговом окне, шейп-файл будет создан без ошибок.
Примечание 2 : ArcGIS не имеет этой проблемы, он просто преобразует поле GUID в тип «TEXT».
Глядя на таблицу, одним из полей, которые я скрыл, является GUID типа SQL < uniqueidentifier >, который, по всей вероятности, является виновником. В попытке решить эту проблему я сделал поле «скрытым». Я предположил бы, что, поскольку поле было скрыто, QGIS не будет пытаться экспортировать это поле, но это оказалось не так.
Можете ли вы определить поля, которые вы хотите экспортировать из QGIS?
Может ли QGIS экспортировать только поля «Видимые»? Или есть другой альтернативный способ сделать это из QGIS (возможно, определить поля с помощью запроса ogr2ogr)? Это кажется недостатком QGIS, если я не могу определить, какие поля экспортировать.
ОБНОВЛЕНИЕ: я сделал тест, используя образец шейп-файла, чтобы увидеть, могу ли я ограничить поля вывода. Следующая командная строка ogr2ogr сработала и удалила все поля, кроме «name»:
ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city"
но используя QGIS и добавив:
-sql "select name from city"
чтобы раздел «слой» диалогового окна «Сохранить как» не приводил к шейп-файлу только с одним полем. Так что я не вижу, как я могу манипулировать выводом файла, чтобы показать только несколько выбранных полей. Любая помощь приветствуется.
источник
-sql "select <fields> from <table>"
(исключая поле GlobalID из <fields>) в раздел «Слой» диалогового окна «Сохранить как», но та же ошибка все еще появлялась. Я неправильно использовал этот блок кода или это ошибка?Ответы:
Если это работает для вас в командной строке с ogr2ogr, я думаю, что это лучшее решение, чтобы использовать это. Вы можете написать простой bat-файл для создания шейп-файла из базы данных MSSQL. Очевидно, что вы не можете редактировать данные и сохранять обратно на сервер таким образом.
В QGIS есть поля ввода Источник данных и Уровень, но они предназначены только для параметров -dsco и -lco в ogr2ogr. Драйвер шейп-файла OGR не имеет никакой полезной версии dsco или lco для ваших нужд:
http://www.gdal.org/ogr2ogr.html
http://www.gdal.org/ogr/drv_shapefile.html
Кроме того, можно написать плагин Python, который запрашивает данные с сервера с помощью команды SQL SELECT для ваших нужд. Это даже позволило бы редактировать данные.
источник
Я бы посоветовал вам проверить таблицу атрибутов для слоя в оглавлении и если поле GlobalID существует. Переключитесь в режим редактирования, удалите столбец, который создает проблему при экспорте, и закройте окно. Затем сохраните как шейп-файл или любой другой формат вывода, который вы хотите. Надеюсь, это поможет.
источник