发布要素服务

在本教程中,您将在 ArcGIS Online 中创建托管要素图层以显示得克萨斯州近乎实时的水库数据。 首先,下载德克萨斯州水库的数据。 接下来,使用此信息来发布托管要素图层并为其配置视图。 配置 Python 脚本以更新要素图层,并设置 Windows 任务来运行该脚本。 随着继续获得可用新数据,Texas reservoirs 数据要素图层将被覆盖,因此基于要素视图的所有网络地图都将始终显示最新信息。

访问德克萨斯州近乎实时的水库数据

首先,从“Water Data for Texas”网站上访问水库信息。 然后,以 GeoJSON 格式下载数据并将其存储在本地。

  1. 在浏览器中,转到 Water Data for Texas 网站。 向下滚动并在 Statewide Conservation Storage 图表下方单击 Recent Averaged Storage Conditions,然后单击 GeoJSON

    下载 Recent Averaged Storage Conditions 的 GeoJSON 文件

    该网站将您重定向到 https://www.waterdatafortexas.org/reservoirs/statewide/recent-conditions.geojson,其中包含德克萨斯州近乎实时的水库数据。 这是 GeoJSON 文件。 对于德克萨斯州的每个水库,它都将包含诸如位置(坐标)、名称、蓄水量、满水百分比以及最近更新时间(时间戳)之类的信息。

    Recent Averaged Storage Conditions 的 GeoJSON 格式文件

    注:
    Water Data for Texas 网站是动态的。 只要有新数据可用,网站就会经常更新。 每个水库的时间戳值所示为上次的更新时间。

  2. 在页面上单击并按 Ctrl + A 以选择近期状况页面上的所有文本,然后右键单击并单击“复制”。 您也可以按 Ctrl + C 以复制文本。

    复制近期状况的 JSON 数据

  3. 打开文本编辑器(例如 Notepad++),然后按 Ctrl + V 将文本粘贴到新文件中。
  4. 将文件保存到您的本地计算机。 在另存为窗口中,导航到计算机上的文件夹(例如 C:\Temp\),然后输入 recent-conditions.geojson 作为文件名。 对于另存为类型,选择所有文件
    注:

    Geojson 文件

    保存后,检查本地文件夹中的文件以验证文件扩展名为 .geojson 而非 .geojson.txt

将项目添加到 ArcGIS Online

您将使用德克萨斯州水库数据的本地 GeoJSON 文件在 ArcGIS Online 中创建托管要素图层。

  1. 登录到您的 ArcGIS 组织帐户
    注:

    如果您没有组织帐户,请参阅软件访问权限选项

  2. 如有必要,单击内容,然后单击我的内容

    单击内容,然后单击我的内容。

  3. 单击新建项目

    “新建项目”按钮。

  4. 将刚刚保存的 recent-conditions.geojson 文件拖动到上传窗格中。
  5. 接受默认选项以添加 recent-conditions.geojson 并创建托管要素图层,然后单击下一步
  6. 接受字段页面上的默认设置并单击下一步
  7. 新建项目窗格的下一个页面上,输入以下内容:

    • 对于标题,输入 TX_reservoirs_recent_ 并添加您的姓名或缩写。
    • 对于标签,输入 Texas, Reservoir, Recent Conditions,在输入每个标签后按 Enter 键。
    • 对于摘要,输入 Near real-time reservoir information for Texas。

  8. 单击保存

    该过程需要花费几分钟的时间。 完成后,TX_reservoirs_recent_(您的姓名)托管要素图层的概览页面随即显示。 除了此图层之外,还将 TX_reservoirs_recent GeoJSON 文件的副本添加到我的内容部分。

您访问了得克萨斯州近乎实时的水库信息,并在 ArcGIS Online 中创建了托管要素服务。 接下来,将使用要素服务来创建要素视图。 可对此要素视图进行自定义、公开共享并将其添加到您的应用中。 创建要素视图可使得在不破坏该视图配有的符号系统和弹出窗口的情况下更新要素服务。 从而简化了后续的更新数据进程。


创建托管要素图层视图

现在,您将从托管要素图层创建托管要素图层视图、公开共享该托管要素图层视图、更新其符号系统,并配置其弹出窗口。

创建托管要素图层视图

