Wie kann ich die ESRI REST-API implementieren?

24

ESRI gab bekannt, dass die ArcGIS REST-API als offene Technologie veröffentlicht wird . Ich habe einen ISP mit SQL Server 2008 mit IIS7.

Kennt jemand einen guten Überblick darüber, wie ich mit WCF C # schreiben kann, um räumliche Tabellen verfügbar zu machen, die einer bestimmten Spezifikation entsprechen (idealerweise ESRIs)?

Weiß jemand, wo die Spezifikation von ESRI ist?

Kirk Kuykendall
quelle

Antworten:

8

Ich habe gerade den Link benutzt, den Jason oben gepostet hat. Ich kann mir nicht vorstellen, wann die offizielle Spezifikation veröffentlicht wird. Meist ging es darum, die Ärmel hochzukrempeln, Fiddler hochzufahren, die 10.0-Beispielserver zu testen und mit der Implementierung zu beginnen. Es gibt nichts, was unmöglich ist, nur mühsam mit vielen kleinen Problemen, die berücksichtigt werden müssen. Wir werden nicht einmal unsere 100% kompatibel machen, aber es deckt 85% ab und alle Client-APIs scheinen ziemlich gut zu funktionieren (das war der einzige Grund, warum ich es getan habe)

Hier ist ein Demo-Katalog (viele kleine Bugs drin :) [bFlood - entfernter alter Link]

Wir betreiben es mit AppEngine (Python) und es ist ziemlich eng mit den zugrunde liegenden räumlichen Strukturen verbunden, aber es könnte wahrscheinlich zu einem anständigen .Net WCF-Projekt gemacht werden. Ich bin mir jedoch nicht sicher, wie wir es verteilen würden

Prost Brian

Update - 08.03.12 - Ich habe gerade gesehen, dass dieser Beitrag in stackexchange auftaucht, also dachte ich, ich würde den Inhalt aktualisieren. Sie können Ihren FeatureService in wenigen Minuten ausführen, wenn Sie die Beta-Version von Arc2Earth Sync ausprobieren. Das Backend funktioniert mit Google Fusion Tables und CartoDB , wir werden jedoch in Kürze andere Anbieter unterstützen. Sie benötigen nur ArcView 9.2 oder höher ...

In diesem Blog-Beitrag wird gezeigt, wie mit den mobilen ArcGIS.com-Apps in wenigen Minuten Felddaten erfasst werden: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -Protokoll/

bFlood
quelle
2
Brian Flood? Kirk Kuykendall? Es ist, als ob die gesamte ESRI-Forenband wieder zusammen ist!
Sebastian Good
Hey Brian, schön von dir zu hören. Ich hoffe, dass die Bounty jemanden dazu verleitet, genau das zu tun, was Sie und Jason beschreiben, und ihre Ergebnisse irgendwo wie Codeplex zu veröffentlichen. Wenn nicht, mache ich vielleicht eine Pause. @ Sebastian, schön dich auch hier zu sehen!
Kirk Kuykendall
2
@kirk - ja, ich würde erwarten, dass irgendwann ein Community-Projekt startet. Es müsste flexibel genug sein, um mehrere räumliche Backends zu ermöglichen, wahrscheinlich eine Plugin - Architektur, um alle Anbieter - Versionen von Karten / Layern / Features (z. B. SQL Azure, Postgis, Geoserver, Mapguide usw.) mit @Sebastian - yea, ESRI - Foren zu verbinden Suche, die tatsächlich funktioniert. Prost!
bFlood
7

Die einzige Dokumentation, die mir für die REST-API von esri bekannt ist, finden Sie in der Online-Hilfe hier:

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

Dies wird eher aus der Sicht eines Verbrauchers als eines Anbieters geschrieben, sollte aber hackbar sein.

Es gibt Teile dieser API, die recht proprietär sind (einige der Ausgabeformate ) und von einem Open-Source-Projekt nur implementiert werden können, wenn diese Formatspezifikationen ebenfalls zur Verfügung gestellt werden.

Außerdem sind einige der REST-APIs nicht besonders REST-konform. Schauen Sie sich zum Beispiel den Feature Service an. Es scheint separate "Endpunkte" für das Hinzufügen / Aktualisieren / Löschen / Abfragen zu geben, anstatt Standard-HTTP-Verben für die Verarbeitung von Ressourcen zu verwenden. Das verwirrt mich; Ich weiß, dass esri einige ziemlich kluge Leute gibt, die REST verstehen. Ich vermute, dass diese Aufrufe einer Art SOAP-Schnittstelle zugeordnet sind, und esri meinte, dass es für sie und ihre Kunden einfacher wäre, wenn sie die Konsistenz zwischen ihnen aufrechterhalten würden.

