Como usar a API ESRI JS para mapear tipos espaciais do SQL Server sem o ArcGIS Server

8

Eu ouvi falar de pessoas que usam a API Javascript ESRI para criar mapas da web com dados espaciais do SQL Server ou de outros RDBMSs. Pelo que sei, eles não estão usando o ArcGIS Server como um middleware. Em particular, ouvi recentemente uma empresa que usa um banco de dados SQL Server com tipos espaciais e o Entity Framework para vincular o banco de dados ao aplicativo, mas eles estão usando a API ESRI JS no front-end para renderizar os dados.

Isso é algo que realmente me interessa, pois trabalhei com o SQL Server, o Entity Framework, o ASP.Net e a API JS separadamente e não tenho acesso ao ArcGIS Server. Alguém sabe de uma arquitetura ou fluxo de trabalho específico simplesmente usando a API JS como um front end para um back-end não ESRI?

Brian
fonte
1
A resposta curta é enviar dados como JSON de um serviço. Mas, para ver se isso é possível, você precisará responder a perguntas como: Que tipo de dados você deseja mostrar no mapa? Quantos recursos? quantas camadas?
Devdatta Tengshe
1
Outra opção é usar Geoserver para servir a dados armazenados em MS SQL Server: docs.geoserver.org/2.1.3/user/data/sqlserver.html
Devdatta Tengshe
@DevdattaTengshe - Se eu fosse criar um serviço JSON, precisaria da minha estrutura JSON para imitar a estrutura usada pela API JS. Por exemplo, eu precisaria servir minhas tabelas como FeatureLayerobjetos? Agora estou trabalhando em um projeto usando o ArcGIS Online e a API JS. O problema é que não posso fazer nenhum processamento no AGOL, portanto, qualquer cálculo deve ser feito no lado do cliente. Estou trabalhando com apenas algumas camadas, mas algumas delas podem ter centenas de milhares de recursos.
Brian
@DevdattaTengshe - Eu ouvi falar do Geoserver e realmente gostaria de experimentá-lo um dia. Ainda não tenho certeza de como usaria o Geoserver com um aplicativo Web do lado do servidor usando algo como ASP.Net e Entity Framework. Receio ter atingido os mesmos limites com o Geoserver que estou vendo com a AGOL.
Brian
Sim, você terá que imitar o formato ERSI JSON para facilitar a interoperabilidade.
Devdatta Tengshe

Respostas:

5

Apenas para adicionar mais detalhes, ao criar um serviço para retornar JSON do SQL Server, você usaria o objeto de coleção de recursos para criar uma nova camada no mapa. No javascript, você deve pegar os atributos e o componente espacial retornados do seu serviço e formatá-lo no formato de geometria Esri para criar a coleção de recursos.

Quanto mais próximo o servidor retornar um formato como o formato Esri, menos será necessário analisar o cliente. JSON é muito fácil de analisar quando você pega o jeito.

A coleção de recursos exibida seria uma camada gráfica no mapa. Você pode ter um Esri ou outro mapa de base público embaixo. Um problema que você terá é o desempenho quando começar a abordar milhares de recursos - principalmente se eles tiverem muitos vértices por geometria. Os serviços de recursos no servidor ArcGIS retornam no máximo 1000 registros por padrão.

Quanto aos cálculos, você deve fazê-los com SQL (possui extensões espaciais) no banco de dados antes de devolvê-los ao cliente. Se você estiver tentando exibir centenas de milhares de recursos, precisará usar o Geoserver ou o UMN Mapserver e devolvê-los como WMS ou um serviço lado a lado - não é possível exibir tantos gráficos no navegador.

Confira este exemplo em que uma camada é criada a partir de um feed de dados do Flickr. Nenhum servidor ArcGIS envolvido - http://developers.arcgis.com/en/javascript/jssamples/fl_featureCollection.html

awesomo
fonte
1
Estou interessado em como criar um serviço que retorna JSON do SQL Server que está bem formatado para a API Esri JS analisar.
MLowry
2
Este link irá ajudá-lo na criação do serviço que retorna Json arcgis.com/home/item.html?id=6d28a606369c43fd9a6f929541ae7c93
Artilheiro
@Gunner que é uma amostra agradável
awesomo