如何实现ESRI REST API?


Answers:



8

我只是使用了Jason在上面发布的链接。我无法想象它发布时的正式规格会大不相同。它主要是袖手旁观,启动Fiddler,使用10.0示例服务器,然后开始着手实施。没有什么是不可能的,只是乏味而又要考虑很多小问题。我们甚至不会使我们的产品100%兼容,但是它涵盖了85%,并且所有客户端api似乎都运行良好(这是我这样做的唯一原因)

这是一个演示目录(其中有很多小错误:) [bFlood-删除了旧链接]

我们正在AppEngine(python)上运行它,它与底层的空间结构紧密结合在一起,但可能可以做成一个不错的.Net WCF项目。不确定我们如何分配它

干杯布赖恩

更新-2012年3月8日-我刚刚看到此帖子在stackexchange中弹出,所以我认为我会更新内容。如果您试用了Arc2Earth Sync beta版,则可以在数分钟内运行FeatureService。后端可与Google Fusion Tables和CartoDB配合使用,但我们很快就会支持其他提供商。除了ArcView 9.2或更高版本,您不需要任何其他东西。

这是一篇博客文章,展示了如何使用ArcGIS.com移动应用程序在几分钟内开始收集现场数据:http : //www.arc2earth.com/2012/03/arc2earth-sync-live-mobile-mobile-data-collection-in-5 -分钟/


2
Brian Flood?柯克·库肯达尔(Kirk Kuykendall)?就像整个ESRI论坛乐队又回来了!
塞巴斯蒂安·佳德2010年

嗨,布莱恩,很高兴收到您的来信。我希望这笔赏金会诱使某人完全按照您和Jason的描述去做,并将其结果发布在诸如Codeplex之类的地方。如果没有,也许我会努力解决。@Sebastian,也很高兴在这里见到你!
Kirk Kuykendall,2010年

2
@kirk-是的,我希望某个社区项目在某个时候启动。它需要足够灵活以允许多个空间后端,可能是插件体系结构,以连接任何提供程序版本的地图/图层/功能(例如sql azure,postgis,geoserver,mapguide等)@Sebastian-是的,ESRI论坛实际有效的搜索。干杯!
bFlood 2010年

7

我所知道的esri REST API的唯一文档是在其联机帮助中:

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

这是从消费者的角度而不是提供者的角度写的,但是应该是可入侵的。

该API的某些部分是非常专有的(某些输出格式),并且除非这些格式规范可用,否则开源项目无法实现。

同样,某些REST API并不是特别的RESTful。例如,查看要素服务。对于添加/更新/删除/查询,似乎有单独的“端点”,而不是使用标准的HTTP动词对资源进行操作。这使我感到困惑;我知道esri那里有一些相当聪明的人,他们了解REST。我的猜测是,这些调用映射到某种SOAP接口,并且esri认为,如果他们和他们的客户之间保持一致,那将更加容易。

我的意见?如果您只是在共享数据(而不是地图配置,元数据等),而又不着急,最好等到Microsoft弄清楚它们将如何在EDM中表示空间数据类型时再进行。有了这个功能,您就可以使用OData以及当时启用了RIA的OData轻松地创建对空间表的真正RESTful访问。就我所知,这也许是天上掉下来的事。


谢谢杰森。关于专有输出格式,这是一个很好的观点。首先,我只想要json,html和图像。理想情况下,我想要的是一个C.项目,该项目使用.NET 4中的WCF WebHttp Services从Sql Server 2008中获取数据,并以ESRI的任何Web SDK都可以消化的形式返回。
Kirk Kuykendall,2010年

啊,对不起,是的。我错过了您要为esri客户端软件提供服务的潜台词。在这种情况下尝试实现API绝对有意义
JasonBirch

2

您是否正在考虑从SQL Server 2008 Spatial公开空间表?ESRI MapIt已经做到了这一点,我相信许可允许拥有AGS的人员访问ESRI MapIt。

在我的博客上可以找到一些类似的屏幕:http : //geo.geek.nz/development/hiding-databases-from-unauthorized-users-when-using-esri-mapit/

不需要自己写点东西吗?;)

干杯


嘿,吉森,这个PDF(esri.com/library/brochures/pdfs/esri-mapit.pdf)中讨论的空间数据服务是使用ESRI REST API,WCF服务还是完全不同的东西?我猜想如果您不运行AGS,则MapIt是非免费的;如果是这样,对社区来说,开发一些可以直接从MS SQL Server Spatial公开ESRI REST API的东西而无需支付额外费用将是有益的,尤其是对于可能运行SQL Express的小型应用程序。
JasonBirch 2010年