Meine Meinung? Wenn Sie nur Daten freigeben möchten (keine Kartenkonfiguration, Metadaten usw.) und sich nicht in Eile befinden, sollten Sie besser warten, bis Microsoft herausgefunden hat, wie räumliche Datentypen in EDM dargestellt werden. Mit dieser Funktion können Sie mithilfe von OData und möglicherweise RIA-fähigen OData problemlos einen wirklich REST-fähigen Zugriff auf Ihre räumlichen Tabellen erstellen. Nach allem, was ich weiß, ist das vielleicht ein Kinderspiel.

JasonBirch
quelle
Vielen Dank, Jason. Das ist ein guter Punkt bei proprietären Ausgabeformaten. Erster Durchgang Ich möchte nur Json, HTML und Bild. Im Idealfall würde ich mir ein C # -Projekt wünschen, das WCF WebHttp Services in .NET 4 verwendet, um Daten von SQL Server 2008 abzurufen und in einer Form zurückzugeben, die jedes Web-SDK von ESRI verarbeiten kann.
Kirk Kuykendall
Ah, Entschuldigung, ja. Ich habe den Untertext verpasst, nach dem Sie gesucht haben, um die esri-Client-Software zu warten. Absolut sinnvoll, um zu versuchen, die API in diesem Fall zu implementieren
JasonBirch
2

Möchten Sie räumliche Tabellen in SQL Server 2008 Spatial verfügbar machen? ESRI MapIt tut dies bereits und ich glaube, dass die Lizenzierung es Personen mit AGS ermöglicht, auf ESRI MapIt zuzugreifen.

Einige Bildschirme, wie dies aussieht, finden Sie in meinem Blog: http://geo.geek.nz/development/hiding-databases-from-unauthorised-users-when-using-esri-mapit/

Müssen Sie nicht selbst etwas schreiben? ;)

Prost

jiriteach
quelle
Hey Jithen, wird der Geodatendienst in diesem PDF ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) mit der ESRI-REST-API, WCF-Diensten oder etwas völlig anderem erörtert ? Ich vermute, dass MapIt nicht kostenlos ist, wenn Sie kein AGS ausführen. In diesem Fall wäre es für die Community von Vorteil, etwas zu entwickeln, das die ESRI REST-API ohne zusätzliche Kosten direkt aus MS SQL Server Spatial verfügbar macht, insbesondere für kleine Apps, die mit SQL Express ausgeführt werden könnten.
JasonBirch
Hallo Jithen, ich habe die Testversion von MapIT 1.0 heruntergeladen und musste sie zu diesem Zeitpunkt auf demselben Computer installieren, auf dem IIS ausgeführt wird. Mein ISP erlaubt dies nicht. Außerdem konnte ich MapIT nicht auf einem Entwicklungsserver ausführen und dann die Website auf einem Produktionsserver bereitstellen - es muss auf dem Produktionsserver ausgeführt werden. Vielleicht hat sich das geändert?
Kirk Kuykendall
1
@JasonBirch Hallo Jason, der SDS ist eine andere Implementierung als die REST-API, bietet jedoch eine ähnliche Schnittstelle, über die Sie Abfragen für SQL Server Spatial ausführen können. Eine Beispielabfrage: servername / SDS / databases / sandbox / dbo.PostcodeBoundaries /… Die Antwort kann von jeder beliebigen API gelesen werden. ESRI MapIt verfügt über eine Reihe von wichtigen und nützlichen Funktionen. Zum Beispiel On-the-Fly-Projektion und Datenladeprogramm, das es nicht wert ist, geschrieben zu werden.
Jiriteach
@ Kirk Hi Kirk, 1.1. Enthält eine Reihe neuer Funktionen, die hauptsächlich Verbesserungen des Loaders, aber auch die einfache Bereitstellung des Sicherheitsdatenblatts betreffen. Azure-Unterstützung ist jetzt ebenfalls enthalten. MapIt benötigt nur IIS und die Fähigkeit, mit Ihrem SQL Server zu kommunizieren. Es ist eigentlich sehr einfach einzurichten und auszuführen, aber wie bereits erwähnt, kann es jetzt mit einer Benutzeroberfläche ohne Kopf in Azure bereitgestellt werden, sodass dies hilfreich sein kann. Prost
jiriteach
2

Das habe ich schon in einer Bewerbung gemacht. Ich habe die vollständige REST-API nicht vollständig implementiert, aber genug, um eine Abfragetask auszuführen und den JSON korrekt zu formatieren. Ich habe meinen Endpunkt mit ASP .NET MVC erstellt. Ich habe dies vor ungefähr einem Jahr mit WCF versucht und die JSON-Ausgabe war nicht so formatiert, dass sie funktioniert. Der Trick bei MVC besteht darin, sicherzustellen, dass Sie ein JSONP-Ergebnis haben, das den Rückruf-Abfrageparameter abruft und die richtige jsonp-Antwort liefert. Ich werde versuchen, etwas zu posten. Sie können sich die Antwort hier ansehen:

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

Es wird jedoch nur der Rückrufparameter verwendet:

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

