Як я можу реалізувати ESRI REST API?


24

ESRI оголосив, що випускає API ArcGIS REST як відкриту технологію . У мене є ISP під керуванням Sql Server 2008 з IIS7.

Хтось знає про гарну прогулянку, показуючи, як я можу писати C # за допомогою WCF, щоб викрити просторові таблиці, що відповідають певним специфікаціям (в ідеалі ESRI)?

Хтось знає, де знаходиться специфікація ESRI?

Відповіді:



8

Я просто використав посилання, яку Джейсон розмістив вище. Я не можу уявити, коли його випустять, офіційна специфіка буде значно іншою. Це були здебільшого закручені рукава, запустили Fiddler, потрапили на 10.0 зразки серверів і почали хакнути на реалізацію. Немає нічого, що неможливо, просто нудно з великою кількістю дрібних питань, які потрібно врахувати. Ми навіть не зробимо нашу на 100% сумісною, але вона охоплює 85%, і всі клієнтські apis, здається, працюють досить добре (це була єдина причина, що я це зробив для початку)

ось демонстраційний каталог (багато маленьких помилок там :) [bFlood - видалено старе посилання]

ми запускаємо його на AppEngine (python) і його досить щільно поєднується з базовими просторовими структурами, але це, ймовірно, може бути перетворене на гідний проект .Net WCF. Не впевнений, як би ми його розповсюдили

ура ура Брайана

Оновлення - 3/8/12 - Я щойно побачив, як ця публікація спливає в stackexchange, тому я зрозуміла, що буду оновити вміст. Якщо ви спробуйте бета-версію Arc2Earth Sync, ви можете запустити свою функцію FeatureService за лічені хвилини. бекенд працює з Google Fusion Tables та CartoDB, але ми незабаром будемо підтримувати інших постачальників. Вам не потрібно нічого, крім ArcView 9.2 або новішої ...

ось повідомлення в блозі, де показано, як почати збирати дані на місцях за лічені хвилини за допомогою мобільних додатків ArcGIS.com: http://www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-data-collection-in-5 -хвилини /


2
Брайан Флуд? Кірк Куйкендалл? Наче цілий гурт форумів ESRI знову знову разом!
Себастьян Добрий

Гей, Брайан, чудово від тебе почути. Я сподіваюся, що щедрість спокусить когось зробити саме те, що ви описали ви та Джейсон, та опублікувати їх результати десь, як кодеплекс. Якщо ні, то, можливо, я пошкодую це. @Sebastian, приємно бачити вас і тут!
Кірк Куйкендалл

2
@kirk - так, я б очікував, що проект громади запуститься в якийсь момент. Це повинно бути досить гнучким, щоб дозволити декілька просторових перешкод, можливо, архітектура плагінів, щоб підключити будь-яку провайдеру версію карт / шарів / функцій (наприклад, sql azure, postgis, геосервер, mapguide тощо) @Sebastian - так, форуми ESRI з пошук, який насправді працює. ура!
bFlood

7

Єдина документація, про яку я знаю для REST API від esri, - це їх онлайн-допомога тут:

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

Це написано більше з точки зору споживача, ніж постачальника, але його слід зламати.

Є частини цього API, які є досить власницькими (деякі вихідні формати ) і неможливо реалізувати проектом з відкритим кодом, якщо ці специфікації формату також не будуть доступні.

Крім того, деякі API REST не особливо RESTful. Наприклад, подивіться службу функцій. Здається, є окремі "кінцеві точки" для додавання / оновлення / видалення / запиту замість використання стандартних дієслів HTTP для роботи з ресурсами. Це спантеличує мене; Я знаю, що в Есрі є кілька досить розумних людей, які розуміють REST. Я здогадуюсь, що ці дзвінки прив’язуються до якогось SOAP-інтерфейсу, і Есрі вважає, що їм та їхнім клієнтам буде легше, якщо вони підтримуватимуть послідовність між ними.

