Comment puis-je implémenter l'API REST ESRI?

24

ESRI a annoncé la publication de l'API ArcGIS REST en tant que technologie ouverte . J'ai un FAI exécutant Sql Server 2008 avec IIS7.

Quelqu'un connaît-il une bonne marche à suivre pour montrer comment je peux écrire C # en utilisant WCF pour exposer des tables spatiales conformes à une spécification particulière (idéalement ESRI)?

Quelqu'un sait-il où se trouve la spécification d'ESRI?

Kirk Kuykendall
la source

Réponses:

8

Je viens d'utiliser le lien que Jason a posté ci-dessus. Je ne peux pas imaginer quand sa sortie, la spécification officielle sera très différente. Il s'agissait principalement de retrousser vos manches, de lancer Fiddler, de frapper les serveurs d'échantillons 10.0 et de commencer à pirater l'implémentation. Il n'y a rien d'impossible, juste fastidieux avec beaucoup de petits problèmes à prendre en compte. Nous ne rendrons même pas les nôtres 100% compatibles, mais ils couvrent 85% et tous les API clients semblent fonctionner assez bien (c'était la seule raison pour laquelle je l'ai fait au début)

voici un catalogue de démonstration (plein de petits bugs dedans :) [bFlood - ancien lien supprimé]

nous l'exécutons sur AppEngine (python) et son assez étroitement couplé avec les structures spatiales sous-jacentes, mais il pourrait probablement être transformé en un projet WCF .Net décent. Je ne sais pas comment nous le distribuerions

cheers brian

Mise à jour - 3/8/12 - Je viens de voir ce post apparaître dans stackexchange, alors j'ai pensé que je mettrais à jour le contenu. Vous pouvez faire fonctionner votre FeatureService en quelques minutes si vous essayez la version bêta d'Arc2Earth Sync. le backend fonctionne avec Google Fusion Tables et CartoDB, mais nous prendrons en charge d'autres fournisseurs très bientôt. Vous n'avez besoin de rien sauf ArcView 9.2 ou supérieur ...

voici un article de blog montrant comment commencer à collecter des données de terrain en quelques minutes à l'aide des applications mobiles ArcGIS.com: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -minutes/

bFlood
la source
2
Brian Flood? Kirk Kuykendall? C'est comme si tout le groupe des forums ESRI était de retour ensemble!
Sebastian Good
Hé Brian, c'est super d'avoir de tes nouvelles. J'espère que la prime incitera quelqu'un à faire exactement ce que vous et Jason décrivez, et à publier leurs résultats quelque part comme codeplex. Sinon, je vais peut-être essayer. @Sebastian, ravi de vous voir ici aussi!
Kirk Kuykendall
2
@kirk - oui, je m'attendrais à ce qu'un projet communautaire démarre à un moment donné. Il devrait être suffisamment flexible pour permettre de multiples backends spatiaux, probablement une architecture de plugin pour câbler toute version de fournisseurs de cartes / couches / fonctionnalités (par exemple sql azure, postgis, geoserver, mapguide etc.) @Sebastian - oui, forums ESRI avec recherche qui fonctionne réellement. à votre santé!
bFlood
7

La seule documentation que je connaisse pour l'API REST d'esri se trouve dans leur aide en ligne ici:

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

Ceci est écrit plus du point de vue d'un consommateur que d'un fournisseur, mais devrait être piratable.

Certaines parties de cette API sont tout à fait propriétaires (certains des formats de sortie ) et impossibles à implémenter par un projet open source à moins que ces spécifications de format ne soient également mises à disposition.

De plus, certaines des API REST ne sont pas spécialement RESTful. Par exemple, regardez le Feature Service. Il semble y avoir des «points de terminaison» distincts pour ajouter / mettre à jour / supprimer / interroger au lieu d'utiliser des verbes HTTP standard pour opérer sur les ressources. Cela me laisse perplexe; Je sais qu'esri a des gens assez intelligents qui comprennent REST. Je suppose que ces appels correspondent à une sorte d'interface SOAP, et esri a estimé qu'il serait plus facile pour eux et leurs clients de maintenir une cohérence entre eux.

