Jak mogę wdrożyć interfejs API REST ESRI?

Odpowiedzi:

8

Właśnie użyłem linku, który Jason opublikował powyżej. Nie mogę sobie wyobrazić, kiedy zostanie wydana, oficjalna specyfikacja będzie znacznie inna. Było to głównie zwijanie rękawów, odpalanie Fiddlera, uderzanie w przykładowe serwery 10.0 i rozpoczęcie hakowania przy implementacji. Nie ma nic niemożliwego, po prostu nudne z mnóstwem drobnych problemów, które należy wziąć pod uwagę. Nie zrobimy nawet naszej 100% kompatybilnej, ale obejmuje 85%, a wszystkie api klienta wydają się działać całkiem dobrze (to był jedyny powód, dla którego to zrobiłem)

oto katalog demonstracyjny (jest tam wiele małych błędów :) [bFlood - usunięto stary link]

uruchamiamy go na AppEngine (python) i jest dość ściśle powiązany z podstawowymi strukturami przestrzennymi, ale prawdopodobnie można go przekształcić w porządny projekt WCF .Net. Nie jestem jednak pewien, jak byśmy to rozpowszechnili

na zdrowie Brian

Aktualizacja - 3/8/12 - Właśnie zobaczyłem ten post wyskakujący w stosie wymiany, więc pomyślałem, że zaktualizuję zawartość. Możesz uruchomić FeatureService w kilka minut, jeśli wypróbujesz wersję beta Arc2Earth Sync. backend działa z Google Fusion Tables i CartoDB, ale wkrótce będziemy wspierać innych dostawców. Nie potrzebujesz niczego oprócz ArcView 9.2 lub nowszego ...

oto post na blogu pokazujący, jak rozpocząć zbieranie danych terenowych w kilka minut za pomocą aplikacji mobilnych ArcGIS.com: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -minuty/

b Powódź
źródło
2
Brian Flood? Kirk Kuykendall? To tak, jakby cały zespół forów ESRI znów był razem!
Sebastian Good
Hej Brian, świetnie cię słyszeć. Mam nadzieję, że nagroda zachęci kogoś do zrobienia dokładnie tego, co ty i Jason opisacie, i opublikowania jego wyników gdzieś jak kodeplex. Jeśli nie, może zrobię to. @Sebastian, miło cię też widzieć!
Kirk Kuykendall
2
@kirk - tak, spodziewałbym się, że w pewnym momencie rozpocznie się projekt społecznościowy. Musiałby być wystarczająco elastyczny, aby pozwolić na wiele zaplecza przestrzennego, prawdopodobnie architekturę wtyczek, aby połączyć dowolną wersję map / warstw / funkcji dowolnego dostawcy (np. Sql lazur, postgis, geoserver, mapguide itp.) @Sebastian - tak, fora ESRI z wyszukiwanie, które faktycznie działa. Twoje zdrowie!
bFlood
7

Jedyną znaną mi dokumentacją interfejsu API REST esri jest ich pomoc online tutaj:

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

Jest to napisane bardziej z perspektywy konsumenta niż dostawcy, ale powinno być możliwe do zhakowania.

Istnieją części tego API, które są dość zastrzeżone (niektóre formaty wyjściowe ) i niemożliwe do wdrożenia przez projekt open source, chyba że te specyfikacje formatów również zostaną udostępnione.

Ponadto niektóre interfejsy API REST nie są szczególnie RESTful. Na przykład spójrz na usługę Feature. Wydaje się, że istnieją oddzielne „punkty końcowe” dla dodawania / aktualizacji / usuwania / zapytania zamiast używania standardowych czasowników HTTP do obsługi zasobów. To mnie zastanawia; Wiem, że esri ma tam dość inteligentnych ludzi, którzy rozumieją REST. Domyślam się, że te połączenia są mapowane do pewnego rodzaju interfejsu SOAP i esri uznał, że byłoby łatwiej dla nich i ich klientów, gdyby zachowali spójność między nimi.

Moja opinia? Jeśli patrzysz tylko na udostępnianie danych (nie na konfigurację mapy, metadane itp.) I nie spieszysz się, możesz lepiej poczekać, aż Microsoft zorientuje się, w jaki sposób będą reprezentować typy danych przestrzennych w EDM. Dzięki temu możesz łatwo stworzyć prawdziwie RESTfulalny dostęp do swoich tabel przestrzennych przy użyciu OData i prawdopodobnie OData z obsługą RIA. To jednak może być piekielne niebo, o ile wiem.

