Come posso implementare l'API REST ESRI?


Risposte:



8

Ho appena usato il link che Jason ha pubblicato sopra. Non riesco a immaginare quando verrà rilasciato, le specifiche ufficiali saranno molto diverse. Per lo più è stato un rimboccarsi le maniche, accendere Fiddler, colpire i server di esempio 10.0 e iniziare l'hacking all'implementazione. Non c'è nulla di impossibile, solo noioso con un sacco di piccoli problemi da tenere in considerazione. Non renderemo la nostra compatibilità al 100%, ma copre l'85% e tutte le API client sembrano funzionare abbastanza bene (questa era l'unica ragione per cui l'ho fatto per cominciare)

ecco un catalogo demo (molti piccoli bug lì dentro :) [bFlood - rimosso vecchio link]

lo stiamo eseguendo su AppEngine (python) ed è piuttosto accoppiato con le strutture spaziali sottostanti, ma probabilmente potrebbe essere trasformato in un discreto progetto .Net WCF. Non sono sicuro di come lo distribuiremmo però

salute brian

Aggiornamento - 08/03/12 - Ho appena visto questo post apparire nello stackexchange, quindi ho pensato di aggiornare il contenuto. Puoi far funzionare FeatureService in pochi minuti se provi Arc2Earth Sync beta. il backend funziona con Google Fusion Tables e CartoDB ma supporteremo presto altri provider. Non hai bisogno di nulla tranne ArcView 9.2 o versioni successive ...

ecco un post sul blog che mostra come iniziare a raccogliere dati sul campo in pochi minuti utilizzando le app mobili ArcGIS.com: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -minuti/


2
Brian Flood? Kirk Kuykendall? È come se l'intera band dei forum ESRI fosse di nuovo insieme!
Sebastian Good,

Ehi Brian, è un piacere sentirti. Spero che la generosità attirerà qualcuno a fare esattamente quello che tu e Jason descrivete e pubblicherete i loro risultati da qualche parte come codeplex. In caso contrario, forse ci proverò. @Sebastian, piacere di vederti anche qui!
Kirk Kuykendall,

2
@kirk - sì, mi aspetterei che un progetto di comunità venga avviato ad un certo punto. Dovrebbe essere abbastanza flessibile da consentire più backend spaziali, probabilmente un'architettura plug-in per collegare qualsiasi versione di mappe / layer / funzionalità di un provider (ad esempio sql azzurro, postgis, geoserver, mapguide ecc.) @Sebastian - sì, forum ESRI con ricerca che funziona davvero. Saluti!
bFlood

7

L'unica documentazione che conosco per l'API REST di esri è nella loro guida online qui:

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

Questo è scritto più dalla prospettiva di un consumatore che di un fornitore, ma dovrebbe essere hackerabile.

Ci sono parti di questa API che sono piuttosto proprietarie (alcuni dei formati di output ) e impossibili da implementare da un progetto open source a meno che queste specifiche di formato non siano anche rese disponibili.

Inoltre, alcune delle API REST non sono particolarmente RESTful. Ad esempio, guarda il Servizio funzionalità. Sembrano esserci "endpoint" separati per aggiungere / aggiornare / cancellare / interrogare invece di usare i verbi HTTP standard per operare sulle risorse. Questo mi confonde; So che esri ha alcune persone piuttosto intelligenti che comprendono REST. La mia ipotesi è che queste chiamate si associno a una sorta di interfaccia SOAP, ed esri ha ritenuto che sarebbe stato più facile per loro e per i loro clienti se avessero mantenuto la coerenza tra loro.

La mia opinione? Se stai solo guardando la condivisione dei dati (non la configurazione della mappa, i metadati, ecc.) E non hai fretta, potresti stare meglio in attesa che Microsoft capisca come rappresenteranno i tipi di dati spaziali in EDM. Con questo in atto, potresti facilmente creare un accesso veramente RESTful alle tue tabelle spaziali usando OData e probabilmente ODIA abilitato per RIA. Questo potrebbe essere un gioco da ragazzi per quanto ne so.


Grazie Jason. Questo è un buon punto sui formati di output proprietari. Primo passaggio voglio solo json, html e image. Idealmente, quello che mi piacerebbe è un progetto C # che utilizza WCF WebHttp Services in .NET 4 per recuperare i dati da SQL Server 2008 e restituire in un formato che qualsiasi SDK web di ESRI può digerire.
Kirk Kuykendall,

Ah, scusa, si. Ho perso il sottotesto che stavi cercando per fornire assistenza al software client esri.
Ha

2

Stai cercando di esporre le tabelle spaziali da SQL Server 2008 Spatial? ESRI MapIt lo fa già e credo che le licenze consentano a chi ha AGS di avere accesso a ESRI MapIt.

Alcune schermate di come appare possono essere trovate sul mio blog: http://geo.geek.nz/development/hiding-database-from-unauthorised-users-when-using-esri-mapit/

Non hai bisogno di scrivere qualcosa da solo? ;)

Saluti


Ehi Jithen, il servizio dati territoriali è discusso in questo PDF ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) utilizzando l'API REST ESRI, i servizi WCF o qualcosa di completamente diverso? Immagino che MapIt non sia gratuito se non si esegue AGS; in tal caso, sarebbe utile per la comunità sviluppare qualcosa che esponesse l'API REST ESRI direttamente da MS SQL Server Spatial senza costi aggiuntivi, in particolare per le piccole app che potevano eseguire SQL Express.
JasonBirch,

Ciao Jithen - Ho scaricato la versione di prova di MapIT alla 1.0 e in quel momento avevo bisogno di installarla sullo stesso computer su cui è in esecuzione IIS. Il mio ISP non lo consente. Inoltre non ho potuto eseguire MapIT su un server di sviluppo, quindi distribuire il sito Web su un server di produzione - deve essere eseguito sul server di produzione. Forse questo è cambiato?
Kirk Kuykendall,