Mon avis? Si vous cherchez uniquement à partager des données (pas la configuration de la carte, les métadonnées, etc.) et que vous n'êtes pas pressé, vous feriez mieux d'attendre que Microsoft comprenne comment ils vont représenter les types de données spatiales dans EDM. Avec cela en place, vous pouvez facilement créer un accès vraiment RESTful à vos tables spatiales en utilisant OData et probablement OData compatible RIA. Cela peut être une tarte dans le ciel pour tout ce que je sais.

JasonBirch
la source
Merci Jason. C'est un bon point sur les formats de sortie propriétaires. Première passe, je veux juste json, html et image. Idéalement, ce que j'aimerais, c'est un projet C # qui utilise les services WCF WebHttp dans .NET 4 pour récupérer des données à partir de Sql Server 2008 et retourner sous une forme que n'importe quel SDK Web d'ESRI peut digérer.
Kirk Kuykendall
Ah, désolé, oui. J'ai raté le sous-texte que vous cherchiez à entretenir le logiciel client esri. Il est absolument logique d'essayer d'implémenter l'API dans ce cas
JasonBirch
2

Envisagez-vous d'exposer des tables spatiales à partir de SQL Server 2008 Spatial? ESRI MapIt le fait déjà et je pense que la licence permet à ceux qui ont AGS d'avoir accès à ESRI MapIt.

Quelques écrans de ce à quoi cela ressemble peuvent être trouvés sur mon blog: http://geo.geek.nz/development/hiding-databases-from-unauthorised-users-when-using-esri-mapit/

Pas besoin d'écrire quelque chose vous-même? ;)

À votre santé

jiriteach
la source
Hey Jithen, le service de données spatiales est-il discuté dans ce PDF ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) en utilisant l'API REST ESRI, les services WCF ou quelque chose de complètement différent? Je suppose que MapIt n'est pas gratuit si vous n'exécutez pas AGS; si tel est le cas, il serait avantageux pour la communauté de développer quelque chose qui expose l'API ESRI REST directement à partir de MS SQL Server Spatial sans coût supplémentaire, en particulier pour les petites applications qui pourraient fonctionner avec SQL Express.
JasonBirch
Salut Jithen - J'ai téléchargé la version d'essai de MapIT à 1.0 et à ce moment-là, je devais l'installer sur la même machine où IIS fonctionne. Mon FAI ne le permet pas. De plus, je ne pouvais pas exécuter MapIT sur un serveur de développement, puis déployer le site Web sur un serveur de production - il doit être exécuté sur le serveur de production. Peut-être que cela a changé?
Kirk Kuykendall
1
@JasonBirch Bonjour Jason, Le SDS est une implémentation distincte de celle de l'API REST mais fournit une interface similaire vous offrant la possibilité d'exécuter des requêtes sur SQL Server Spatial. Un exemple de requête: nom_serveur / SDS / bases de données / sandbox / dbo.PostcodeBoundaries /… La réponse peut être lue par n'importe qui si les API. ESRI MapIt possède un certain nombre de fonctionnalités clés et utiles. Par exemple, projection à la volée et chargeur de données qui ne valent pas la peine d'être écrits.
jiriteach
@Kirk Salut Kirk, 1.1. comprend un certain nombre de nouvelles fonctionnalités qui sont principalement des améliorations du chargeur, mais également la possibilité de déployer facilement le SDS. Le support Azure est désormais également inclus. MapIt a juste besoin d'IIS et de la capacité de parler à votre serveur SQL. C'est en fait très facile à configurer et à exécuter, mais comme mentionné, leur capacité à se déployer dans azur maintenant avec une interface utilisateur sans tête, cela pourrait vous aider. Vive
jiriteach
2

Je l'ai déjà fait dans une application. Je n'ai pas implémenté complètement l'API REST complète, mais suffisamment pour obtenir une tâche de requête pour exécuter et formater correctement le JSON. J'ai utilisé ASP .NET MVC pour créer mon point de terminaison. J'ai essayé de faire cela il y a environ un an avec WCF et la sortie JSON n'était pas formatée de cette manière pour fonctionner. L'astuce avec MVC est de s'assurer que vous avez un résultat JSONP qui tirera le paramètre de requête de rappel et produira la réponse jsonp correcte. Je vais essayer de publier quelque chose. Vous pouvez consulter la réponse ici:

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.iop.js