JasonBirch
źródło
Dzięki Jason. To dobra uwaga na temat zastrzeżonych formatów wyjściowych. Najpierw przejdę tylko po json, html i image. Idealnie chciałbym, aby projekt C # korzystał z usług WCF WebHttp Services w .NET 4 w celu pobrania danych z Sql Server 2008 i zwrócenia w formie, którą dowolny zestaw SDK sieci Web ESRI może przetrawić.
Kirk Kuykendall
Ach, przepraszam, tak. Brakowało mi podtekstu, że chciałeś obsługiwać oprogramowanie klienckie esri. W takim przypadku absolutnie sensowne jest zaimplementowanie interfejsu API
JasonBirch,
2

Czy chcesz udostępnić tabele przestrzenne z SQL Server 2008 Spatial? ESRI MapIt już to robi i wierzę, że licencjonowanie umożliwia osobom z AGS dostęp do ESRI MapIt.

Niektóre ekrany tego, jak to wygląda, można znaleźć na moim blogu: http://geo.geek.nz/development/hiding-databases-from-unauthorised-users-when-using-esri-mapit/

Nie musisz sam coś pisać? ;)

Twoje zdrowie

jiriteach
źródło
Hej Jithen, czy usługa danych przestrzennych jest omówiona w tym pliku PDF ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) przy użyciu interfejsu API REST ESRI, usług WCF, czy może czegoś zupełnie innego? Zgaduję, że MapIt jest niewolny, jeśli nie korzystasz z AGS; jeśli tak, to byłoby korzystne dla społeczności, aby opracować coś, co ujawniło interfejs API REST ESRI bezpośrednio z MS SQL Server Spatial bez dodatkowych kosztów, szczególnie dla małych aplikacji, które mogłyby uruchomić SQL Express.
JasonBirch
Cześć Jithen - Pobrałem próbną wersję MapIT w wersji 1.0 i wtedy musiałem zainstalować ją na tym samym komputerze, na którym działają IIS. Mój dostawca usług internetowych nie pozwala na to. Nie mogłem też uruchomić MapIT na serwerze deweloperskim, a następnie wdrożyć stronę internetową na serwerze produkcyjnym - należy go uruchomić na serwerze produkcyjnym. Może to się zmieniło?
Kirk Kuykendall
1
@JasonBirch Cześć Jason, SDS jest oddzielną implementacją od interfejsu API REST, ale zapewnia podobny interfejs, umożliwiając uruchamianie zapytań w SQL Server Spatial. Przykładowe zapytanie: nazwa serwera / SDS / databases / sandbox / dbo.PostcodeBoundaries /… Odpowiedź może być odczytana przez dowolny interfejs API. ESRI MapIt ma wiele kluczowych i przydatnych funkcji. Na przykład projekcja w locie i moduł ładujący dane, których nie warto pisać.
jiriteach
@Kirk Hi Kirk, 1.1. zawiera szereg nowych funkcji, które są głównie ulepszeniami modułu ładującego, ale także możliwością łatwego wdrażania karty charakterystyki. Obsługa platformy Azure jest teraz uwzględniona. Map Potrzebuje tylko usług IIS i umiejętności komunikowania się z serwerem SQL Server. Jest to naprawdę bardzo łatwe do skonfigurowania i uruchomienia, ale jak wspomniano, jest to możliwość wdrożenia w lazur teraz z bezgłowym interfejsem użytkownika, więc może ci to pomóc. Na zdrowie
jiriteach,
2

Zrobiłem to już w aplikacji. Nie wdrożyłem w pełni pełnego interfejsu API REST, ale wystarczy, aby zadanie zapytania uruchomiło się i poprawnie sformatowało JSON. Użyłem ASP .NET MVC do zbudowania mojego punktu końcowego. Próbowałem to zrobić około rok temu z WCF i wyjście JSON nie zostało sformatowane w taki sposób, aby działało. Sztuką MVC jest upewnienie się, że masz wynik JSONP, który pobierze parametr zapytania zwrotnego i wykona prawidłową odpowiedź jsonp. Spróbuję coś opublikować. Tutaj możesz zobaczyć odpowiedź:

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

Jednak używany jest tylko parametr wywołania zwrotnego:

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

Edycja: Oto jak zaimplementować wynik JSONP w ASP .NET MVC

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

Edycja # 2: Oto przykład kodu, który szybko stworzyłem i umieściłem w Dropbox.

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

