Exemplo de um serviço de mapa dinâmico que muda frequentemente?

8

Um requisito do nosso aplicativo da Web é atualizar automaticamente um serviço de mapa dinâmico específico em um timer.

O requisito refere-se a um cliente que possui um MS dinâmico que recebe constantemente atualizações de sensores GPS.

Vamos esquecer os Serviços de recursos por enquanto e os serviços WMS ou Imagem que podem mudar com frequência.

Em termos de codificação, era bastante simples conseguir isso.

Agora, nossos testadores desejam um Serviço de Mapa Dinâmico que seja alterado com freqüência (de preferência a cada 15 anos), para que eles possam ver como isso fica no front end. Também nos ajudará a demonstrar a nova capacidade para o nosso cliente.

Tenho vasculhado os servidores de amostra da Esri, mas não consigo encontrar um.

Alguém está ciente de um serviço público que poderíamos usar para alguns testes rápidos?

Se a resposta for negativa, deve haver scripts para simular o movimento de rastreamento por GPS, para talvez continuar mudando a localização de alguns pontos. Então, nós podemos configurar meu próprio serviço.

Simon
fonte
1
Onde estão os seus dados por trás do serviço de mapas armazenados? Estamos falando do ArcSDE sobre o SQL Server / Oracle, geodatabase de arquivos, etc ...?
Chad Cooper
Pode ser qualquer um dos acima. Tenha tudo pronto em nosso ambiente de teste. A nova funcionalidade deve ser testada em todos esses ambientes, mas tenho pouco medo de que haja um problema no back-end.
Simon
Talvez o i2maps ncg.nuim.ie/i2maps/docs/index.php?page=examples possa ajudá-lo?
Radek
Precisa trabalhar com 10.1, uma vez lançado?
precisa saber é o seguinte
Você não precisa do Tracking Server for ArcGIS Server? esri.com/software/arcgis/tracking-server/index.html para fazer isso?
Mapperz

Respostas:

2

Se você estiver usando a API REST, parece-me que você poderia fazer isso sem o servidor arcgis. Quando uma solicitação chegar para um mapa, retorne uma string json compatível com a especificação da API REST , representando novos locais.

Com o Windows, isso pode ser feito implementando um serviço Rest Rest WCF . O serviço manteria uma variedade de veículos na memória. Cada veículo teria localização, direção, velocidade e registro de data e hora. Quando uma solicitação chega, o local é atualizado com base em quanto tempo se passou desde o último registro de data e hora, compensando alguma distância com base na velocidade e na direção.

Se seus veículos precisarem seguir as estradas, você pode despejar um caminho para cada veículo em um arquivo (x, y e hora). O serviço REST pode então usar o arquivo para retornar atualizações de posição que seguem esses caminhos.

Seu cliente precisaria de um cronômetro para fazer uma solicitação a cada 15 segundos. Inclua um carimbo de data / hora no URL para impedir o armazenamento em cache.

Editar

Outra alternativa seria usar uma extensão layere. Crie um mxd que aponte para uma camada de façanha. Na primeira vez que ILayerExtensionDraw.BeforeLayerDraw for chamado, substitua IFeatureLayer.Featureclass por uma featureclass na memória (criada usando inmemoryworkspacefactory ). A classe featureclass representaria a localização dos veículos, com campos para Heading, Speed ​​e TimeStamp. Cada vez que o BeforeLayerDraw é chamado, os locais são atualizados com base na velocidade, direção e hora desde o último registro de data e hora. Não esqueça que sua extensão layere implementa IPersistStream .

Kirk Kuykendall
fonte
Muito bom exemplo; Eu fiz isso nos últimos dois anos, mas sem o REST. Tínhamos uma camada ArcSDE que seria atualizada com a telemetria do veículo pesquisada em cada carro a cada 30 segundos; esses dados eram inseridos em uma camada Point com os valores com carimbo de data e hora. Acabamos de ter um método que atualizaria o controle de mapa (baseado no yes no ADF, eca) em uma janela configurável e puxaria os 5 pontos de informações mais recentes do veículo para que você pudesse ver movimento e tempo. Funcionou bem para PD / EMS ...
DEWright
Bom, mas não o que estou procurando. Eu preciso de um D-MS que eu possa chamar por meio de uma API da Esri e, em outro lugar do código, eu o tenho para continuar solicitando novamente este serviço. Sua resposta parece um exagero para minhas necessidades de teste?
Simon
-1

A natureza de um serviço de mapa dinâmico é que ele é renderizado on-the-fly, por solicitação. Para ver quaisquer alterações no lado do cliente, uma nova solicitação de mapa deve ser emitida.

Por padrão, um serviço de mapa dinâmico hospedado no ArcGIS Server colocará um "Bloqueio de esquema" nos dados, impedindo edições nos dados de origem enquanto o serviço estiver sendo executado.

Isso pode ser superado editando propriedades no arquivo de configuração dos serviços de mapa (.cfg). Uma <SchemaLockingEnabled>false</SchemaLockingEnabled>entrada permitirá alterações nos dados de origem enquanto o serviço estiver sendo executado.

Consulte http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//0093000000mr000000

Allan Adair
fonte
NOTA: se as atualizações de recursos forem realizadas através de um serviço de recursos, você não precisará se preocupar com o bloqueio de esquema. Além disso, o envio de edições de recursos por meio de um serviço de recursos seria uma ótima maneira de testar o redesenho dinâmico de um serviço de mapas.
Allan Adair
Allan, a melhor maneira de resolver esse problema é uma exibição espacial de uma fonte SDE / DB. Você atualiza a tabela ao vivo e, quando a nova consulta é acionada, atinge a visualização e a camada de origem é atingida.
DEWright
Essa é uma boa dica do ponto de vista da arquitetura, e se o Simon estiver usando o SDE para armazenar / recuperar dados, isso seria outra maneira de testar se um serviço de mapa dinâmico está sendo renderizado corretamente no aplicativo do lado do cliente.
Allan Adair
Outro cliente tinha apenas um valor X / Y que usaríamos para criar pontos em tempo real com base na extensão visível atual e que funcionou bem também. Portanto, há potencial, eu gostaria de ter um serviço público para demonstrá-lo; mas como esses são serviços públicos, todos eles são protegidos.
DEWright
Este exemplo deve funcionar: sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/… É o serviço de amostra que pode ser editado usando o SDK interativo do Silverlight. Tenho certeza de que há mais por aí. help.arcgis.com/en/webapi/silverlight/samples/…
Allan Adair