ArcGIS Notebooks 运行 Jupyter notebook 环境,提供基于单元格的简化工作空间。 本主题将介绍在 Notebooks 中工作的基本命令和方面,包括快捷键和最佳做法。
指定单元格类型
在 notebook 中可使用三种类型的单元格。 使用指针选择单元格后,可以使用工具栏上的下拉列表更改单元格类型。
以下是可用的三种类型:
- 代码 - Notebook 将使用 Python 语言解释代码单元格中的所有内容。 编写 Python 代码时输入某些字符串,例如 from 或等号 (=),则会提示 notebook 自动为这些字符串重新设置颜色或突出显示它们。 以数字符号 (#) 开头的任何代码行都将被解释为注释,以绿色斜体显示,且不会被 notebook 当作代码执行。
- Markdown - Notebook 将使用 Markdown 语言解释 Markdown 单元格中的所有内容。 Markdown 语言是一种用于格式化富文本的简单语言,由 GitHub 等客户端广泛使用于 Internet。 有关使用 Markdown 的参考信息,请参阅线上 Markdown 指南。 运行 Markdown 单元格会将其内容转换为富文本。 任何以一个或多个数字符号 (#) 开头的行都将被格式化为标题。 您还可以将原始 HTML 代码添加到 Markdown 单元格。
- Raw NBConvert - Notebook 不会处理 Raw NBConvert 单元格中的内容。 该单元格类型很少使用。
注:
在下拉列表中还可找到标题单元格类型。 但在 Jupyter notebook 环境中已不再使用此单元格类型。 单击此单元格类型会将单元格转换为 Markdown 单元格并附加一个数字符号 (#),表示 Markdown 类型中的顶级标题。
使用富文本和代码注释可以使 notebook 对于您与之共享的用户而言更具价值和可读性。
处理单元格
若要让 notebook 执行代码,则该代码必须包含于单元格中。 您可以使用单元格中的代码定义变量并运行 Python 库中包含的函数。
要定义变量,请运行包含变量语句的单元格,包括等号 (=)。 例如,默认的 notebook 模板启动时即已定义变量 gis。 如果您运行的单元格中仅包含变量名称 gis,则 notebook 将返回您 ArcGIS Online的 URL 作为输出。
注:
使用感叹号(例如 !cd <directory>)来更改命令行中的目录的 iPython 命令将无法在 ArcGIS Notebooks 中使用。 但是,可以使用没有感叹号的命令,例如 cd <directory>。
要运行 Python 函数,请提供函数的语法以及函数所需或接受的任何参数。 请参阅下方的在单元格中使用函数部分了解详细信息。
您可以按 Shift + Enter 键创建新单元格,也可单击菜单功能区上的插入,即可选择在当前单元格的上方或下方插入新单元格。
单元格工具栏选项
您可以使用单元格工具栏中的选项在 notebook 中加入有关各个单元格的其他信息:
- 无 - 不显示单元格工具栏。
- 编辑元数据 - 使用 JSON 为每个单元格输入元数据。
- 原始单元格格式 - 原始单元格允许您直接写入输出;notebook 不评估这些单元格的内容。
- 幻灯片 - 指定每个单元格在幻灯片中的显示方式。 这在显示代码时很有用。
- 附件 - 管理 notebook 工作空间中每个单元格的关联附件。
- 标签 - 为 notebook 工作空间中的每个单元格创建和管理标签。
当这些选项中的任意一个处于开启状态时,将会在 notebook 中的每个单元格上方显示一个栏。 一次只能开启一个选项,但是即使某个选项关闭了,您添加到工具栏的信息将仍然保留。 您可以单击查看 > 单元格工具栏来更改单元格工具栏选项。
导入库和模块
在默认的 notebook 模板中,ArcGIS Notebooks 仅导入 ArcGIS API for Python 中的 gis 模块。 通常,您可能需要使用 notebook 运行时中可用的其他 Python 库。 要访问这些库,请运行 import 命令。
查看 ArcGIS Notebooks 中可用的所有 Python 库
创建一个新单元格并输入 import <library>,然后运行单元格。
在 ArcGIS API for Python 和 ArcPy 中,以及在某些其他情况下,Python 库被组织在模块中。 要访问模块中的库,请使用 from 语句声明要访问的模块,然后使用 import 语句声明库。 例如,要在 ArcGIS API for Python 中调用 mapping 模块中的 WebScene 库,请在单元格中运行以下命令:
from arcgis.mapping import WebScene
ArcGIS Notebooks 在运行单元格时具有自动完成功能。 您可以使用这一功能来帮助您找到所需的库和模块。 在单元格中,输入命令的第一部分,然后按 Tab 键激活自动完成功能。 将自动出现能够完成该命令的可能值。
例如,在您输入 arcgis. 并按下 Tab 键后,notebook 将提供 ArcGIS API for Python 中所有可用模块的下拉列表。 您可以使用向上和向下箭头来导航列表;找到所需选项后,按 Enter 键将其插入代码行。
了解有关 ArcGIS API for Python 和 ArcPy 如何在 notebook 中工作的详细信息,请参阅以下主题:
在单元格中使用函数
要在 notebook 中执行分析和处理数据,可以使用 Python 函数。 函数包含在 Python 库中,且通常使用输入参数来指定它们的执行方式及执行对象。
Notebook 的自动完成工具可以通过提供可用内容的下拉列表来帮助您查找函数。 对于任意库的 bar,输入 bar.,并按 Tab 键显示其中可用的函数。
例如,要查看 arcgis.features 模块中“汇总数据”库中可用的工具,可输入以下代码后按 Tab 键:
features.summarize_data.
自动完成工具将显示库中可用工具的下拉列表。
通常,notebook 中的命令具有必需或可选参数,参数中提供执行命令所需的信息。 如果命令的语法以一组空括号 (()) 结束,则该命令需要或可以包含可供添加的可选参数。
在括号内输入参数,并用逗号分隔多个参数。 要查看任何函数的必填参数和可选参数的字符串,请将其空括号替换为问号并运行该单元格。 随即显示该函数的 docstring,其中列出了所有参数。
例如,notebook 编辑器分析窗格中的所有可用工具都需要参数。 将此窗格中的工具添加到单元格时将插入该工具的 ArcGIS API for Python 语法,并以空括号结尾。 如果您尝试在单元格中运行此语法而不提供一个或多个参数,则单元格将运行失败并提供错误消息。
若要在“汇总数据”库中运行聚合点工具,请在分析窗格中找到该工具并将其添加到新单元格,或在工具语法中输入以下内容:
features.summarize_data.aggregate_points()
要查看该工具的参数列表,请按如下所示修改语法并运行单元格:
features.summarize_data.aggregate_points?
该工具的 docstring 参考窗口随即打开。 可使用该参考右上角的按钮展开或关闭该窗口。
操作单元格时请注意以下事项:
- 对于任何函数 foo(),输入 foo? 并按 Enter 键以显示函数的 docstring,此内容为函数的描述。
- 若以 ! 启动单元格,则单元格中的内容会在 notebook 容器中作为 bash 命令运行。
运行单元格
运行单元格时,将执行其代码及其中的所有操作。 您只能运行整个单元格,而不能运行单元格的子部分或特定的代码行。 单元格可以包含一行或多行代码。
要运行选定的单元格,请单击工具栏上的运行按钮,或单击单元格 > 运行单元格。 也可以按 Ctrl + Enter 键运行鼠标指针所在的单元格。
要手动停止正在运行的单元格,请单击核 > 中断。 您也可以单击工具栏中的方形停止按钮。
每个代码单元格的左边都有一个 In [ ] 元素。 如果单元格尚未运行,或者先前运行的单元格已清除其输出,则括号将为空。 单元格运行时,括号内将包含星号:In [*]。 单元格完成运行时,In [ ] 括号将填充一个数字,表示单元格的运行顺序。 由于 notebook 中的单元格可以按任何顺序运行并可多次运行,所以 notebook 单元格中的 In [ ] 数字可能不按顺序排列。
注:
Markdown 单元格会在运行前一直保留一个 In [ ] 元素,运行后该元素消失,单元格内容变为富文本。
当运行的单元格中有一行代码生成了输出时,输出将在 notebook 中显示于已执行单元格下方。 输出旁边将出现一个 Out [ ] 元素,对应相应单元格中的 In [ ] 元素的内容。
核的运用
当您启动新的 Notebook 时,核会一同启动。 核会执行您在 notebook 中运行的代码。 当您在 notebook 中运行单元格时(即填充其 In [ ] 元素),在已执行单元格中定义的变量将存储于核的内存中。
要重新启动 notebook 的核并清除内存中的变量,请单击核 > 重新启动。 若要重新启动核,清除内存中的变量,并依次运行 notebook 中的所有单元格,请单击核 > 重新启动并运行全部。
当您使用 notebook 完毕后,可单击核 > 关闭关闭 notebook 的核并清除所有内存中的变量。 核将停止运行,但不会删除已运行单元格的输出。