mz.geologyidea.com
Mais

OpenLayers WFS-T tinyows inserir transação: erro de valor GID

OpenLayers WFS-T tinyows inserir transação: erro de valor GID


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Tento implementar a inserção de um novo ponto usando Openlayers v2.13 saveStrategy chamando tinyows que implementa a transação WFS-T; Eu uso o exemplo de http://mapserver.org/tinyows/openlayershowto.html - o código é exatamente o mesmo, exceto para a camada.

Eu tenho duas perguntas:

1) adicionar um novo ponto implementa uma transação que usa "MULTIPOINT", mas minha camada postgis é do tipo POINT - há uma maneira de forçar "POINT"? Minha solução até agora é usar um TRIGGER no postgresql para fazer um INSTEAD OF para mudar MULTIPOINT para POINT.

2) Recebo um erro porque a inserção cria um valor "gid" que não deve ser incluído, pois é adicionado por padrão pelo contador. O log TINYOWS fornece a seguinte transação e erro:

SQL

INSERIR EM "arch_geo_dbt". "P030104_v" ("gid", "the_geom") VALORES ('042159162153000033', '010400002031BF0D00010000000101000000B69CF08B3069314130B8664669AD5541')

ERRO:

ERRO: o valor "042159162153000033" está fora do intervalo para o tipo inteiro

Abaixo do meu XML do REQUEST POST

1141040.5466402 5682597.1000195

Alguém sabe como resolver esse problema?


O ponto era que tinyows (versão 1.0.0) ao adicionar um novo recurso ao obter uma solicitação de transação "inserir", adiciona uma string aleatória como GID. Agora GID é um inteiro ou um biginteger, e o padrão é NEXTVAL (sequência) na tabela Postgres / Postgis. O GID que o tinyows criou era muito grande (fora do intervalo).

Tinyows funciona bem com uma tabela, mas a tabela que eu estava tentando atualizar era uma VISÃO (é claro que eu estava usando gatilhos para atualizar as tabelas por trás das visualizações, pois as visualizações não são atualizáveis). Tinyows permite definir pkey = "gid" no objeto de camada em seu arquivo config.xml, no entanto, se for uma visualização, provavelmente não entende o tipo (ou seja, inteiro).

MINHA SOLUÇÃO: na vista, CAST a coluna GID para o tipo de texto, para que a inserção não gere um erro e, em seguida, nos gatilhos, esqueça o valor GID criado por tinyows e use o valor correto NEXTVAL ().

Se alguém estiver interessado posso postar minha rotina de gatilhos.


Assista o vídeo: GISTech 2008 ArcGIS Server WFS-T Editing