Cependant, seul le paramètre de rappel est utilisé:

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

Modifier: voici comment implémenter un résultat JSONP dans ASP .NET MVC

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

Edit # 2: Voici un exemple de code que j'ai rapidement fait et mis en place sur dropbox.

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

Jamie
la source
1

Il semble que vous puissiez finir par remplacer les fonctionnalités d'ArcGIS. Je recommanderais d'utiliser un projet open source existant pour implémenter un tel système s'il en existe un qui prend en charge cette API, écrivez peut-être votre propre adaptateur pour un projet open source. Peut-être existe-t-il mais je n'ai pas encore regardé très fort. Je ne suis pas sûr qu'ils aient publié une spécification d'API complète pour le moment, mais si vous êtes pressé, vous pouvez simplement utiliser la documentation API existante et tester votre implémentation par rapport au logiciel ESRI existant.

Dandy
la source
Merci Dandy, je suppose qu'il y aura éventuellement un projet open source. Je trouve étrange que ESRI l'annonce, mais ne fournisse pas de lien vers la spécification. Je ne sais même pas à quoi ressemblerait une spécification d'API REST. Un exemple de spécification avec des exemples de code montrant comment on pourrait l'implémenter (avec .NET) serait utile.
Kirk Kuykendall
Je me souviens d'un battage médiatique qui se répandait pour que le système FGDB soit ouvert, mais je pense qu'ils n'y ont ouvert qu'une API de code plutôt que de publier une spécification. Je n'obtiendrais pas vos espoirs, mais vous devriez pouvoir mettre en œuvre facilement quelque chose en utilisant simplement la documentation du consommateur, comme l'a également dit @JasonBirch.
Dandy
-1

@JasonBirch - Je pense que le principal attrait pour faire cela est la possibilité d'intégrer les applications esri / apis / arcgis.com. Si esri tire la prise en les utilisant à bon marché (gratuitement), cela devient beaucoup moins important. Je ne sais pas exactement ce qu'ils envisagent de faire avec ArcGIS.com et même comment il est autorisé à l'heure actuelle. Je l'ai vu comme un emplacement central pour les données / services où les applications Web pouvaient être enregistrées, quelque chose comme un appstore pour les données esri. Les tierces parties enregistrent des applications Web (cloud) multi-locataires, esri prend une coupe et votre application est instantanément disponible pour tous les preneurs compatibles avec les autres spécifications de l'API. dans cette optique, il est logique d'ouvrir l'api de repos et de permettre au plus grand nombre de services de s'intégrer au concentrateur que possible. La recherche / stockage de données géospatiales est rapidement sur le point d'être commercialisée, alors déplacez-la d'un cran et essayez de contrôler l'espace de l'application.

Je pense que votre commentaire OData a du mérite, mais OMI, c'est loin. et plus important encore, sans application client largement distribuée et appréciée (quelque chose comme Google Earth), toute spécification bien écrite a le potentiel de flétrir sur la vigne. Cela ne veut pas dire que c'est le cas avec OData, il y a beaucoup de développeurs MS qui obtiendront cela câblé gratuitement dans VS, mais je ne le vois pas à court terme. mes 2 cents ...

(btw, il semble y avoir une longueur de commentaire assez courte, d'où la nouvelle réponse à la place)

bFlood
la source
1
Oui, ce site est intentionnellement conçu pour éviter toute discussion :) FYI, Haris et moi travaillons pour que OData fonctionne avec GeoREST (il travaille, je harcèle. Géométrie en chaînes avec attribut étendu indiquant le type (KML / GML / GeoJSON).
JasonBirch
cela semble vraiment intéressant, y a-t-il des informations en ligne?
bFlood
pas encore, mais j'aimerais en discuter. Nous avons déjà trop réfléchi à plusieurs reprises :) BTW, si vous incluez mon @username, je reçois des notifications de réponse :)
JasonBirch
ahhh, ok @JasonBirch c'est (aurait dû le deviner). discutons, j'adorerais suspendre le support OData aux nuages ​​A2E (tant qu'il y a une méthode sensée pour gérer la géométrie mais maintenant que je sais que vous et haris êtes sur l'affaire, nous sommes tous bons!)
bFlood