Моя думка? Якщо ви дивитесь лише на обмін даними (а не на конфігурацію карти, метадані тощо) і не поспішаєте, можливо, вам буде краще почекати, поки Microsoft з'ясує, як вони представлятимуть просторові типи даних у EDM. Маючи це на місці, ви можете легко створити справді RESTful доступ до своїх просторових таблиць, використовуючи OData та, можливо, ODAta з підтримкою RIA. Це може бути пиріг в небі для всіх я знаю, хоча.


Дякую, Джейсон. Це хороший момент щодо фірмових форматів виводу. Перший прохід я просто хочу json, html та зображення. В ідеалі, мені хотілося б проект C #, який використовує WCF WebHttp Services у .NET 4 для отримання даних із Sql Server 2008 та повернення у формі, яку може перетравити будь-який із веб-SDK ESRI.
Кірк Куйкендалл

Ах, вибачте, так. Я пропустив підтекст, який ви шукали для обслуговування клієнтського програмного забезпечення esri. Абсолютно має сенс спробувати впровадити API в цьому випадку
JasonBirch

2

Чи шукаєте ви розкриття просторових таблиць з просторового SQL Server 2008? ESRI MapIt це вже робить, і я вважаю, що ліцензування дозволяє тим, хто має AGS, мати доступ до ESRI MapIt.

Деякі екрани того, як це виглядає, можна знайти в моєму блозі: http://geo.geek.nz/development/hiding-databases-from-unauthorised-users-when-using-esri-mapit/

Не потрібно щось писати самостійно? ;)

Ура


Ей, Jithen, чи обговорюється Служба просторових даних у цьому PDF ( esri.com/library/brochures/pdfs/esri-mapit.pdf ), використовуючи ESRI REST API, послуги WCF чи щось зовсім інше? Я здогадуюсь, що MapIt не є безкоштовним, якщо ви не використовуєте AGS; якщо так, то громаді було б вигідно розробити щось, що відкривало б ESRI REST API безпосередньо з MS SQL Server Spatial без додаткових витрат, особливо для невеликих додатків, які могли б працювати з SQL Express.
JasonBirch

Привіт Jithen - я завантажив пробну версію MapIT о 1,0 та мені в той час мені потрібно було встановити її на тій же машині, де працює IIS. Мій провайдер цього не дозволяє. Крім того, я не міг запустити MapIT на сервер розробників, а потім розгорнути веб-сайт на виробничому сервері - він повинен працювати на виробничому сервері. Може, це змінилося?
Кірк Куйкендалл

1
@JasonBirch Привіт, Джейсоне, SDS - це окрема реалізація в порівнянні з API REST, але надає аналогічний інтерфейс, що надає вам можливість запускати запити проти простору SQL Server. Приклад запиту: ім'я сервера / SDS / бази даних / пісочниця / dbo.PostcodeBoundaries /… Відповідь може прочитати будь-хто, якщо API. ESRI MapIt має ряд ключових і корисних функцій. Наприклад, на ходу проекції та завантажувач даних, про які писати не варто.
джирітіх

@Kirk Привіт Кірк, 1.1. включає в себе ряд нових функцій, які в основному є вдосконаленнями для завантажувача, а також можливість легко розгортати SDS. Тепер також включена підтримка Azure. MapIt просто потребує IIS та можливість спілкуватися зі своїм SQL сервером. Насправді це дуже просто налаштувати та запустити, але, як уже згадувалося, це можливість розгортання в лазурі зараз із безголовим інтерфейсом, тому це може допомогти вам. Ура
джирітех

2

Я це зробив уже в додатку. Я не повністю реалізував повну версію програми REST, але достатньо, щоб отримати завдання запиту, щоб правильно запустити та відформатувати JSON. Я використовував ASP .NET MVC для створення своєї кінцевої точки. Я намагався робити це близько року тому з WCF, і вихід JSON не був відформатований таким чином для роботи. Трюк з MVC полягає в тому, щоб переконатися, що у вас є результат JSONP, який виведе параметр запиту зворотного виклику і зробить правильну відповідь jsonp. Я спробую щось опублікувати. Ви можете подивитися на відповідь тут:

http://www.ci.austin.tx.us/GIS/TrafficViewer/Home/JsonpIncidents/query?f=json&where=1%3D1&returnGeometry=true&spatialRel=esriSpatialRelIntersects&outFields= * & outSR = 4326 & зворотний виклик = dojo.io.script.jsonp_dojoIoScript2._jsonpCallback

Однак використовується лише параметр зворотного виклику:

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

Редагувати: Ось як реалізувати результат JSONP в ASP .NET MVC

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

Редагувати №2: Ось приклад коду, який я швидко створив і розмістив у Dropbox.

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


1

Здається, ви можете просто замінити функціональність ArcGIS, роблячи це. Я рекомендую використовувати існуючий проект з відкритим кодом для реалізації такої системи, якщо стане доступним, який підтримує цей API, можливо, напишіть вам власний адаптер для проекту з відкритим кодом. Можливо, така існує, але я ще не дуже важко виглядав. Я не впевнений, що вони ще випустили повну специфікацію API, але якщо ви поспішаєте, ви можете просто скористатися наявною документацією API і протестувати свою реалізацію на існуючому програмному забезпеченні ESRI.


Спасибі Денді, я думаю, врешті-решт буде проект із відкритим кодом. Мені здається дивним, що ESRI оголосив би це, але не надав посилання на специфікацію. Я навіть не впевнений, як виглядатиме специфікація REST API. Лише приклад специфікації разом із зразками коду, що показує, як можна було б реалізувати її (за допомогою .NET).
Кірк Куйкендалл

Я пам’ятаю деякий ажіотаж, який розповсюджувався на відкритій системі FGDB, але я думаю, що вони лише відкрили для нього API коду, а не публікували специфікацію. Я б не сподівався на ваші сподівання, але ви повинні мати можливість легко реалізовувати щось лише за допомогою споживчої документації, як також сказав @JasonBirch.
Денді



-1

@JasonBirch - я думаю, що головна нічия навіть для цього - це можливість інтегруватися з програмами esri / apis / arcgis.com. Якщо esri витягує плагін за допомогою цих дешево (безкоштовно), це стає набагато менш важливим. Мені незрозуміло, що вони планують робити з ArcGIS.com і навіть як це зараз ліцензовано. Я бачив це як центральне місце для даних / послуг, де можна було зареєструвати веб-додатки, щось на зразок програми для даних esri. Треті сторони реєструють багатокористувацькі веб-програми (хмара), програма esri скорочується, і ваш додаток миттєво доступний для всіх користувачів, сумісних з рештою api. у цьому світлі має сенс відкрити решту api та дозволити якомога більше сервісів інтегруватися з концентратором. пошук / зберігання геопросторових даних швидко на шляху до товарної реклами, тому пересуньте її вгору і спробуйте контролювати простір додатків.

Я думаю, що ваш коментар OData має заслугу, але IMO, це шляхи. і що ще важливіше, без широко розповсюдженого та улюбленого додатку для клієнтів (щось із Google Планета Земля) будь-яка добре написана специфіка має потенціал в’янення лози. Не кажучи про те, що це стосується OData, там багато MS розробників, які отримають цю проводку безкоштовно в VS, але я не бачу цього в короткостроковій перспективі. мої 2 копійки ...

(До речі, здається, що коментар досить короткий, звідси нова відповідь)


1
Так, цей сайт навмисно розроблений, щоб уникнути обговорення :) FYI, Харіс і я працюємо над тим, щоб OData працював з GeoREST (він працює, я нуджу. Геометрія в рядках з розширеним атрибутом, що вказує на тип (KML / GML / GeoJSON).
JasonBirch

це звучить дуже цікаво, чи є інформація в Інтернеті?
bFlood

ще немає, але хотів би поговорити про це. Ми вже кілька разів
переосмислювали

а-а-а, добре @JasonBirch це (треба було це здогадатися). давайте, безумовно, поговоримо, я хотів би повісити підтримку OData на хмарах A2E (до тих пір, поки існує здоровий метод обробки геометрії, але тепер, коли я знаю, що ви і Харіс у цьому випадку, ми всі хороші!)
bFlood
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.