Bearbeiten: So implementieren Sie ein JSONP-Ergebnis in ASP .NET MVC

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

Edit # 2: Hier ist ein Codebeispiel, das ich schnell erstellt und auf Dropbox gestellt habe.

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

Jamie
quelle
1

Es hört sich so an, als ob Sie möglicherweise nur die Funktionalität von ArcGIS ersetzen, die dies bewirkt. Ich würde empfehlen, ein vorhandenes Open-Source-Projekt zu verwenden, um ein solches System zu implementieren, wenn eines verfügbar ist, das diese API unterstützt. Schreiben Sie möglicherweise einen eigenen Adapter für ein Open-Source-Projekt. Vielleicht gibt es eine, aber ich habe noch nicht sehr genau nachgesehen. Ich bin mir noch nicht sicher, ob sie eine vollständige API-Spezifikation veröffentlicht haben, aber wenn Sie es eilig haben, können Sie einfach die vorhandene API-Dokumentation verwenden und Ihre Implementierung mit vorhandener ESRI-Software testen.

Dandy
quelle
Danke Dandy, ich denke, irgendwann wird es ein Open Source-Projekt geben. Ich finde es seltsam, dass ESRI es ankündigt, aber keinen Link zur Spezifikation bereitstellt. Ich bin mir nicht einmal sicher, wie eine REST-API-Spezifikation aussehen würde. Nur ein Beispiel einer Spezifikation zusammen mit Codebeispielen, die zeigen, wie man sie (mit .NET) implementieren würde, wäre hilfreich.
Kirk Kuykendall
Ich erinnere mich an einen Hype, der sich ausbreitete, weil das FGDB-System geöffnet war, aber ich glaube, sie haben nur eine Code-API dafür geöffnet, anstatt eine Spezifikation zu veröffentlichen. Ich würde Ihre Hoffnungen nicht aufkommen lassen, aber Sie sollten in der Lage sein, etwas einfach mithilfe der Verbraucherdokumentation zu implementieren, wie auch @JasonBirch sagte.
Dandy
-1

@JasonBirch - Ich denke, die Hauptattraktion dafür ist die Fähigkeit, sich in esri apps / apis / arcgis.com zu integrieren. Wenn esri den Stecker mit diesen billig (kostenlos) anzieht, wird es weit weniger wichtig. Mir ist nicht klar, was sie mit ArcGIS.com vorhaben und wie es derzeit lizenziert ist. Ich sah darin einen zentralen Ort für Daten / Dienste, an dem Webanwendungen registriert werden konnten, so etwas wie ein Appstore für esri-Daten. Drittanbieter registrieren Web-Apps für mehrere Mandanten (Clouds), esri schneidet ab und Ihre App ist sofort für alle Abnehmer verfügbar, die mit den übrigen API-Spezifikationen kompatibel sind. In diesem Licht ist es sinnvoll, die restliche API zu öffnen und zuzulassen, dass so viele Services wie möglich in den Hub integriert werden. Die Suche / Speicherung von Geodaten ist auf dem Weg zur Massenware. Gehen Sie also noch einen Schritt weiter und versuchen Sie, den App-Speicherplatz zu kontrollieren.

Ich denke, Ihr OData-Kommentar hat seine Berechtigung, aber IMO, das ist ein Ausweg. Und was noch wichtiger ist: Ohne eine umfangreich verbreitete und beliebte Client-App (etwas von Google Earth) kann jede gut geschriebene Spezifikation am Rebstock verdorren. Ohne zu sagen, dass dies bei OData der Fall ist, gibt es viele MS-Entwickler, die dies in VS kostenlos verkabeln, aber ich sehe es kurzfristig nicht. meine 2 Cent ...

(Übrigens scheint es eine ziemlich kurze Kommentarlänge zu geben, daher die neue Antwort)

bFlood
quelle
1
Ja, diese Seite wurde absichtlich entworfen, um Diskussionen zu vermeiden :) Zu Ihrer Information, Haris und ich arbeiten daran, OData mit GeoREST arbeiten zu lassen (er arbeitet, ich nörgele. Geometrie in Strings mit erweitertem Attributtyp (KML / GML / GeoJSON).
JasonBirch
das klingt wirklich interessant, gibt es online irgendwelche infos?
bFlood
noch nicht, würde aber gerne darüber plaudern. Wir haben es schon mehrmals überlegt :) Übrigens, wenn Sie meinen @Benutzernamen angeben, erhalte ich Benachrichtigungen über die Antwort :)
JasonBirch
ahhh, ok @JasonBirch ist es (sollte dies erraten haben). Lassen Sie uns auf jeden Fall plaudern, ich würde den OData-Support gerne von A2E-Clouds hängen (solange es eine vernünftige Methode für den Umgang mit Geometrie gibt, aber jetzt, da ich Sie und haris kenne, sind wir alle gut!)
bFlood