ArcGIS API For JavaScript支持在Web上编辑地理数据。基于Web的编辑允许一组人在您的数据上进行添加与删除,这些人包括现场工作人员、公司其他部门的分析员,或者甚至是一群受人欢迎的志愿者,他们可以通过简单的编辑界面为您的数据做出有价值的贡献。

    API包含帮助您向应用程序添加编辑功能的小部件。您可以在地图和Web应用程序中进行一些设计工作,以简化编辑时的终端用户体验。例如,您可以在ArcGIS 10中预定义一组要素模板,以使用户更容易添加确切类型的相同要素。您还可以限制可以添加的属性,并在下拉列表中添加一些可用的属性选项,以方便准确、统一的数据输入。作为Web编辑应用程序的设计人员,您可以完全掌控您向用户呈现的编辑体验的难易程度。

    Web编辑需要对feature service(要素服务)进行初始设置,以公开一个图层的要素的几何信息和属性信息。此外,geometry services(几何服务)也可以用来完成一些Web编辑任务,例如,为了使用主编辑部件,您必须有一个正在运行的geometry services。

1、使用ArcGIS Web API里的编辑功能能做什么?

    ArcGIS Web API提供了简单的要素编辑,要素可能来自注册的数据库或者来自ArcGIS Online 、Portal for ArcGIS的托管要素服务。

    使用Web API 编辑数据时,您可以添加、删除、移动、剪切、合并和重塑要素,还可以编辑要素的属性。如果您试图与其他人同时修改相同的要素,那么,最后进行的编辑内容将被提交到数据库。

    对于某些Web编辑工作流,最好让让分析师使用 ArcGIS Desktop定期检查编辑内容以验证数据完整性。虽然编辑小部件可以执行某些数据验证,但其他任务(如拓扑验证)不能在Web上执行。

2、如何向应用程序添加编辑功能?

    ArcGIS API for JavaScript提供了小部件以使您更容易将编辑功能添加到您的Web应用程序中。

    以下是一些相关的小部件:

Editor widget

    如果您想快速入门,或者您只想使用API中包含的默认编辑接口,那么可以使用Editor widget,Editor widget结合其他小部件的功能来提供编辑图层所需的一切。您可以选择小部件上可用的工具的数量和类型。

    Editor widget在编辑完成后立即保存所编辑的要素。例如,一旦绘制完多边形,该多边形就被保存。如果您决定不使用Editor widget,则必须自行确定何时和多久要应用编辑。

如果您不使用Editor widget,那么您需要编写自己的编辑体验。但是,您仍然可以利用Template Picker、Attribute Inspector和Attachment Editor小部件来帮助您。

Template Picker

    Template Picker显示一组预先配置的、用户可以创建的要素的模板。Template Picker是一种很好的方法,可以公开预配置的要素类型,以便于编辑和质量控制。Template Picker中可见的symbol可以来自您在要素服务地图中定义的编辑模板,也可以是您在应用程序中定义的一组symbol。

    Editor wdiget中包含一个Template Picker。Template Picker可用作为地图的简单图例使用。单击此处查看使用Template Picker显示地图图例的示例。

Attribute Inspector

    当您使属性可用在Web上进行编辑时,您需要为用户提供一个编辑属性的界面,并且您必须确保它们输入的数据是有效的。Attribute Inspector可以帮助您完成这两个任务。

    Attribute Inspector 通过您的要素图层读取可用的属性字段,并提供一个用户界面以方便地更新这些字段。它还能验证输入到字段中的数据,确保输入的数据与预期的数据类型相匹配。例如,如果将数值值域应用于一个字段,则允许的值出现在下拉列表中,从而限制输入其他值的可能;如果一个字段需要日期值,则会出现日历,帮助用户提供有效日期。

    Attribute Inspector公开图层中的所有可用属性以供编辑。如果要限制可用属性,则必须编写自己的接口以供数据输入和数据验证。

    Editor widget包含了一个Attribute Inspector。

Attachment Editor

    在某些情况下,您可能希望将可下载的文件与要素关联起来。例如,您可能希望用户单击表示某一房地产的要素,然后看到一个指向契据标题的PDF文件的链接。在ArcGIS WebAPI中,这样的相关可下载文件被称为要素附件。

    Attachment Editor是帮助用户上传和查看要素附件的小部件。Attachment Editor包含了一系列当前附件,浏览器的按钮可以被用于添加更多附件。Attachment Editor放在info window中可以良好工作运行,但也可以放在页面的其他地方。

    为了使用要素附件,必须在要素类上启用附件。您可以在ArcCatalog中启用某个要素类的附件,如果Editor widget检测到附件启用,它将包含一个Attachment Editor。

3、编辑是如何工作的?

    ArcGIS Web API通过要素服务进行编辑,要素服务是ArcGIS 10提供的一种新型服务。编辑工作流也可以利用几何服务。