1
@JasonBirch Ciao Jason, SDS è un'implementazione separata da quella dell'API REST ma fornisce un'interfaccia simile che ti offre la possibilità di eseguire query su SQL Server Spatial. Una query di esempio: servername / SDS / database / sandbox / dbo.PostcodeBoundaries / ... La risposta può essere letta da qualsiasi API. ESRI MapIt ha una serie di funzioni chiave e utili. Ad esempio proiezione al volo e caricatore di dati che non vale la pena scrivere.
jiriteach,

@Kirk Hi Kirk, 1.1. include una serie di nuove funzionalità che sono principalmente miglioramenti del caricatore ma anche la possibilità di implementare facilmente la SDS. Anche il supporto di Azure è ora incluso. MapIt ha solo bisogno di IIS e la capacità di parlare con il tuo SQL Server. In realtà è molto facile da configurare ed eseguire ma, come detto, è la possibilità di implementare in azzurro ora con un'interfaccia utente senza testa, quindi questo potrebbe aiutarti. Saluti
jiriteach

2

L'ho già fatto in un'applicazione. Non ho implementato completamente l'API REST completo, ma abbastanza per ottenere un'attività di query per eseguire e formattare correttamente JSON. Ho usato ASP .NET MVC per costruire il mio endpoint. Ho provato a farlo circa un anno fa con WCF e l'output JSON non è stato formattato in modo da funzionare. Il trucco con MVC è assicurarsi di avere un risultato JSONP che tiri il parametro della query di callback e realizzi la risposta jsonp corretta. Proverò a pubblicare qualcosa. Puoi dare un'occhiata alla risposta qui:

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

Tuttavia, viene utilizzato solo il parametro callback:

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

Modifica: ecco come implementare un risultato JSONP in ASP .NET MVC

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

Modifica n. 2: ecco un esempio di codice che ho creato e messo rapidamente su dropbox.

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


1

Sembra che potresti finire per sostituire la funzionalità di ArcGIS. Consiglierei di utilizzare un progetto open source esistente per implementare un tale sistema se uno diventa disponibile che supporta quell'API, magari scrivere il proprio adattatore per un progetto open source. Forse ne esiste uno ma non mi sono ancora guardato molto. Non sono ancora sicuro che abbiano rilasciato una specifica API completa, ma se hai fretta potresti semplicemente usare la documentazione API esistente e testare l'implementazione con il software ESRI esistente.


Grazie Dandy, immagino che alla fine ci sarà un progetto open source. Trovo strano che ESRI lo abbia annunciato, ma non fornisca un collegamento alle specifiche. Non sono nemmeno sicuro di come sarebbe una specifica API REST. Sarebbe utile solo un esempio di una specifica insieme a esempi di codice che mostrano come si implementerebbe (con .NET).
Kirk Kuykendall,

Ricordo un po 'di clamore che si stava diffondendo per il sistema FGDB aperto ma penso che abbiano aperto solo un'API di codice piuttosto che pubblicare una specifica. Non avrei le tue speranze, ma dovresti essere in grado di implementare facilmente qualcosa semplicemente usando la documentazione per il consumatore, come ha anche detto @JasonBirch.
Dandy,



-1

@JasonBirch - penso che l'attrazione principale anche per fare questo sia la possibilità di integrarsi con le app esri / apis / arcgis.com. Se esri stacca la spina usando questi a buon mercato (gratis), diventa molto meno importante. Non mi è chiaro cosa intendono fare con ArcGIS.com e anche come sia concesso in licenza in questo momento. L'ho visto come una posizione centrale per dati / servizi in cui le applicazioni web potevano essere registrate, qualcosa come un appstore per i dati esri. Le terze parti registrano app Web (cloud) multi-tenant, esri fa un taglio e la tua app è immediatamente disponibile per tutti gli acquirenti compatibili con le altre specifiche API. in questa luce, ha senso aprire il resto api e consentire a quanti più servizi di integrarsi con l'hub possibile. la ricerca / l'archiviazione dei dati geospaziali sta rapidamente raggiungendo il livello di mercificazione, quindi spostalo su una tacca e prova a controllare lo spazio dell'app.

Penso che il tuo commento OData abbia un merito, ma IMO, questo è un modo. e, soprattutto, senza un'app client ampiamente distribuita e amata (qualcosa di Google Earth), qualsiasi specifica ben scritta ha il potenziale di appassire sulla pianta. Non dicendo che è il caso di OData, ci sono molti sviluppatori di MS là fuori che lo faranno cablare gratuitamente in VS, ma non lo vedo a breve termine. i miei 2 centesimi ...

(a proposito, sembra che ci sia una lunghezza del commento piuttosto breve, quindi la nuova risposta invece)


1
Sì, questo sito è stato progettato intenzionalmente per evitare discussioni :) Cordiali saluti, Haris e io stiamo lavorando per far funzionare OData con GeoREST (sta lavorando, sto assillando. Geometria in stringhe con attributo esteso che indica il tipo (KML / GML / GeoJSON).
JasonBirch,

sembra davvero interessante, ci sono informazioni online?
bFlood

non ancora, ma mi piacerebbe parlarne. L'abbiamo già pensato diverse volte :) A proposito, se includo il mio @username, ricevo notifiche di risposta :)
JasonBirch

ahhh, ok @JasonBirch lo è (avrebbe dovuto indovinarlo). chattiamo sicuramente, mi piacerebbe appendere il supporto OData dai cloud A2E (fintanto che esiste un metodo sano per gestire la geometria ma ora che so che tu e Haris siete sul caso, siamo tutti bravi!)
bFlood
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.