当有新信息可用时,您创建的“Texas reservoirs”托管要素图层将被覆盖。 覆盖过程将删除所有自定义的符号系统和弹出窗口设置,并将其恢复为默认设置。 为避免更改数据在 web 地图和应用程序中的显示方式,您将在 ArcGIS Online 中创建托管要素图层视图并配置其符号系统和弹出窗口设置。 这样就可以使得这些设置在要素图层被覆盖后保持不变并显示最新数据。

  1. TX_reservoirs_recent_(yourname) 要素图层的概述页面上,单击创建视图图层,并单击视图图层

    单击创建视图图层。

  2. 创建视图图层窗口的图层窗格中,默认选择 TX_reservoirs_recent_(yourname) - points 图层。 单击两次下一步

    包含的图层窗格中,可以设置图层定义。有关这些选项的详细信息,请参阅创建托管要素图层视图文档。

  3. 创建窗格中,输入以下内容:

    • 对于标题,输入 Texas Reservoirs Recent Conditions(您的姓名)
    • 对于文件夹,可以选择性地指定要保存视图图层的文件夹。
    • 对于标签,输入 Water, Texas, Reservoirs, Environment, Natural Resources, Live Feeds, livefeeds,在输入每个标签后按 Enter 键。
    • 对于摘要,您可以选择性地提供关于视图图层的附加文本。

  4. 单击创建。 创建视图后,随即出现成功弹出窗口。 关闭此窗口。

    新的托管要素图层视图项目从托管要素图层创建,新要素图层视图的项目详细信息页面随即显示。

  5. 概览页面上,单击共享,选择所有人(公共),然后单击保存

    托管要素图层视图现已公开共享,每个人都可以访问。

  6. 单击内容

    在您的我的内容页面中有三个项目:GeoJSON 文件、托管要素图层和该视图。

    “我的内容”页面中的三个项目

注:
最好使用托管要素图层视图共享托管要素图层,同时将原始托管要素图层保持为私有。 您可以更改托管要素图层视图的弹出窗口和符号系统,而无需修改原始托管要素图层。 在更新过程中,可以覆盖托管要素图层,并且新值将反映在托管要素图层视图中。 托管要素图层视图的符号系统将随其一起保存,即使原始托管要素图层被覆盖也不会受到影响。

更改符号系统

托管要素图层视图包含德克萨斯州的水库数据。 您将自定义其符号系统以更好地表示出图层中的信息,比如使用不同的要素尺寸表示水库容量以及不同颜色表示当前满水量。

  1. 单击 Texas Reservoirs Recent Conditions_(您的姓名)要素图层以打开托管要素图层视图项目页面。

    Texas Reservoirs Recent Conditions_(您的姓名)的项目页面将显示在概览选项卡上。

  2. 单击在 Map Viewer 中打开

    在 Map Viewer 中打开

  3. 如有必要,在图层窗格中单击 Texas Reservoirs Recent Conditions 图层以将其激活。
  4. 设置(浅色)工具栏中,单击样式

    单击“更改样式”。

  5. 选择属性下,单击字段按钮。

    选择 percent_full 属性。

  6. 在显示的选择字段窗口中,选择 percent_fullconservation_capacity,然后单击添加

    两个属性:percent_full 和 servation_capacity

    属性随即添加到样式窗格。

  7. percent_full 拖动到 conservation_capacity 上方。

    将 percent_full 值属性拖动到 conservation_capacity 属性上方。

  8. 选取样式下,对于颜色和大小,单击样式选项

    单击“选项”。

  9. 对于计数和数量(颜色),单击样式选项

    单击“选项”。

  10. 样式选项窗格中的直方图上,单击最小值中断,输入 50 并按 Enter 键。

    将最小值中断设置为 50。

  11. 单击符号样式下的色带。

    单击符号样式

  12. 在打开的符号样式窗格中,在填充下,单击蓝灰色色带(名为 Blue 10),然后单击确定

    单击“填充”选项卡和蓝灰色色带。

    要查看色带的名称,请指向该色带。

  13. 样式选项窗格中,单击完成
  14. 对于计数和数量(大小),单击样式选项

    单击“选项”。

  15. 单击符号样式下的符号。 在出现在轮廓颜色下的符号样式窗格中,单击编辑按钮。

    设置新的自定义颜色。

  16. 十六进制下,删除当前值并用 #283849 替换,然后按 Enter 键。
  17. 样式选项窗格中,单击完成,然后再单击完成两次。

    现在该图层的符号系统已保存。 接下来,您将配置地图并保存。

  18. 内容(深色)工具栏上,单击底图,然后单击浅灰色画布

    关闭浅灰色画布底图。

    现在该图层和底图的符号系统已设置完成。

    已设置符号系统的地图。

    最终地图显示了德克萨斯州水库的近期状况。 每个点的颜色代表每个水库的满水百分比,点的大小代表水库总容量。

