Os blocos de mapa personalizados podem ser consumidos via ArcObjects no meu ArcGIS 10 Desktop AddIn?


8

Posso consumir e renderizar programaticamente blocos de mapa personalizados no ArcMap por meio do nosso ArcGIS 10 Desktop AddIn?

O AddIn é criado usando o ArcObjects SDK para C # / .NET e ArcGIS 10. Puxar e renderizar blocos de mapa NÃO é a função principal do AddIn. Definitivamente, gostaríamos de implementar esse recurso, se possível.

Mais detalhes:

  • Recebi uma dica de que a interface ITiledMapServer2 está envolvida, mas isso não está claro para mim e há uma escassez de informações nos documentos do ArcObjects sobre esta tarefa. A classe equivalente na API do ArcGIS for Flex é TiledMapServiceLayer, mas novamente é um ArcMap AddIn no espaço da área de trabalho, não um aplicativo da web.
  • Temos um software interno para gerar nossos próprios blocos no mesmo esquema de zoom, bloco Y e bloco X, semelhante às APIs JS / Flash do Google Maps.
  • Estamos usando o Apache para servir os blocos de mapa e, portanto, atualmente não estamos usando o ArcGIS Server de forma alguma (isto é, autor dos blocos, publicação como um serviço de mapa do ArcGIS Server, etc).
  • Publiquei a pergunta na SO e recebi uma recomendação para publicar aqui.

Agradeço antecipadamente.


Se tudo o que você está tentando fazer é chegar aos blocos do mapa em um ArcGIS Server, por que não adicionar o serviço como uma camada no seu MXD?
Michael Todd

Ele disse "sem servidor ArcGIS" - apenas o Apache, caso contrário, é muito simples, como você diz.
Herb

Obrigado Michael. Porque os blocos não estão em um ArcGIS Server ou de qualquer forma atendidos por um ArcGIS Server. Esses são nossos blocos personalizados atualmente servidos por uma máquina executando o Apache administrada por nós. Por quê? Temos vários aplicativos da web usando a API do Google Maps e a API do ArcGIS for Flex que consomem esses blocos. E seria bom simplesmente dar uma olhada nessa infraestrutura em nosso Desktop AddIn. Se a única maneira de fazer isso é servir nossos blocos como um serviço de mapa publicado via ArcGIS Server, tudo bem - só quero saber disso com antecedência.
Josh

(Ops, encaminhei para o seu terceiro ponto.) Você pode tentar estruturar as imagens de forma a solicitar os blocos conforme necessário (nomes de diretório X / Y, pesquisa XML, etc.), mas essencialmente estaria escrevendo seu próprio "servidor de bloco de imagem" do zero. Seria muito mais fácil permitir que uma ferramenta pré-escrita faça seu trabalho (se você tiver acesso a ela) do que escrevê-la.
Michael Todd

Respostas:


8

Eu acho que você está olhando para implementar uma camada personalizada. Não sei de que outra forma você renderizaria dados dentro do ArcMap. Fora de um exercício puramente acadêmico, não o fiz. Há uma página inicial de informações disponível aqui , com uma lista de interfaces mínimas que você precisa implementar. No lado positivo, há uma amostra de desenvolvedor. O lado negativo é que você está entrando em um território de desenvolvimento seriamente não trivial. Divertido, mas não trivial.

Ou você pode ver o que os caras no projeto codeplex do ArcBruTile fizeram, que se parece muito com o que você está tentando.


Sim, camadas personalizadas são o caminho a percorrer. Não é trivial, mas também não é uma tarefa assustadora. Como você desenhará rasters e não vetores, a parte mais difícil será desenhar os bitmaps no lugar certo no contexto do dispositivo Win32. Também recomendo algum tipo de lógica de cache na memória.
Petr Krebs

@petr_k - Mesmo com o cache sendo crítico - o tráfego da rede prejudicará seu desempenho. Os caras no site do codeplex mencionado (afirmam) já lidaram com isso. Eu não examinei o código deles para ver como eles estão decidindo quanto tempo permanecerão em um bloco.
Herb

Senhores, obrigado a ambos. @ Herb, especialmente, muito obrigado pelo link do codeplex para o projeto ArcBruTile. Realmente parece com o que estamos tentando fazer. Eu verifiquei o código, o armazenamento em cache parece ser tratado pela primeira tentativa de carregar blocos do disco. Não está lá? Em seguida, carregue na Web e grave-os no disco.
Josh

@ Josh - prazer em ajudar - o projeto ArcBruTile também foi divertido para mim. Você gostaria de marcar a pergunta como "respondida"?
Herb

1

Os suplementos são para funcionalidades básicas e personalizações, como as Camadas personalizadas, exigirão uma solução COM e podem ser feitas usando o ArcObjects & .NET. No entanto, isso não pode ser feito usando suplementos.


Talvez, mas podemos realizar um pouco no nível AddIn, dada a API do ArcObjects para ArcGIS 10. Uma demonstração do nosso AddIn: youtube.com/watch?v=m2YRrCk3aKI
Josh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.