Bagaimana saya bisa mengimplementasikan ESRI REST API?

24

ESRI mengumumkan bahwa mereka merilis ArcGIS REST API sebagai teknologi terbuka . Saya mendapatkan ISP yang menjalankan Sql Server 2008 dengan IIS7.

Adakah yang tahu cara berjalan yang baik untuk menunjukkan bagaimana saya bisa menulis C # menggunakan WCF untuk mengekspos tabel spasial yang sesuai dengan spesifikasi tertentu (idealnya ESRI)?

Adakah yang tahu di mana spesifikasi ESRI?

Kirk Kuykendall
sumber

Jawaban:

8

Saya hanya menggunakan tautan yang diposting Jason di atas. Saya tidak bisa membayangkan ketika dirilis, spesifikasi resmi akan jauh berbeda. Itu sebagian besar roll-up-your-sleeves, jalankan Fiddler, tekan server sampel 10.0 dan mulai meretas implementasi. Tidak ada yang mustahil, hanya membosankan dengan banyak masalah kecil untuk dipertimbangkan. Kami bahkan tidak akan membuat kami yang 100% kompatibel tetapi mencakup 85% dan semua apis klien tampaknya bekerja dengan baik (itulah satu-satunya alasan saya melakukannya sejak awal)

inilah katalog demo (banyak bug kecil di sana :) [bFlood - menghapus tautan lama]

kami menjalankannya di AppEngine (python) dan cukup erat ditambah dengan struktur spasial yang mendasarinya tetapi mungkin bisa dibuat menjadi proyek .Net WCF yang layak. Tidak yakin bagaimana kami akan mendistribusikannya

sorakan brian

Perbarui - 3/8/12 - Saya baru saja melihat posting ini muncul di stackexchange jadi saya pikir saya akan memperbarui konten. Anda dapat menjalankan FeatureService Anda dalam hitungan menit jika Anda mencoba Arc2Earth Sync beta. backend berfungsi dengan Google Fusion Tables dan CartoDB tetapi kami akan segera mendukung penyedia lain. Anda tidak memerlukan apa pun kecuali ArcView 9.2 atau lebih tinggi ...

inilah posting blog yang menunjukkan cara mulai mengumpulkan data lapangan dalam hitungan menit menggunakan aplikasi seluler ArcGIS.com: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -menit/

b Banjir
sumber
2
Brian Flood? Kirk Kuykendall? Sepertinya seluruh band forum ESRI kembali bersama lagi!
Sebastian Good
Hei Brian, senang mendengar dari Anda. Saya berharap karunia akan memikat seseorang untuk melakukan apa yang Anda dan Jason jelaskan, dan memposting hasil mereka di suatu tempat seperti codeplex. Jika tidak, mungkin saya akan mencobanya. @ Sebastian, senang melihatmu di sini juga!
Kirk Kuykendall
2
@kirk - ya, saya akan mengharapkan proyek komunitas untuk memulai di beberapa titik. Perlu cukup fleksibel untuk memungkinkan beberapa backend spasial, mungkin arsitektur plugin untuk memasang versi peta / lapisan / fitur penyedia (misalnya sql azure, postgis, geoserver, mapguide, dll.) @ Sandungan - ya, forum ESRI dengan pencarian yang benar-benar berfungsi. tepuk tangan!
bFlood
7

Satu-satunya dokumentasi yang saya ketahui tentang REST API untuk esri adalah bantuan online mereka di sini:

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

Ini ditulis lebih dari perspektif konsumen daripada penyedia, tetapi harus dapat diretas.

Ada bagian-bagian dari API ini yang cukup berpemilik (beberapa format output ) dan tidak mungkin dilaksanakan oleh proyek open source kecuali spesifikasi format ini juga tersedia.

Selain itu, beberapa API REST tidak terlalu tenang. Misalnya, lihat Layanan Fitur. Tampaknya ada "titik akhir" yang terpisah untuk tambah / perbarui / hapus / kueri alih-alih menggunakan kata kerja HTTP standar untuk beroperasi pada sumber daya. Ini membingungkan saya; Saya tahu bahwa esri memiliki beberapa orang yang cukup pintar di sana yang mengerti REST. Dugaan saya adalah bahwa panggilan ini memetakan ke beberapa jenis antarmuka SOAP, dan esri merasa bahwa akan lebih mudah bagi mereka dan klien mereka jika mereka mempertahankan konsistensi di antara mereka.