要素服务所扮演的角色

    Web编辑需要一个要素服务来提供要素的符号和几何。要素服务只是一个具有要素访问能力的地图服务,该要素访问能力允许地图服务公开要素的几何和它们的符号以便于Web应用程序的使用和更新。

    在构建Web编辑应用程序之前,您需要创建一个要素服务公开您想要编辑的图层。这包括设置一个地图文档,并可选择地为编辑定义一些模板,模板允许您预先配置一些常用要素类型的符号和属性。例如,为了准备编辑道路,您可以为“控制进出的高速公路”、“其他分隔公路”、”州公路“和”本地公路“配置模板。模板是可选的,但它们使应用程序的终端用户很容易创建共同的要素。

    一旦您的地图完成,您需要将其发布到具有访问要素能力的ArcGIS Server上,这将创建地图服务和要素服务,且同时创建它们的REST URL和端点。您将使用这些URL在您的应用程序中引用这些服务。

    在Web API中,要素服务可以通过一种称为feature layer(要素图层)的新类型图层来访问。feature layer可以做各种事情,可以引用地图服务或要素服务。但是,当您使用feature layer进行编辑时,您需要引用一个要素服务。

    编辑时,您的Web 应用程序告诉feature layer哪些属性已经更改以及几何图形是如何变化的。feature layer还会在编辑后显示更新的要素,您可以在feaute layer上调用applyEdits方法来应用这些编辑,然后将它们提交到数据库中。

几何服务所扮演的角色

    ArcGIS Server的几何服务帮助执行常见的编辑操作,如创建、剪切和重塑地理要素。在使用Editor widget之前,您需要在ArcGIS Server上创建一个几何服务,然后,当您创建该小部件时,您必须提供几何服务的URL。小部件在幕后使用该服务,您将不必自己调用几何服务上的方法,除非您决定不使用该小部件。

    如果您决定不使用Editor widget,您仍然可以使用几何服务来帮助您编写自己的编辑工具。几何服务还可以帮助您验证数据,例如,您可以使用几何服务对编辑执行检查,诸如,”不能在此框外编辑“,或者”多边形边界不能互相交叉“。(Editor widget小部件在将几何图形提交到数据库之前,实际上调用了几何服务的Simplify()方法)。尽管ArcGIS拓扑验证无法通过Editor widget或者与编辑相关的类实现,但几何服务可以通过这些类型的数据完整性检查帮助您获得类似的结果。

4、编辑工具条(The Edit toolbar)

    Edit toolbar是一个类,它帮助您编写vertices和graphic的放置和移动。这在不使用Editor widget的情况下非常有用,您需要编写自己的编辑逻辑,尤其是客户端的显示行为。与其他工具条(Draw和Navigation)一样,Edit toolbar不是用户界面工具条,相反,它是一个帮助类,它可以更容易地编写一些常见的相关功能。

5、设计您的编辑体验

    当您在构建Web编辑应用程序时,重要的是要考虑谁将使用应用程序以及他们需要做什么。您应该为用户提供不少于他们所需的工具。在大多数情况下,您可以通过组合API中包含的编辑小部件为用户设计适合的编辑体验。请记住,尽管API包括一个全面的Editor widget来帮助您开始,但是这个特定的小部件可能不是最适合您的方案。

    在某些方面,已经为您简化了API的编辑体验。小部件不包括用于启动和停止编辑会话以及保存编辑的按钮,您可以可选地提供这些功能,但大多数应用程序不是一定需要。

    考虑以下设计Web编辑应用程序的方法,每种方法都有它自己的优点和最适合的应用类型。

要素草图

    在这种类型的应用程序中,现场分析人员需要在地图上绘制简单的事件或想法,并添加关联的注释。鸟瞰、设想的路径或提议的荒野区域,所有这些类型的要素都可以在这种应用程序中描绘出来。在这种场景中,易用和直观地在地图上绘制比更高的几何精度更重要。

    在构建要素草图应用程序时,您可以使用Template Picker来限制用户可以绘制的要素类型。Attribute Inspector也很有用,它允许编辑器添加注释,无论是在边面板中,还是在要素被选中时出现的info window中。分割和合并要素、在X/Y位置添加点、抓取或上传要素附件的这些选项可能会使应用程序混乱,所以,除非绝对需要,否则应该避免。

    单击此处查看演示如何构建要素草图应用程序的示例。

仅仅编辑属性

    一些编辑应用程序包括地图组件,但不需要任何地理要素的改变。例如,您可能希望创建Web应用程序,允许任何办公室职员编辑数据库中的包裹要素的属性,您希望阻止它们编辑几何图形,将该任务留给您的GIS分析器。在这种情况下,您可以在应用程序中包含一张地图,但编辑功能只含有Attribute Inspector。一次简单的对地图上一个包裹的点击将显示可以编辑的属性。您不需要包括任何按钮或小部件来创建、删除或重塑要素。

    单击此处查看演示如何构建属性编辑应用程序的示例。

公民参与,或者geo-wiki

    这是要素草图场景的变体。在这种场景下,公民可以成为编辑者,通过在地图上放置点(包括照片或者简短描述等辅助信息),向政府机构报告问题。

    这种应用程序的用户甚至不知道它们正在编辑GIS数据,只允许他们使用在Template Picker中预定义的事件类型要素向数据库中添加点要素。公民可以通过Attachment Inspector上传事件图像的附件。属性编辑可能被限制到非常有限的程度,以便公民能够描述事件。

    在这种类型的应用程序中,您可能需要编写一些安全检查代码,以确保用户只能编辑或删除自己的事件。您还可以设计定期清除数据库的逻辑程序以及允许通过身份验证的用户的子集关闭或删除事件。

    单击此处查看演示如何构建公民参与的应用程序的示例。