¿Cómo puedo implementar ESRI REST API?

Respuestas:

8

Acabo de usar el enlace que Jason publicó arriba. No puedo imaginar cuándo se lanzará, la especificación oficial será muy diferente. En su mayoría era una camisa de manga corta, enciende Fiddler, golpea los servidores de muestra 10.0 y comienza a piratear la implementación. No hay nada imposible, solo tedioso con muchos pequeños problemas a tener en cuenta. Ni siquiera haremos que el nuestro sea 100% compatible, pero cubre el 85% y todas las API del cliente parecen funcionar bastante bien (esa fue la única razón por la que lo hice para empezar)

aquí hay un catálogo de demostración (muchos pequeños errores allí :) [bFlood - enlace antiguo eliminado]

lo estamos ejecutando en AppEngine (python) y está bastante unido a las estructuras espaciales subyacentes, pero probablemente podría convertirse en un proyecto decente .Net WCF. Aunque no estoy seguro de cómo lo distribuiríamos

saludos Brian

Actualización - 8/03/12 - Acabo de ver esta publicación emergente en stackexchange, así que pensé que actualizaría el contenido. Puede ejecutar su FeatureService en minutos si prueba la versión beta de Arc2Earth Sync. el backend funciona con Google Fusion Tables y CartoDB, pero pronto brindaremos soporte a otros proveedores. No necesita nada excepto ArcView 9.2 o superior ...

Aquí hay una publicación de blog que muestra cómo comenzar a recopilar datos de campo en minutos usando las aplicaciones móviles de ArcGIS.com: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -minutos/

bInundación
fuente
2
Brian Flood? Kirk Kuykendall? ¡Es como si toda la banda de foros de ESRI volviera a unirse!
Sebastian Good
Hola Brian, me alegro de saber de ti. Espero que la recompensa atraiga a alguien a hacer exactamente lo que usted y Jason describan, y publique sus resultados en algún lugar como codeplex. Si no es así, tal vez lo resuelva. @Sebastian, ¡me alegro de verte aquí también!
Kirk Kuykendall
2
@kirk - sí, esperaría que un proyecto comunitario se inicie en algún momento. Tendría que ser lo suficientemente flexible como para permitir múltiples backends espaciales, probablemente una arquitectura de complemento para conectar cualquier versión de mapas / capas / características de proveedores (por ejemplo, sql azure, postgis, geoserver, mapguide, etc.) @Sebastian - sí, foros ESRI con búsqueda que realmente funciona. ¡aclamaciones!
bFlood
7

La única documentación que conozco para la API REST de esri está en su ayuda en línea aquí:

http://help.arcgis.com/EN/arcgisserver/10.0/apis/rest/index.html

Esto está escrito más desde la perspectiva de un consumidor que un proveedor, pero debería ser pirateable.

Hay partes de esta API que son bastante propietarias (algunos de los formatos de salida ) e imposibles de implementar por un proyecto de código abierto a menos que estas especificaciones de formato también estén disponibles.

Además, algunas de las API REST no son especialmente RESTful. Por ejemplo, mire el Servicio de funciones. Parece que hay "puntos finales" separados para agregar / actualizar / eliminar / consultar en lugar de usar verbos HTTP estándar para operar en los recursos. Esto me desconcierta; Sé que esri tiene algunas personas bastante inteligentes que entienden REST. Supongo que estas llamadas se asignan a algún tipo de interfaz SOAP, y esri sintió que sería más fácil para ellos y sus clientes si mantenían la coherencia entre ellos.

¿Mi opinión? Si solo busca compartir datos (no configuración de mapas, metadatos, etc.) y no tiene prisa, es mejor que espere hasta que Microsoft descubra cómo van a representar los tipos de datos espaciales en EDM. Con esto en su lugar, puede crear fácilmente un acceso verdaderamente RESTful a sus tablas espaciales usando OData y probablemente OData habilitado para RIA. Sin embargo, esto puede ser un pastel en el cielo por lo que sé.