Pendapat saya? Jika Anda hanya melihat berbagi data (bukan konfigurasi peta, metadata, dll) dan tidak terburu-buru, Anda mungkin lebih baik menunggu sampai Microsoft mengetahui bagaimana mereka akan mewakili tipe data spasial dalam EDM. Dengan ini di tempat, Anda dapat dengan mudah membuat akses benar-benar tenang ke tabel spasial Anda menggunakan OData dan mungkin ODIA yang diaktifkan RIA pada saat itu. Ini mungkin pie-di-langit untuk semua yang aku tahu.

JasonBirch
sumber
Terima kasih Jason. Itu poin yang bagus tentang format output berpemilik. Pass pertama saya hanya ingin json, html, dan gambar. Idealnya, yang saya suka adalah proyek C # yang menggunakan Layanan WebHttp WCF di .NET 4 untuk mengambil data dari Sql Server 2008 dan mengembalikan dalam bentuk yang dapat dicerna oleh SDK web ESRI mana pun.
Kirk Kuykendall
Ah, maaf ya. Saya melewatkan subteks yang Anda cari untuk melayani perangkat lunak klien esri. Sangat masuk akal untuk mencoba mengimplementasikan API dalam kasus itu
JasonBirch
2

Apakah Anda melihat mengekspos tabel spasial dari SQL Server 2008 Spatial? ESRI MapIt sudah melakukan ini dan saya percaya lisensi memungkinkan mereka yang memiliki AGS memiliki akses ke ESRI MapIt.

Beberapa layar seperti apa ini dapat ditemukan di blog saya: http://geo.geek.nz/development/hiding-databases-from-unauthorised-users-when-using-esri-mapit/

Tidak perlu menulis sesuatu sendiri? ;)

Tepuk tangan

jiriteach
sumber
Hai Jithen, apakah Layanan Data Spasial dibahas dalam PDF ini ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) menggunakan ESRI REST API, layanan WCF, atau sesuatu yang sama sekali berbeda? Saya menduga bahwa MapIt tidak bebas jika Anda tidak menjalankan AGS; jika demikian, akan bermanfaat bagi masyarakat untuk mengembangkan sesuatu yang mengekspos ESRI REST API langsung dari MS SQL Server Spatial tanpa biaya tambahan, terutama untuk aplikasi kecil yang dapat menjalankan SQL Express.
JasonBirch
Hai Jithen - Saya mengunduh versi percobaan MapIT di 1.0 dan pada saat itu saya perlu menginstalnya di mesin yang sama di mana IIS berjalan. ISP saya tidak mengizinkan ini. Juga saya tidak bisa menjalankan MapIT pada server dev kemudian menyebarkan situs web ke server produksi - itu harus dijalankan pada server produksi. Mungkin ini sudah berubah?
Kirk Kuykendall
1
@JasonBirch Hai Jason, SDS adalah implementasi terpisah dari yang dari REST API tetapi menyediakan antarmuka yang sama memberi Anda kemampuan untuk menjalankan kueri terhadap SQL Server Spatial. Contoh permintaan: servername / SDS / database / sandbox / dbo.PostcodeBoundaries / ... Respons dapat dibaca oleh siapa pun jika API. ESRI MapIt memiliki sejumlah fitur utama dan berguna. Misalnya proyeksi on-the-fly dan pemuat data yang tidak layak ditulis.
jiriteach
@Kirk Hi Kirk, 1.1. termasuk sejumlah fitur baru yang terutama merupakan peningkatan pada loader tetapi juga kemampuan untuk dengan mudah menggunakan SDS. Dukungan Azure sekarang juga disertakan. MapIt hanya membutuhkan IIS dan kemampuan untuk berbicara dengan SQL Server Anda. Sebenarnya sangat mudah untuk mengatur dan menjalankan tetapi seperti yang disebutkan mereka adalah kemampuan untuk menyebar ke biru sekarang dengan UI tanpa kepala jadi ini mungkin membantu Anda. Cheers
jiriteach
2

Saya sudah melakukan ini dalam aplikasi. Saya tidak sepenuhnya mengimplementasikan api REST penuh, tetapi cukup untuk mendapatkan tugas query untuk menjalankan dan memformat JSON dengan benar. Saya menggunakan ASP .NET MVC untuk membangun titik akhir saya. Saya mencoba melakukan ini sekitar setahun yang lalu dengan WCF dan output JSON tidak diformat sedemikian rupa untuk bekerja. Trik dengan MVC adalah memastikan Anda memiliki hasil JSONP yang akan menarik parameter permintaan panggilan balik dan membuat respons jsonp yang benar. Saya akan mencoba memposting sesuatu. Anda dapat melihat jawabannya di sini:

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

Namun, hanya parameter panggilan balik yang digunakan:

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

