Korzystam z QGIS 2.0.1 i jestem podłączony do bazy danych MS SQL Server z włączoną przestrzennie bazą danych (nie ESRI). Jestem w stanie połączyć się z warstwą i załadować ją do mojego spisu treści. Ukryłem kilka pól, które nie są ważne ze względu na widoczność.
Teraz chcę wyeksportować te dane do innego typu danych (w tym przykładzie użyjemy pliku shapefile). Po kliknięciu warstwy prawym przyciskiem myszy, wybierz „Zapisz jako” i zdefiniuj plik wyjściowy, pojawia się następujący błąd:
Eksport do pliku wektorowego nie powiódł się. Błąd: nieobsługiwany typ dla pola GlobalID
Uwaga 1 : Jeśli zaznaczę „Pomiń tworzenie atrybutów” w oknie dialogowym, plik kształtu jest tworzony bez błędów.
Uwaga 2 : ArcGIS nie ma tego problemu, po prostu konwertuje pole GUID na typ „TEKST”.
Patrząc na tabelę, jednym z pól, które ukryłem, jest identyfikator GUID typu SQL < unikalny identyfikator >, który najprawdopodobniej jest winowajcą. Próbując rozwiązać ten problem, uczyniłem pole „ukrytym”. Zakładałbym, że ponieważ pole było ukryte, QGIS nie będzie próbował eksportować tego pola, ale okazało się, że tak nie jest.
Czy potrafisz zdefiniować pola, które chcesz wyeksportować z QGIS?
Czy QGIS może eksportować tylko pola „Widoczne”? A może istnieje inny alternatywny sposób na wykonanie tego z QGIS (może zdefiniować pola za pomocą zapytania ogr2ogr)? Wydaje się to być wadą QGIS, jeśli nie mogę zdefiniować, które pola wyeksportować.
AKTUALIZACJA: Zrobiłem test, używając przykładowego pliku shapefile, aby sprawdzić, czy mogę ograniczyć pola wyjściowe. Następujący wiersz polecenia ogr2ogr zadziałał i wyeliminował wszystkie pola oprócz „name”:
ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city"
ale używając QGIS i dodając:
-sql "select name from city"
do sekcji „warstwa” okna dialogowego „Zapisz jako” nie spowodowało utworzenia pliku kształtu tylko z jednym polem. Więc tak naprawdę nie widzę, jak mogę manipulować danymi wyjściowymi pliku, aby wyświetlić tylko kilka wybranych pól. Każda pomoc jest mile widziana.
-sql "select <fields> from <table>"
(wyłączając pole GlobalID z <pól>) do części „Warstwa” okna dialogowego „Zapisz jako”, ale ten sam błąd wciąż się pojawiał. Czy źle wykorzystałem ten blok kodu, czy to błąd?