ESRI宣布他们将发布ArcGIS REST API作为开放技术。我有一个使用IIS7运行Sql Server 2008的ISP。
有谁知道如何演示如何使用WCF编写C#来公开符合特定规范(理想情况下为ESRI)的空间表?
有人知道ESRI的规格在哪里吗?
ESRI宣布他们将发布ArcGIS REST API作为开放技术。我有一个使用IIS7运行Sql Server 2008的ISP。
有谁知道如何演示如何使用WCF编写C#来公开符合特定规范(理想情况下为ESRI)的空间表?
有人知道ESRI的规格在哪里吗?
Answers:
看来ESRI刚刚发布了他们的GeoServices REST规范。我相信这就是您想要的。
我只是使用了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 -分钟/
我所知道的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访问。就我所知,这也许是天上掉下来的事。
您是否正在考虑从SQL Server 2008 Spatial公开空间表?ESRI MapIt已经做到了这一点,我相信许可允许拥有AGS的人员访问ESRI MapIt。
在我的博客上可以找到一些类似的屏幕:http : //geo.geek.nz/development/hiding-databases-from-unauthorized-users-when-using-esri-mapit/
不需要自己写点东西吗?;)
干杯
我已经在应用程序中完成了此操作。我没有完全实现完整的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
听起来您可能最终会取代ArcGIS的功能。如果可以使用支持该API的系统,我建议利用现有的开放源代码项目来实现这样的系统,或者为开放源代码项目编写您自己的适配器。也许存在,但我还没有看起来很努力。我不确定他们是否已经发布了完整的API规范,但是如果您急着需要,可以使用现有的API文档并针对现有的ESRI软件测试实现。
@JasonBirch-我认为这样做的主要吸引力在于能够与esri apps / apis / arcgis.com集成。如果esri便宜地(免费)使用这些插件,它将变得不那么重要。我不清楚他们打算如何使用ArcGIS.com,甚至目前还没有获得许可。我将其视为可以注册Web应用程序的数据/服务的中心位置,类似于esri数据的应用商店。第三方注册多租户网络(云)应用程序,esri获减价,并且您的应用程序可立即供所有与其余api规范兼容的用户使用。因此,打开其余的api并允许尽可能多的服务与集线器集成是有意义的。地理空间数据搜索/存储正迅速走向商品化,因此将其提升一个档次并尝试控制应用程序空间。
我认为您的OData评论值得考虑,但是IMO,这是个不错的选择。更重要的是,如果没有广泛分布且广受欢迎的客户端应用程序(例如Google Earth),任何写得很好的规范都有可能在葡萄树上枯萎。并不是说OData就是这种情况,有很多MS开发人员可以在VS中免费进行此连接,但短期内我看不到。我的两分钱
(顺便说一句,评论的长度似乎很短,因此改为新的答案)