Jithen大家好:我以1.0的价格下载了MapIT的试用版,当时我需要将其安装在运行IIS的同一台计算机上。我的ISP不允许这样做。另外,我无法在开发服务器上运行MapIT,然后将网站部署到生产服务器-它必须在生产服务器上运行。也许这已经改变了?
Kirk Kuykendall,2010年

1
@JasonBirch嗨,Jason,SDS是与REST API分开的实现,但提供了类似的接口,使您能够对SQL Server Spatial运行查询。查询示例:servername / SDS / databases / sandbox / dbo.PostcodeBoundaries / ...如果API是,则任何人都可以读取响应。ESRI MapIt具有许多关键和有用的功能。例如,不值得编写的即时投影和数据加载器。
jiriteach

@Kirk Hi Kirk,1.1。包括许多新功能,这些功能主要是对加载程序的增强,同时还具有轻松部署SDS的功能。现在还包括Azure支持。MapIt仅需要IIS和与SQL Server进行通信的功能。它实际上非常易于设置和运行,但是正如前面提到的,它们现在可以通过无头UI部署到Azure中,因此这可能对您有所帮助。干杯
jiriteach 2010年

2

我已经在应用程序中完成了此操作。我没有完全实现完整的REST API,但足以使查询任务正确运行并格式化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 = dojo.io.script.jsonp_dojoIo

但是,仅使用callback参数:

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

编辑:这是如何在ASP .NET MVC中实现JSONP结果

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

编辑2:这是我快速制作并放在保管箱上的代码示例。

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


1

听起来您可能最终会取代ArcGIS的功能。如果可以使用支持该API的系统,我建议利用现有的开放源代码项目来实现这样的系统,或者为开放源代码项目编写您自己的适配器。也许存在,但我还没有看起来很努力。我不确定他们是否已经发布了完整的API规范,但是如果您急着需要,可以使用现有的API文档并针对现有的ESRI软件测试实现。


感谢Dandy,我想最终会有一个开源项目。我感到奇怪的是,ESRI宣布了这一消息,但没有提供规范的链接。我什至不确定REST API规范是什么样子。只是一个规范示例和一个代码示例,该示例演示如何实现(使用.NET),这将有所帮助。
Kirk Kuykendall,2010年

我记得有人为FGDB系统开放而大肆宣传,但我认为他们只是向其开放了代码API,而不是发布规范。我不会寄希望于您,但是您应该能够仅使用使用者文档轻松实现某些功能,如@JasonBirch所说。
丹迪



-1

@JasonBirch-我认为这样做的主要吸引力在于能够与esri apps / apis / arcgis.com集成。如果esri便宜地(免费)使用这些插件,它将变得不那么重要。我不清楚他们打算如何使用ArcGIS.com,甚至目前还没有获得许可。我将其视为可以注册Web应用程序的数据/服务的中心位置,类似于esri数据的应用商店。第三方注册多租户网络(云)应用程序,esri获减价,并且您的应用程序可立即供所有与其余api规范兼容的用户使用。因此,打开其余的api并允许尽可能多的服务与集线器集成是有意义的。地理空间数据搜索/存储正迅速走向商品化,因此将其提升一个档次并尝试控制应用程序空间。

我认为您的OData评论值得考虑,但是IMO,这是个不错的选择。更重要的是,如果没有广泛分布且广受欢迎的客户端应用程序(例如Google Earth),任何写得很好的规范都有可能在葡萄树上枯萎。并不是说OData就是这种情况,有很多MS开发人员可以在VS中免费进行此连接,但短期内我看不到。我的两分钱

(顺便说一句,评论的长度似乎很短,因此改为新的答案)


1
是的,该网站的设计旨在避免讨论:)仅供参考,FYI,Haris和我正在努力使OData与GeoREST一起使用(他正在工作,我正在na。具有扩展属性(类型为KML / GML / GeoJSON)的字符串中的几何。
JasonBirch'8

听起来真的很有趣,在线上有信息吗?
bFlood 2010年

还没有,但是很想聊聊。我们已经考虑了好几次了:)顺便说一句,如果包括我的@username,我会收到响应通知:)
JasonBirch 2010年

嗯,好吧,@ JasonBirch(应该猜对了)。我们绝对可以聊天,我很想在A2E云上停止OData支持(只要有一种处理几何的理智方法,但是现在我知道你和
哈里斯在一起
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.