配置弹出窗口

您将改进该图层的弹出窗口,使其仅显示相关信息。 您将显示每个水库的名称、容量和满水百分比。

  1. 设置工具栏中,单击弹出窗口

    设置工具栏以选择弹出窗口。

  2. 弹出窗口窗格中,展开标题,删除现有文本并单击添加字段按钮。

    添加标题按钮

    随即显示添加字段窗口。

  3. 从下拉菜单中选择 full_name

    弹出窗口标题现在将显示属性 full_name 的内容。

  4. 字段列表上,单击选项按钮,然后选择删除

    删除字段列表。

  5. 单击添加内容按钮,然后单击文本

    选择“自定义属性显示”。

    单击“配置”。

    随即显示一个文本框。

  6. 在文本框中,输入 {percent_full}% full as of {timestamp},然后单击确定

    配置自定义属性显示

    单击某一要素打开弹出窗口时,大括号中的属性字段名称将被替换为这些字段中的值。

    现在,当单击要素时,弹出窗口将显示您配置的标题和文本。

    弹出窗口示例。

    通过配置各个字段的显示方式,您仍可以改进字段的格式。

  7. 设置工具栏上,单击字段选项卡,然后单击 percent_full 字段。
  8. 显示名称更改为 Percent Full (%),并在有效位数下拉菜单中选择 0 位小数

    设置别名和小数位。

  9. 单击完成
  10. 内容工具栏上,单击保存并打开,然后单击另存为
  11. 保存地图窗口中,输入以下内容:

    • 对于标题,输入 Texas Reservoirs(您的姓名)
    • 添加标签WaterTexasReservoirs
    • 对于摘要,输入得克萨斯州水库近乎实时的地图,显示满水百分比和容量

  12. 单击地图上的某一水库。

    弹出窗口将显示该水库的名称、满水百分比以及上次更新的日期和时间。

您已经在 ArcGIS Online 中通过水库托管要素图层创建了一个托管要素图层视图。 通过该托管要素图层视图,您可以自定义德克萨斯水库图层的显示设置并保留这些自定义,即使托管要素图层被覆盖,自定义设置仍会保留。 接下来,您将使用一个简单的 Python 脚本覆盖 Texas reservoirs 托管要素图层。 更新的信息将自动反映在该托管要素图层视图中。


更新托管要素图层

现在,您将配置一个简短的脚本来覆盖 Texas reservoirs 托管要素图层。 首先,从 ArcGIS Online 下载覆盖脚本。 然后,检索托管要素图层参数,例如:项目标题和项目 ID。 最后,使用 Python 命令提示符在本地运行该脚本。 此覆盖过程使得您可以使用最新信息来更新该托管要素图层。

下载覆盖脚本

首先,下载脚本以覆盖 ArcGIS Online 中的托管要素图层。

  1. OverwriteFS.zip 文件下载到您的计算机。

    .zip 文件包含两个文件:Python 脚本 (OverwriteFS.py) 和文档 (ReadMe.pdf)。

  2. .zip 文件内容提取至计算机的文件夹内,例如,C:\Temp\
  3. 打开文本编辑器(例如 Notepad 或 Notepad++)并打开新的空白文本文件。
  4. ArcGIS Online我的内容下,单击 TX_reservoirs_recent_(yourname) 托管要素图层。

    您需要了解此托管要素图层的标题和项目 ID,才能对其进行更新。 您会将这些信息保存在文本文档中以供参考。

  5. TX_reservoirs_recent 项目的概述页面上,将项目标题复制粘贴到文本文件中。

    复制项目标题和项目 ID。

  6. 复制项目 URL 末尾处的项目 ID,然后将其粘贴到文本文件中。 保存文件,但使其保持打开状态,您将很快需要此信息。

    在此示例中,项目标题为 TX_reservoirs_recent_(yourname),项目 ID 为 4309a6d6bb77477f986acba13b5f9ef6。 项目 ID 对于 ArcGIS Online 中的每个项目都是唯一的。 您的项目 ID 会有所不同。

本地存储 ArcGIS Online 凭据