JasonBirch
fuente
Gracias Jason. Ese es un buen punto sobre los formatos de salida propietarios. Primer paso, solo quiero json, html e image. Idealmente, lo que me gustaría es un proyecto de C # que use los servicios WCF WebHttp en .NET 4 para obtener datos de Sql Server 2008 y devolverlos en una forma que cualquiera de los SDK web de ESRI pueda digerir.
Kirk Kuykendall el
Ah, lo siento si. Me perdí el subtexto de que estabas buscando reparar el software del cliente esri. Absolutamente tiene sentido tratar de implementar la API en ese caso
JasonBirch
2

¿Está buscando exponer tablas espaciales de SQL Server 2008 Spatial? ESRI MapIt ya lo hace y creo que la licencia permite que las personas con AGS tengan acceso a ESRI MapIt.

Algunas pantallas de cómo se ve esto se pueden encontrar en mi blog: http://geo.geek.nz/development/hiding-databases-from-unauthorised-users-when-using-esri-mapit/

¿No necesitas escribir algo tú mismo? ;)

Aclamaciones

jiriteach
fuente
Hola Jithen, ¿se analiza el Servicio de Datos Espaciales en este PDF ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) utilizando la API REST de ESRI, los servicios WCF o algo completamente diferente? Supongo que MapIt no es libre si no está ejecutando AGS; si es así, sería beneficioso para la comunidad desarrollar algo que expusiera la API REST de ESRI directamente desde MS SQL Server Spatial sin costo adicional, especialmente para aplicaciones pequeñas que podrían funcionar con SQL Express.
JasonBirch
Hola Jithen: descargué la versión de prueba de MapIT en 1.0 y en ese momento necesitaba instalarlo en la misma máquina donde se ejecuta IIS. Mi ISP no permite esto. Además, no pude ejecutar MapIT en un servidor de desarrollo y luego implementar el sitio web en un servidor de producción; tiene que ejecutarse en el servidor de producción. Tal vez esto ha cambiado?
Kirk Kuykendall el
1
@JasonBirch Hola Jason, El SDS es una implementación separada de la API REST pero proporciona una interfaz similar que le brinda la capacidad de ejecutar consultas en SQL Server Spatial. Una consulta de ejemplo: nombre de servidor / SDS / bases de datos / sandbox / dbo.PostcodeBoundaries / ... La respuesta puede ser leída por cualquiera de las API. ESRI MapIt tiene una serie de características clave y útiles. Por ejemplo, proyección sobre la marcha y cargador de datos que no vale la pena escribir.
jiriteach
@ Kirk Hola Kirk, 1.1. incluye una serie de nuevas características que son principalmente mejoras en el cargador pero también la capacidad de implementar fácilmente el SDS. El soporte de Azure ahora también está incluido. MapIt solo necesita IIS y la capacidad de hablar con su SQL Server. En realidad, es muy fácil de configurar y ejecutar, pero como se mencionó, es la capacidad de implementar en azul ahora con una interfaz de usuario sin cabeza, por lo que esto podría ayudarlo. Saludos
jiriteach
2

Ya he hecho esto en una aplicación. No implementé completamente la API REST completa, pero sí lo suficiente como para obtener una tarea de consulta para ejecutar y formatear el JSON correctamente. Usé ASP .NET MVC para construir mi punto final. Intenté hacer esto hace aproximadamente un año con WCF y la salida JSON no estaba formateada de tal manera que funcionara. El truco con MVC es asegurarse de que tiene un resultado JSONP que extraerá el parámetro de consulta de devolución de llamada y hará la respuesta jsonp correcta. Intentaré publicar algo. Puedes echar un vistazo a la respuesta aquí:

http://www.ci.austin.tx.us/GIS/TrafficViewer/Home/JsonpIncidents/query?f=json&where=1%3D1&returnGeometry=true&spatialRel=esriSpatialRelIntersects&outFields= * & outSR = 4326 & callback = dojo.son.s._2.

Sin embargo, solo se utiliza el parámetro de devolución de llamada:

http://www.ci.austin.tx.us/GIS/TrafficViewer/Home/JsonpIncidents?callback=woot

