Як вказати поля для експорту з 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.