Як вказати поля для експорту з QGIS?


9

Я використовую QGIS 2.0.1 і підключений до просторово включеної бази даних MS SQL Server (не ESRI). Я в змозі підключитися до шару і завантажувати його в свій TOC просто чудово. Я приховав ряд полів, не важливих для наочності.

Тепер я хочу експортувати ці дані в інший тип даних (для цього прикладу ми будемо використовувати shapefile). Коли я клацаю правою кнопкою миші на шарі, вибираю "Зберегти як" і визначаю вихідний файл, я отримую таку помилку:

Не вдалося експортувати у векторний файл. Помилка: непідтримуваний тип для поля GlobalID

Примітка 1 : Якщо в діалоговому вікні я встановіть прапорець "Пропустити створення атрибутів", файл форми створюється без помилок.

Примітка 2 : ArcGIS не має цієї проблеми, вона просто перетворює поле GUID у тип "TEXT".

Дивлячись на таблицю, одне із прихованих мною полів - це GUID типу SQL < унікальний ідентифікатор >, який, швидше за все, є винуватцем. Намагаючись вирішити це, я зробив поле «прихованим». Я би припустив, що оскільки поле було прихованим, 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"

до розділу "шар" діалогового вікна "Зберегти як" не виникла формафайлу лише з одним полем. Тож я не бачу, як я можу маніпулювати виведенням файлу, щоб показати лише декілька вибраних полів. Будь-яка допомога вдячна.


Якщо ogr2ogr може це зробити, QGIS може, адже це саме той інструмент, який працює у фоновому режимі. На жаль, у мене немає тестування SQL Server для тестування ...
— underdark

Правильно. Тому я спробував додати -sql "select <fields> from <table>"(виключаючи поле GlobalID з поля <fields>) до частини "Шару" діалогового вікна "Зберегти як", але все ж виникла та сама помилка. Я неправильно використовував цей блок коду, чи це помилка?
— RyanKDalton

ця відповідь пропонує -селект замість -sql gis.stackexchange.com/questions/30691/… ... Я думаю, що це йде в розділі джерела даних, а не в шар.
— underdark

Не пощастило мені з будь-якою з ваших пропозицій. Я також спробував кілька комбінацій параметрів -select & -sql у полях "Шару" та "Джерела даних" у "Параметрах створення OGR" :( Звичайно, я не можу бути перший з необхідністю експортувати підмножину полів ...
— RyanKDalton

Можливо, варто звернутися до розробників. може бути помилка.
— underdark

Відповіді:


1

Якщо це працює для вас в командному рядку з ogr2ogr, я думаю, що це найкраще рішення використовувати це. Ви можете написати простий файл bat, щоб створити файл форми з вашої бази даних MSSQL. Очевидно, ви не можете редагувати дані і таким чином зберігати на сервері.

QGIS має вікна джерел даних та шару введення, але це лише для параметрів -dsco та -lco ogr2ogr. Драйвер форм-файлу OGR не має корисних дисків чи lco для ваших потреб:

http://www.gdal.org/ogr2ogr.html

http://www.gdal.org/ogr/drv_shapefile.html

Крім того, слід створити плагін python, який запитує дані з сервера за допомогою команди SQL SELECT для ваших потреб. Це навіть дозволить редагувати дані.


Поки що це здається найбільш реальною ідеєю. Чи є спосіб безпосередньо зателефонувати в командний рядок ogr2ogr з інтерфейсу користувача QGIS, щоб передати власний синтаксис ogr2ogr?
— RyanKDalton

Не безпосередньо. Але ви можете викрасти термінал gdalwarp, щоб ввести там свою команду ogr2ogr. Ви отримуєте помилку, що шар не створений, але він все одно є у файловій системі. Не впевнений, що станеться, якщо файл вже існує, тому краще також додати і Overwrite. І краще використовувати повні назви шляхів для файлів.
— AndreJ

Або ви коли-небудь намагалися використовувати віртуальний файл GDAL VRT в якості посередника між MSSQL та QGIS?
— AndreJ

У мене немає, але чи не GDAL для роботи з растрами? Я працюю з точковим векторним шаром. Мені подобається ідея "віртуальної таблиці" як проміжного між собою. Чи не має QGIS 2 шар пам'яті, який ми могли б написати?
— RyanKDalton

1
Також є драйвер ogrvrt GDAL: gdal.org/ogr/drv_vrt.html . Але я думаю, що це краще поставити під інше питання.
— AndreJ

0

Я б запропонував вам перевірити таблицю атрибутів для шару в TOC та чи існує поле GlobalID. Увімкніть режим редагування, видаліть стовпець, який створює проблему під час експорту, і закрийте вікно. Потім збережіть як форм-файл або будь-який потрібний формат виводу. Я сподіваюся, що це допомагає.


1
Я не впевнений, чи вдалий вибір видалення поля в таблиці SQL Server. Він може все-таки знадобитися серверу.
— AndreJ

Я думаю, що видалення стовпця атрибутів з QGIS TOC Layer збереже оновлену структуру в буфері QGIS і дозволяє експортувати файл в інший формат. як тільки ви закінчите експорт, не зберігайте зміни в шарі (те, що ви видалили)
— Farhat Abbas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.