Editar: Aquí se explica cómo implementar un resultado JSONP en ASP .NET MVC

/programming/758879/asp-net-mvc-returning-jsonp

Editar # 2: Aquí hay un ejemplo de código que hice rápidamente y puse en Dropbox.

http://dl.dropbox.com/u/28924446/EsriGeoServicesExampleMvc3.zip

Jamie
fuente
1

Parece que puede terminar reemplazando la funcionalidad de ArcGIS haciendo eso. Recomendaría utilizar un proyecto de código abierto existente para implementar dicho sistema si hay uno disponible que admita esa API, quizás escriba su propio adaptador para un proyecto de código abierto. Quizás exista uno, pero aún no he buscado mucho. No estoy seguro de que hayan lanzado una especificación API completa todavía, pero si tiene prisa, podría usar la documentación API existente y probar su implementación contra el software ESRI existente.

Dandy
fuente
Gracias Dandy, supongo que eventualmente habrá un proyecto de código abierto. Me resulta extraño que ESRI lo anuncie, pero no proporcione un enlace a la especificación. Ni siquiera estoy seguro de cómo se vería una especificación REST API. Solo sería útil un ejemplo de una especificación junto con ejemplos de código que muestren cómo se implementaría (con .NET)
Kirk Kuykendall
Recuerdo algunas exageraciones que se estaban extendiendo para que el sistema FGDB se abriera, pero creo que solo le abrieron una API de código en lugar de publicar una especificación. No me haría ilusiones, pero debería poder implementar fácilmente algo simplemente usando la documentación del consumidor como también dijo @JasonBirch.
Dandy
-1

@JasonBirch: creo que el principal atractivo para hacerlo es la capacidad de integrarse con esri apps / apis / arcgis.com. Si esri desconecta el uso de estos de forma económica (gratis), se vuelve mucho menos importante. No me queda claro qué planean hacer con ArcGIS.com e incluso cómo tiene licencia en este momento. Lo vi como una ubicación central para datos / servicios donde las aplicaciones web podrían registrarse, algo así como una tienda de aplicaciones para datos de Esri. Los terceros registran aplicaciones web (en la nube) para múltiples inquilinos, esri se corta y su aplicación está disponible instantáneamente para todos los usuarios compatibles con el resto de especificaciones de API. En este sentido, tiene sentido abrir el resto de la API y permitir que se integren tantos servicios como sea posible. La búsqueda / almacenamiento de datos geoespaciales se está convirtiendo rápidamente en un producto básico, así que muévalo hacia arriba y trate de controlar el espacio de la aplicación.

Creo que su comentario de OData tiene mérito, pero en mi opinión, eso está muy lejos. y, lo que es más importante, sin una aplicación cliente ampliamente distribuida y muy querida (algo de Google Earth), cualquier especificación bien escrita tiene el potencial de marchitarse. No digo que ese sea el caso con OData, hay muchos desarrolladores de MS por ahí que lo conectarán de forma gratuita en VS, pero no lo veo a corto plazo. mis 2 centavos ...

(por cierto, parece que hay una longitud de comentario bastante corta, de ahí la nueva respuesta)

bInundación
fuente
1
Sí, este sitio está diseñado intencionalmente para evitar discusiones :) Para su información, Haris y yo estamos trabajando para que OData funcione con GeoREST (él está trabajando, estoy molesto. Geometría en cadenas con un tipo de indicador de atributo extendido (KML / GML / GeoJSON).
JasonBirch
eso suena realmente interesante, ¿hay alguna información en línea?
bFlood
Todavía no, pero me encantaría hablar sobre ello. Ya lo hemos pensado varias veces :) Por cierto, si incluyo mi @ nombre de usuario, recibo notificaciones de respuesta :)
JasonBirch
ahhh, ok @JasonBirch es (debería haber adivinado esto). definitivamente hablemos, me encantaría colgar el soporte OData de las nubes A2E (siempre que haya un método sensato para manejar la geometría pero ahora que sé que tú y Haris están en el caso, ¡todos estamos bien!)
bFlood