Sunting: Berikut adalah cara menerapkan hasil JSONP dalam ASP .NET MVC

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

Sunting # 2: Ini adalah contoh kode yang saya buat dengan cepat dan pasang di dropbox.

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

Jamie
sumber
1

Kedengarannya Anda baru saja mengganti fungsi ArcGIS yang melakukan itu. Saya akan merekomendasikan menggunakan proyek open source yang ada untuk mengimplementasikan sistem seperti itu jika ada tersedia yang mendukung API itu, mungkin menulis adaptor Anda sendiri untuk proyek open source. Mungkin ada satu tapi saya belum terlihat sangat keras. Saya tidak yakin mereka telah merilis spesifikasi API lengkap dulu tetapi jika Anda sedang terburu-buru Anda bisa menggunakan dokumentasi API yang ada dan menguji implementasi Anda terhadap perangkat lunak ESRI yang ada.

Pesolek
sumber
Terima kasih Dandy, saya kira akhirnya akan ada proyek open source. Saya merasa aneh bahwa ESRI akan mengumumkannya, tetapi tidak memberikan tautan ke spesifikasi tersebut. Saya bahkan tidak yakin seperti apa spesifikasi API REST nantinya. Hanya contoh dari spec beserta contoh kode yang menunjukkan bagaimana seseorang akan mengimplementasikannya (dengan .NET) akan sangat membantu.
Kirk Kuykendall
Saya ingat beberapa hype yang menyebar di sekitar untuk sistem FGDB terbuka tetapi saya pikir mereka hanya membuka kode API untuk itu daripada menerbitkan spec. Saya tidak akan menaikkan harapan Anda, tetapi Anda harus dapat dengan mudah mengimplementasikan sesuatu hanya dengan menggunakan dokumentasi konsumen seperti yang dikatakan oleh @JasonBirch.
Dandy
-1

@JasonBirch - saya pikir hal utama untuk melakukan ini adalah kemampuan untuk berintegrasi dengan aplikasi esri / apis / arcgis.com. Jika esri menarik steker menggunakan ini dengan murah (gratis), itu menjadi jauh lebih penting. Tidak jelas bagi saya apa yang mereka rencanakan dengan ArcGIS.com dan bahkan bagaimana itu dilisensikan sekarang. Saya melihatnya sebagai lokasi sentral untuk data / layanan di mana aplikasi web dapat didaftarkan, sesuatu seperti appstore untuk data esri. Pihak ke-3 mendaftarkan aplikasi web multi-penyewa (cloud), esri mengambil bagian dan aplikasi Anda langsung tersedia untuk semua pengambil yang kompatibel dengan spesifikasi api sisanya. dalam hal ini, masuk akal untuk membuka api sisanya dan memungkinkan sebanyak mungkin layanan untuk berintegrasi dengan hub. pencarian / penyimpanan data geospasial dengan cepat menuju komoditi, jadi naikkan takik dan cobalah untuk mengontrol ruang aplikasi.

Saya pikir komentar OData Anda pantas tetapi IMO, itu jalan keluar. dan yang lebih penting, tanpa aplikasi klien yang didistribusikan secara luas dan sangat disukai (sesuatu Google Earth), spesifikasi apa pun yang ditulis dengan baik memiliki potensi layu pada pokok anggur. Tidak mengatakan itu yang terjadi dengan OData, ada banyak MS devs di luar sana yang akan mendapatkan kabel ini secara gratis di VS, tapi saya tidak melihatnya dalam jangka pendek. 2 sen saya ...

(btw, sepertinya ada panjang komentar yang cukup pendek, maka jawabannya baru)

b Banjir
sumber
1
Ya, situs ini sengaja dirancang untuk menghindari diskusi :) FYI, Haris, dan saya sedang bekerja untuk membuat OData bekerja dengan GeoREST (dia berfungsi, saya mengomel. Geometri dalam string dengan tipe atribut yang diperluas menunjukkan jenis (KML / GML / GeoJSON).
JasonBirch
kedengarannya sangat menarik, adakah info online?
bFlood
belum, tetapi ingin mengobrol tentang hal itu. Kami sudah terlalu memikirkannya beberapa kali :) BTW, jika menyertakan @namapengguna saya, saya mendapat notifikasi tanggapan :)
JasonBirch
ahhh, ok @JasonBirch (seharusnya sudah bisa menebak ini). mari kita mengobrol, saya ingin menggantung dukungan OData dari awan A2E (selama ada metode yang waras untuk menangani geometri, tetapi sekarang saya tahu Anda dan haris ada dalam
kasing