Estou usando o QGIS 2.0.1 e estou conectado a um banco de dados espacialmente habilitado para MS SQL Server (não ESRI). Consigo conectar-me à camada e carregá-la no meu sumário. Ocultei vários campos que não são importantes para a visibilidade.
Agora, quero exportar esses dados para outro tipo de dados (usaremos shapefile para este exemplo). Quando clico com o botão direito do mouse na camada, escolha "Salvar como" e defino o arquivo de saída, recebo o seguinte erro:
A exportação para o arquivo vetorial falhou. Erro: tipo não suportado para o campo GlobalID
Nota 1 : Se eu marcar "Ignorar criação de atributo" na caixa de diálogo, o shapefile será criado sem erros.
Nota 2 : O ArcGIS não tem esse problema, apenas converte o campo GUID para o tipo "TEXT".
Olhando para a tabela, um dos campos que ocultei é um GUID do tipo SQL < uniqueidentifier >, que provavelmente é o culpado. Na tentativa de resolver isso, deixei o campo "oculto". Eu teria assumido que, como o campo estava oculto, o QGIS não tentaria exportar esse campo, mas acabou não sendo o caso.
Você pode definir os campos que deseja exportar do QGIS?
É possível que o QGIS exporte apenas os campos "Visível"? Ou existe outra maneira alternativa de fazer isso no QGIS (talvez defina os campos por meio de uma consulta ogr2ogr)? Isso parece uma falha do QGIS se eu não conseguir definir quais campos exportar.
ATUALIZAÇÃO: Eu fiz um teste usando um shapefile de amostra para ver se eu poderia limitar os campos de saída. A seguinte linha de comando ogr2ogr funcionou e eliminou todos os campos, exceto "nome":
ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city"
mas usando o QGIS e adicionando:
-sql "select name from city"
para a seção "layer" da caixa de diálogo "Save As" não resultou em um shapefile com apenas um campo. Então, eu realmente não vejo como posso manipular a saída do arquivo para mostrar apenas alguns campos selecionados. Qualquer ajuda é apreciada.
fonte
-sql "select <fields> from <table>"
(excluindo o campo GlobalID dos <campos>) à parte "Camada" da caixa de diálogo "Salvar como", mas o mesmo erro ainda apareceu. Eu usei mal esse bloco de código ou isso é um bug?Respostas:
Se funcionar para você em linha de comando com ogr2ogr, acho que é a melhor solução para usar isso. Você pode escrever um arquivo bat simples para criar um shapefile a partir do banco de dados MSSQL. Obviamente, você não pode editar os dados e salvar de volta para o servidor dessa maneira.
O QGIS possui as caixas de entrada Fonte de dados e Camada, mas essas são apenas para os parâmetros -dsco e -lco do ogr2ogr. O driver shapefile do OGR não possui dsco ou lco útil para suas necessidades:
http://www.gdal.org/ogr2ogr.html
http://www.gdal.org/ogr/drv_shapefile.html
Como alternativa, deve ser possível escrever um plug-in python que solicite os dados do servidor com um comando SQL SELECT conforme suas necessidades. Isso até permitiria a edição de dados.
fonte
Eu sugiro que você verifique a tabela de atributos para a camada no sumário e se o campo GlobalID existe. Alterne para o modo de edição, remova a coluna que cria o problema durante a exportação e feche a janela. Salve como shapefile ou qualquer formato de saída desejado. Eu espero que isso ajude.
fonte