ArcGIS Online 需要登录凭据才能覆盖项目。 将 ArcGIS 凭据存储在本地安全的配置文件中。 该配置文件将用于在 Python 脚本中覆盖水库托管要素图层。

  1. 打开 Windows 开始菜单,搜索 Python 命令提示符,然后将其打开。
  2. 输入 cd,然后将路径输入到提取 OverwriteFS.py 脚本的文件夹,然后按 Enter 键。

    例如,如果将脚本提取到 C:\Temp,则会输入 cd C:\Temp

    Python 命令提示符

  3. 输入 python,然后按 Enter 键。

    在 Python 命令提示符下运行的 Python 控制台。

    此操作将在“Python 命令提示符”窗口中启动 Python 控制台。 控制台中注明了 Python 版本,输入提示更改为 >>>

    接下来,您将导入 arcgis Python 模块。

  4. 在 Python 控制台中,输入 import arcgis 并按 Enter 键。

    导入 arcgis 模块。

    注:
    Python 命令提示符和 arcgis Python 模块包含在 ArcGIS Pro 安装程序中。

    现在,通过添加配置文件在本地存储您的 ArcGIS Online 凭据。

  5. 键入命令 gis = arcgis.GIS(profile='learn_user', username= '<account>', password= '<pass>'),将 <帐户> 替换为您的用户名帐户,将 <密码> 替换为您的密码。 按 Enter 键。

    键入该命令以在配置文件中本地存储用户名和密码。

    注:
    ArcGIS Online 凭证将安全地保存在 learning_user 配置文件中。 要了解有关本地存储 ArcGIS Online 凭证的更多信息,请访问使用不同的身份验证方案页面。

  6. 键入 exit() 以关闭 Python 控制台并返回命令提示符。

覆盖托管要素图层

现在使用覆盖的 Python 脚本、ArcGIS Online 配置文件和托管要素图层参数(项目 ID 和标题)以更新水库托管要素图层。

  1. 在 Python 命令提示符内,在包含 OverwriteFS.py 脚本的 C:\Temp\ 文件夹中,运行以下命令:python OverwriteFS.py learn_user <item id> <item title> <GeoJSON URL>,将 <item id> 和 <item title> 替换为您保存在文本文件中的托管要素图层的参数。

    在这段代码中,learn_user 指已保存在本地的 ArcGIS Online 配置文件。 将 <item id> 和 <item title> 替换为您保存在文本文件中的托管要素图层的参数。 在本例中,您需将 <item id> 替换为 3b2b385c923147349dec02025e10aa55,并将 <item title> 替换为 TX_reservoirs_recent_(您的姓名)。 您需将 <GeoJSON URL> 替换为包含更新数据的数据源的 URL,https://www.waterdatafortexas.org/reservoirs/statewide/recent-conditions.geojson。

    注:
    由于您已经使用最新数据创建了托管要素图层,因此脚本不会进行更改。 不过,您可以暂时使用 https://downloads.esri.com/learnarcgis/schedule-automated-near-real-time-data-updates/recent-conditions.geojson 中的文件,其中包含于 2019 年 12 月 26 日更新的 recent-conditions.geojson 文件的快照。

    如果您使用指向 Texas water 站点的 URL 来运行它,则该命令将类似于以下格式(项目 ID 将有所不同):

    python OverwriteFS.py learn_user 20af483d68e54ff5835753de0e90ce27 TX_reservoirs_recent_(yourname) https://www.waterdatafortexas.org/reservoirs/statewide/recent-conditions.geojson

    如果您下载了 2019 年 12 月 26 日的 recent-conditions.geojson 文件快照,将其保存到您正在使用的 C:\Temp\ 文件夹(替换现有文件)。 此命令与以下操作类似(项目 ID 发生变化,路径将为本地文件路径而非 URL):

    python OverwriteFS.py learn_user 20af483d68e54ff5835753de0e90ce27 TX_reservoirs_recent_(yourname) c:\Temp\recent-conditions.geojson

    按 Enter 键运行此命令。

    命令提示符将显示结果。 结尾处的 Performing Overwrite… Success! Elapsed Time 消息表示脚本已正确更新了托管要素图层。

    显示覆盖过程成功完成的消息。

  2. 在浏览器中,在 Map Viewer 经典版 中打开 Texas Reservoirs 地图。 单击任意水库以查看其弹出窗口。

    弹出窗口显示更新时间和满水百分比值。 托管要素图层视图的符号系统在您设置时保持不变。