Jamie
źródło
1

Wygląda na to, że możesz po prostu zastąpić funkcjonalność ArcGIS. Poleciłbym wykorzystać istniejący projekt open source do wdrożenia takiego systemu, jeśli stanie się dostępny, który obsługuje ten interfejs API, być może napiszę własny adapter do projektu open source. Być może istnieje, ale jeszcze nie wyglądałem zbyt ciężko. Nie jestem pewien, czy wydali już pełną specyfikację API, ale jeśli się spieszysz, możesz po prostu skorzystać z istniejącej dokumentacji API i przetestować swoją implementację pod kątem istniejącego oprogramowania ESRI.

Elegant
źródło
Dzięki Dandy, sądzę, że w końcu będzie projekt open source. Wydaje mi się dziwne, że ESRI to ogłosi, ale nie podaje linku do specyfikacji. Nie jestem nawet pewien, jak wyglądałaby specyfikacja interfejsu API REST. Pomocny byłby tylko przykład specyfikacji wraz z przykładami kodu pokazującymi, jak ją zaimplementować (z .NET).
Kirk Kuykendall
Pamiętam trochę szumu, który rozprzestrzeniał się po otwarciu systemu FGDB, ale myślę, że otworzyli dla niego tylko API kodu, a nie opublikowali specyfikację. Nie wzbudziłbym twoich nadziei, ale powinieneś być w stanie łatwo wdrożyć coś, korzystając z dokumentacji konsumenckiej, jak powiedział również @JasonBirch.
Dandy
-1

@JasonBirch - myślę, że główną zaletą nawet zrobienia tego jest możliwość integracji z esri apps / apis / arcgis.com. Jeśli esri włączy wtyczkę tanio (za darmo), stanie się to o wiele mniej ważne. Nie jest dla mnie jasne, co zamierzają zrobić z ArcGIS.com, a nawet w jaki sposób jest obecnie licencjonowany. Widziałem to jako centralną lokalizację dla danych / usług, w której można rejestrować aplikacje internetowe, coś w rodzaju sklepu z danymi esri. Firmy zewnętrzne rejestrują aplikacje internetowe dla wielu dzierżawców (chmury), esri robi cięcia, a twoja aplikacja jest natychmiast dostępna dla wszystkich chętnych zgodnych ze specyfikacją reszty interfejsu API. w tym świetle sensowne jest otwarcie interfejsu API reszty i umożliwienie integracji jak największej liczby usług z koncentratorem. wyszukiwanie / przechowywanie danych geoprzestrzennych szybko zbliża się do utowarowienia, więc przenieś je o jeden krok wyżej i spróbuj kontrolować przestrzeń aplikacji.

Myślę, że twój komentarz OData ma sens, ale IMO, to jest daleka sprawa. a co ważniejsze, bez szeroko rozpowszechnionej i kochanej aplikacji klienckiej (coś w Google Earth) każda dobrze napisana specyfikacja może potencjalnie uschnąć na winorośli. Nie twierdząc, że tak jest w przypadku OData, jest wielu deweloperów stwardnienia rozsianego, którzy dostaną to za darmo w VS, ale nie widzę tego w krótkim okresie. moje 2 centy ...

(przy okazji wydaje się, że komentarz jest dość krótki, stąd nowa odpowiedź zamiast tego)

b Powódź
źródło
1
Tak, ta strona jest celowo zaprojektowana, aby uniknąć dyskusji :) FYI, Haris i ja pracujemy nad tym, aby OData współpracowała z GeoREST (pracuje, ja dokuczam. Geometria w ciągach znaków z rozszerzonym atrybutem wskazującym typ (KML / GML / GeoJSON).
JasonBirch
to brzmi naprawdę interesująco, czy są jakieś informacje online?
bFlood
jeszcze nie, ale chciałbym o tym porozmawiać. Już kilkakrotnie się nad tym zastanawialiśmy :) BTW, jeśli dołączę moją @nazwa użytkownika, otrzymuję powiadomienia o odpowiedzi :)
JasonBirch
ahhh, ok @JasonBirch to jest (powinienem to odgadnąć). zdecydowanie porozmawiajmy, chciałbym zawiesić obsługę OData na chmurach A2E (o ile istnieje rozsądna metoda obsługi geometrii, ale teraz, gdy wiem, że ty i Haris jesteście w sprawie, wszyscy jesteśmy dobrzy!)
bFlood