Как я могу реализовать ESRI REST API?

24

ESRI объявила о выпуске ArcGIS REST API в качестве открытой технологии . У меня есть провайдер, работающий на Sql Server 2008 с IIS7.

Кто-нибудь знает хороший пример, показывающий, как я могу написать C #, используя WCF для представления пространственных таблиц, соответствующих определенной спецификации (в идеале ESRI)?

Кто-нибудь знает, где находится спецификация ESRI?

Кирк Куйкендалл
источник

Ответы:

8

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

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

мы запускаем его на AppEngine (python), и он довольно тесно связан с базовыми пространственными структурами, но, вероятно, его можно превратить в достойный .Net WCF-проект. Не уверен, как мы будем распространять его, хотя

ура Брайан

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

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

bFlood
источник
2
Брайан Флад? Кирк Куйкендалл? Как будто вся группа на форумах ESRI снова собралась вместе!
Себастьян Гуд
Эй, Брайан, рад тебя слышать. Я надеюсь, что щедрость соблазнит кого-то сделать именно то, что вы с Джейсоном описали, и опубликовать свои результаты где-нибудь, как кодекс. Если нет, может быть, я возьму на себя трещину. @ Себастьян, рад тебя видеть здесь!
Кирк Куйкендалл
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, и Esri считает, что им и их клиентам будет легче, если они будут поддерживать согласованность между ними.

Мое мнение? Если вы смотрите только на совместное использование данных (а не на конфигурацию карты, метаданные и т. Д.) И не спешите, вам лучше подождать, пока Microsoft не выяснит, как они будут представлять пространственные типы данных в EDM. Имея это в виду, вы можете легко создать действительно RESTful доступ к вашим пространственным таблицам, используя OData и, возможно, OData с поддержкой Rata. Хотя, может быть, это все-таки пирог в небе, насколько я знаю.

JasonBirch
источник
Спасибо Джейсон. Это хороший момент о проприетарных форматах вывода. Первый проход, я просто хочу json, html и изображение. В идеале мне нужен проект C #, который использует WCF WebHttp Services в .NET 4 для извлечения данных из Sql Server 2008 и возврата в форме, которую может переварить любой из веб-SDK ESRI.
Кирк Кайкендалл
Ах, прости, да. Я пропустил подтекст, который вы искали для обслуживания клиентского программного обеспечения Esri. Абсолютно имеет смысл попытаться реализовать API в этом случае
JasonBirch
2

Вы смотрите на экспонирование пространственных таблиц из SQL Server 2008 Spatial? ESRI MapIt уже делает это, и я считаю, что лицензирование позволяет лицам с AGS иметь доступ к ESRI MapIt.

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

Не нужно что-то писать самостоятельно? ;)

ура

jiriteach
источник
Привет, Джитен, обсуждается ли Служба пространственных данных в этом PDF-документе ( esri.com/library/brochures/pdfs/esri-mapit.pdf ) с использованием ESRI REST API, служб WCF или чего-то совершенно другого? Я предполагаю, что MapIt не является бесплатным, если вы не используете AGS; если это так, то для сообщества было бы полезно разработать что-то, что предоставило бы API-интерфейс REST ESRI напрямую из MS SQL Server Spatial без дополнительных затрат, особенно для небольших приложений, которые могли бы работать на SQL Express.
JasonBirch
Привет, Jithen - я скачал пробную версию MapIT на 1.0 и в то время мне нужно было установить ее на ту же машину, где работает IIS. Мой провайдер не позволяет этого. Также я не смог запустить MapIT на сервере разработки, а затем развернуть веб-сайт на рабочем сервере - он должен быть запущен на рабочем сервере. Может быть, это изменилось?
Кирк Кайкендалл
1
@JasonBirch Привет, Джейсон, SDS - это отдельная реализация от реализации REST API, но предоставляет аналогичный интерфейс, предоставляющий вам возможность выполнять запросы к SQL Server Spatial. Пример запроса: имя_сервера / SDS / database / sandbox / dbo.PostcodeBoundaries /… Ответ может быть прочитан любым API-интерфейсом. ESRI MapIt имеет ряд ключевых и полезных функций. Например, на лету проекция и загрузчик данных, который не стоит писать.
jiriteach
@ Кирк Привет Кирк, 1.1. включает в себя ряд новых функций, которые в основном улучшают загрузчик, а также позволяют легко развертывать SDS. Поддержка Azure теперь также включена. MapIt просто нужен IIS и возможность общаться с вашим SQL Server. Его на самом деле очень легко настроить и запустить, но, как уже упоминалось, теперь это возможность развертывания в Azure с помощью автономного интерфейса, так что это может вам помочь. Приветствия
jiriteach
2

Я сделал это уже в приложении. Я не полностью реализовал полный API 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 & callback_j.jpg.jp.jpg.jp.jp.jp.jp.jp.jpg.jp.jp.jp.jp.jpg.jp.

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

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 apps / apis / arcgis.com. Если esri отключает их, используя их дешево (бесплатно), это становится гораздо менее важным. Мне неясно, что они планируют делать с ArcGIS.com и даже как это лицензируется прямо сейчас. Я видел его как центральное место для данных / сервисов, где можно было бы зарегистрировать веб-приложения, что-то вроде магазина приложений для данных esri. Сторонние поставщики регистрируют мультитенантные веб-приложения (облачные), esri делает ставку, и ваше приложение мгновенно становится доступным для всех пользователей, совместимых со спецификацией остальных API. В этом свете имеет смысл открыть остальные API и разрешить интеграцию как можно большего количества сервисов с концентратором. Поиск / хранение геопространственных данных быстро приближается к коммерциализации, поэтому поднимите их на ступеньку выше и попытайтесь контролировать пространство приложения.

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

(кстати, кажется, что длина комментария довольно короткая, поэтому вместо него новый ответ)

bFlood
источник
1
Да, этот сайт специально разработан для того, чтобы избежать обсуждения :) К вашему сведению, Харис и я работаем над тем, чтобы заставить OData работать с GeoREST (он работает, я ною. Геометрия в строках с расширенным атрибутом, указывающим тип (KML / GML / GeoJSON).
JasonBirch
это звучит очень интересно, есть ли информация в Интернете?
bFlood
пока нет, но хотелось бы поговорить об этом. Мы уже несколько раз думали об этом :) Кстати, если включить мое @username, я получу уведомления об ответе :)
JasonBirch
аааа, хорошо @JasonBirch это так (следовало бы догадаться). давайте определенно поговорим, я бы хотел повесить поддержку OData на облака A2E (пока есть здравый метод для работы с геометрией, но теперь, когда я знаю, что вы и Харис готовы, у нас все хорошо!)
bFlood