Cómo usar la API de ESRI JS para asignar tipos espaciales de SQL Server sin ArcGIS Server


8

He oído hablar de personas que utilizan la API Javascript ESRI para crear mapas web con datos espaciales de SQL Server u otros RDBMS. Por lo que puedo decir, no están utilizando ArcGIS Server como middleware. En particular, recientemente escuché de una compañía que usa una base de datos de SQL Server con tipos espaciales y Entity Framework para vincular la base de datos a la aplicación, pero luego están utilizando la API de ESRI JS en el front-end para procesar los datos.

Esto es algo que realmente me interesa, ya que he trabajado con SQL Server, Entity Framework, ASP.Net y la API de JS por separado y no tengo acceso a ArcGIS Server. ¿Alguien sabe de una arquitectura particular o flujo de trabajo por simplemente usar la API JS como front-end para un backend que no es ESRI?


1
La respuesta corta es enviar datos como JSON desde un servicio. Pero para ver si eso es posible, deberá responder preguntas como: ¿Qué tipo de datos desea mostrar en el mapa? Cuantas funciones cuantas capas
Devdatta Tengshe

1
Otra opción es usar Geoserver para servir datos almacenados en MS SQL Server: docs.geoserver.org/2.1.3/user/data/sqlserver.html
Devdatta Tengshe

@DevdattaTengshe: si tuviera que crear un servicio JSON, ¿necesitaría mi estructura JSON para imitar la estructura utilizada por la API JS? Por ejemplo, ¿necesitaría servir mis tablas como FeatureLayerobjetos? En este momento estoy trabajando en un proyecto usando ArcGIS Online y JS API. El problema es que no puedo hacer ningún procesamiento en AGOL, por lo que cualquier cálculo debe hacerse del lado del cliente. Estoy trabajando con solo unas pocas capas, pero algunas de ellas podrían tener cientos de miles de características.
Brian

@DevdattaTengshe: he oído hablar de Geoserver y me gustaría probarlo algún día. Todavía no estoy seguro de cómo usaría Geoserver con una aplicación web del lado del servidor que usa algo como ASP.Net y Entity Framework. Me temo que me toparía con los mismos límites con Geoserver que estoy viendo con AGOL.
Brian

Sí, tendrá que imitar el formato ERSI JSON para facilitar la interoperabilidad.
Devdatta Tengshe

Respuestas:


5

Solo para agregar más detalles, cuando crea un servicio para devolver JSON desde SQL Server, luego usaría el objeto de colección de características para crear una nueva capa en el mapa. Desde javascript, tomaría los atributos y el componente espacial devuelto por su servicio y lo formatearía al formato de geometría Esri para crear la colección de características.

Cuanto más cerca devuelva su servidor un formato como el formato Esri, menos análisis tendrá que hacer en el cliente. JSON es bastante fácil de analizar una vez que lo dominas.

La colección de características mostrada sería una capa gráfica en el mapa. Podría tener un Esri u otro mapa base público debajo. Un problema que tendrá es el rendimiento cuando comience a acercarse a miles de características, especialmente si tienen muchos vértices por geometría. Los servicios de entidades en el servidor ArcGIS devuelven un máximo de 1000 registros de forma predeterminada.

En cuanto a los cálculos, debe hacerlos con SQL (tiene extensiones espaciales) en la base de datos antes de devolverlos al cliente. Sin embargo, si está tratando de mostrar cientos de miles de características, tendrá que usar Geoserver o UMN Mapserver y devolverlas como WMS o un servicio en mosaico; no puede mostrar tantos gráficos en el navegador.

Consulte esta muestra donde se crea una capa a partir de un feed de datos de Flickr. No hay ningún servidor ArcGIS involucrado: http://developers.arcgis.com/en/javascript/jssamples/fl_featureCollection.html


1
Estoy interesado en cómo crear un servicio que devuelva JSON desde SQL Server que esté bien formateado para que se analice la API de Esri JS.
MLowry

2
Este enlace lo ayudará a crear un servicio que devuelva Json arcgis.com/home/item.html?id=6d28a606369c43fd9a6f929541ae7c93
Gunner

@Gunner es una buena muestra
awesomo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.