您运行了 Python 脚本以在 ArcGIS Online 中覆盖托管要素图层。 接下来,您将在 Windows 中创建和计划任务以定期自动运行覆盖脚本。


创建和计划任务

您运行了 Python 脚本来更新托管要素图层。 现在,您将通过计划 Windows 中的任务来自动运行脚本。 首先,您将创建 .bat 文件。 然后,您将在 Windows 任务计划程序中创建一个任务。 该任务将定期运行 .bat 文件,从而覆盖 Python 脚本,并在有新数据可用时检查更新并覆盖托管要素图层。

创建 .bat 文件

Windows .bat 文件是简单的文本文件,带有一组由命令行解释程序运行的指令。

  1. 打开文本编辑器,例如 Notepad 或 Notepad++。
  2. 将以下文本复制并粘贴到文本编辑器:

    "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe" "C:\Temp\OverwriteFS.py" learn_user 3b2b385c923147349dec02025e10aa55  TX_reservoirs_recent_(yourname) https://www.waterdatafortexas.org/reservoirs/statewide/recent-conditions.geojson

    您也可以将文本作为单行输入。

  3. 将项目 ID 从 3b2b385c923147349dec02025e10aa55 更改为托管要素图层的项目 ID。
  4. TX_reservoirs_recent_(您的姓名)更改为项目名称。
  5. 将文件保存在 C:\Temp\ 文件夹,然后键入 TXreservoirs_overwrite.bat 作为其文件名。 在另存为类型下拉菜单中,选择所有文件(或者如果您正在使用 Notepad++,则选择批处理文件)。

    TXreservoirs_overwrite 文件

    接下来,您将创建一个任务来运行 .bat 文件。

创建基础任务

.bat 文件创建完成后,接下来将安排一个任务以定期运行它。

  1. 打开 Windows 开始菜单。 搜索并打开任务计划程序
  2. 操作面板中单击创建基本任务

    创建基本任务

    随即显示创建基本任务向导窗口,并显示创建基本任务选项卡。

  3. 创建基本任务向导窗口中,对于名称,输入 TX reservoirs,对于描述,输入 Task to run the TXreservoirs_overwrite.bat file to update the feature service

    键入任务名称和描述。

  4. 单击下一步

    窗口更新为显示任务触发器选项卡。

  5. 对于您希望何时启动任务?,确认已选择每天,然后单击下一步

    选择“每天”。

    向导更新为显示每天选项卡。

  6. 对于开始日期,选择今天的日期。 将开始时间设置为当前时间之后的一小时(示例中为下午 4:35)。

    任务日期和间隔

  7. 对于重复出现频率,输入 1 以使任务每天运行,然后单击下一步
  8. 操作页面上,确认已选择启动程序作为任务操作,然后单击下一步
  9. 启动程序页面的程序/脚本文本框中,输入 C:\Temp\TXreservoirs_overwrite.bat,然后单击下一步

    注:

    如果您已将 .bat 文件保存在另一个文件夹中,请确保输入 .bat 文件的正确路径。 您还可以单击浏览按钮并浏览到文件所在的位置。

    启动 .bat 文件。

    向导中将出现完成选项卡。

  10. 选中单击“完成”时,打开此任务的“属性”对话框复选框,然后单击完成

    选择单击“完成”时,打开此任务的“属性”对话框。

  11. 在“安全性”选项下,选中无论用户是否登录均运行复选框,同时选中请勿存储密码。 单击确定

    在未登录且不存储密码时运行。

  12. 该任务将在计划的时间运行,并使用“Water Data for Texas”网站上的最新信息更新托管要素图层。 托管要素图层视图将显示来自托管要素图层的更新信息,同时保留相同的符号系统和弹出窗口配置。

在本教程中,您从“Water Data for Texas”网站下载了数据,并创建了一个托管要素图层。 您创建、自定义和共享了托管要素图层的托管要素图层视图,以将公共项目与更新流程分隔开。 您调整、下载并使用 Python 脚本从网站获取了最新数据并更新了托管要素图层。 您还创建了一个 .bat 文件,并计划了 Windows 任务来运行 Python 脚本。 任务运行时,覆盖的 Python 脚本将更新托管要素图层。 您将任务配置为每天运行,因此显示托管要素图层视图的任何 web 地图或应用程序每天都会显示最新的数据。