基本绘图 > 地图 > 图形生成器 > 定制地图文件
发布日期: 11/15/2021

定制地图文件

遵循与内置文件相同的模式,您可以自行创建地图文件。要添加您自己的地图文件,您需要两样东西:描述形状的多边形顶点所对应的一系列 XY 坐标,以及每个多边形对应的一组名称。绘制定制地图形状需要数据和形状属性,这样您才能将自己的形状添加到 JMP。有两种常见的数据来源:ESRI 形状文件和 SAS/GRAPH 地图数据集。

要让 JMP 能够自动查找您的文件,请将这些文件放在以下目录中:

在 Windows 上:C:/Users/<用户名>/AppData/Roaming/SAS/JMP/Maps

在 macOS 上:/Users/<用户名>/Library/Application Support/JMP/Maps

注意:在 Windows 的 JMP Pro 中,“JMP”文件夹命名为“JMPPro”。或者,您可以将地图文件链接至您的已显式使用地图角色列属性的数据文件。

请在创建地图文件时注意以下事项:

您创建的每组地图文件都必须包含 -Name 文件和 -XY 文件。

这两个文件中的第一列都必须是以升序排列的数值型 Shape ID(形状 ID)变量。-Name 文件可包含任何其他列。形状按行生成。XY 坐标必须环绕该形状一周而不能仅仅定义该形状的凸包。

对于地图角色列属性,将在标记有形状名称定义的列中搜索形状标识,并且这些列必须包含唯一值。

若您导入 Esri SHP 文件,它将以正确的格式打开。-Name 文件通常具有 .dbf 扩展名。请参见Esri 形状文件

SAS/GRAPH 软件包括许多可用于 JMP 的地图数据集。请参见SAS/GRAPH 地图数据集

您可能想创建其他非地理区域(例如,办公楼的楼层)的等值线图。只需为非地理空间添加两个形状文件。若您没有 XY 坐标,但具有空间的图形图像,则可以使用 JMP 的 Custom Map Creator 插件。借助该插件,您可以跟踪空间的轮廓,并且 JMP 会为您创建 -XY-Name 文件。您可以从“JMP 文件交换库”页下载该插件。

地图角色

您可以在“列信息”窗口的“列属性”中指定数据表中某列的特性和属性。可以像“列信息”窗口中的其他列属性那样设置列的地图角色属性。

若您自己创建的数据表中包含边界数据(例如,国家、地区、州、省或县),并且想在“图形生成器”中查看相应的地图,则可以使用“列属性”中的地图角色属性。您创建的每对地图文件都必须包含 -Name 文件和 -XY 文件。

请注意以下几点:

若定制边界文件位于默认定制地图目录中,则您只需要在 -Name 文件中指定地图角色属性。

若定制边界文件位于其他位置,则需要在 -Name 文件中和您要分析的数据表中指定地图角色属性。

包含地图角色属性的列必须包含相同的边界名称,但列名可以不同。

将“地图角色”属性添加到 -Name 数据表:

1. 右击包含边界的列,然后选择列属性 > 地图角色

2. 选择地图角色下方的形状名称定义

3. 点击确定

4. 保存数据表。

图 12.10 “形状名称定义”示例 

Image shown here

将“地图角色”属性添加到您要分析的数据表:

注意:仅当您的定制边界文件未包含在默认定制地图目录中时才执行以下步骤。

1. 右击包含边界的列,然后选择列属性 > 地图角色

2. 选择地图角色下方的形状名称使用

3. 地图名称数据表旁边,点击 Image shown here 浏览至 -Name 地图数据表。您可以输入相对或绝对路径。

若地图数据表位于同一文件夹中,只需输入文件名。路径包含空格时无需使用引号。

4. 形状定义列列表中,选择地图数据表中其值与选定列中的值匹配的列。

图 12.11 显示 S4 Temps.jmp 样本数据表中房间/办公室列的示例。

图 12.11 形状定义列示例 

Image shown here

5. 点击确定

6. 保存数据表。

当您在“图形生成器”中生成图形并将修改的列分配至地图形状区域时,边界将出现在图形中。

对于数值列,“格式”菜单将出现在“列信息”窗口中。指定格式以指示 JMP 如何显示列中的数字。当定制轴和轴标签时,地图的纬度和经度位于格式 > 地理下方。

地理

显示地图的纬度和经度数字格式。纬度和经度选项如下:

DDD(度)

DMM(度、分)

DMS(度、分、秒)

在每种格式中,最后一个经纬度单位可具有小数部分。可以使用带符号的经纬度单位或方向后缀来指定方向。要显示带符号的经纬度单位,如 -59°00'00",请取消选择方向指示符。要显示方向后缀,如 59°00'00" S,请选择方向指示符

要将空格用作经纬度单位分隔符,请取消选择经纬度单位符号。要使用度、分、秒符号,请选择经纬度单位符号

Esri 形状文件

Esri 形状文件是一种向量数据格式,其中包含有关如地形和海洋等地理特征的数据。它作为地图绘制软件的规范由 Esri 开发和管理。

每个形状文件都是一组具有相同名称和不同扩展名的文件。

主文件 (.shp)

.shp 文件包含组成多边形的一系列点。使用 JMP 打开时,.shp 文件会作为 JMP 表导入。

Shape(形状)列在导入时添加,以便唯一标识每个地理区域。每个坐标点位于单独的行中。

指出不相连区域的 Part(部分)列,以及 XY 坐标(采用纬度和经度表示)。

JMP 支持二维 .shp 文件(无仰角信息)。

dBase 表 (.dbf)

您将 Shape ID(形状 ID)列添加至 .dbf 表,该列映射至 .shp 文件中的 Shape(形状)列。添加任意数量的列,这些列可提供公用名称或值以表示特定区域。

将 Esri 形状文件转换为 JMP 地图文件:

1. 在 JMP 中打开 .shp 文件。

2. 确保 Shape(形状)列是 .shp 文件中的第一列。为 XY 列添加格式和轴设置(可选)。“图形生成器”对 X 和 Y 轴使用这些设置。

3. .shp 文件作为 JMP 数据表保存到 Maps 文件夹,名称以 -XY.jmp 结束。

4. 打开 .dbf 文件。

5. Shape ID(形状 ID)列添加为表中的第一列。该列的值应为行号 1 至 n — 数据表中的行数。

注意:您可以使用列 > 新建列 > 初始化数据 > 序列数据用序列号填充列。

6. 地图角色列属性分配至您用于“图形生成器”的“形状”角色中位置名称的任意列。为此,右击列顶部并选择列属性 > 地图角色

7. 从属性定义的下拉框中选择形状名称定义

8. 将表保存为 JMP 数据表,其名称与前面的表匹配并以 -Name.jmp 结束。

JMP 在两个位置查找这些文件。一个位置由机器上的所有用户共享。该位置为:

Windows:C:/Program Files/SAS/JMP/16/Maps/

macOS:/Library/Application Support/JMP/16/Maps

另一个位置特定于每位用户:

在 Windows 上:C:/Users/<用户名>/AppData/Roaming/SAS/JMP/Maps

在 macOS 上:/Users/<用户名>/Library/Application Support/JMP/Maps

注意:在 Windows 的 JMP Pro 中,JMP 文件夹命名为 JMPPro

SAS/GRAPH 地图数据集

SAS/GRAPH® 软件包括的若干地图数据集经过转换可用于 JMP。数据集位于 Maps 逻辑库中。传统地图数据集包含 XY 坐标数据和具有常用位置名称的功能表。您需要将这两个文件均转换为 JMP 数据表才能在 JMP 中使用。

多数传统地图数据集具有未投影的纬度和经度变量(以弧度表示)。一旦数据集转换为度并且经度变量进行了投影调整,这些数据集即可在 JMP 中使用。以下是一个 DATA 步,它显示了 Belize 数据集的转换过程。

data WORK.BELIZE;
keep id segment x y;
rename segment=Part;
set maps.belize;
if x NE .;
if y NE .;
y=lat*(180/constant('pi'));
x=-long*(180/constant('pi'));
run;

您现在可以导入转换的文件并将其保存为 Belize-XY.jmp

下一步是导入匹配功能数据集(在此情况下为 MAPS.BELIZE2)。导入功能数据集后,将 ID 列移动到数据表中的第一列。然后将地图角色列属性分配给您用于“图形生成器”的“形状”角色中地名的列。为此,右击列顶部并选择列属性 >地图角色。然后从属性定义的下拉框中选择形状名称定义。对于 MAPS.BELIZE2,使用 IDNAME 列。将功能数据集保存为 Belize-Name.jmp

要转换 SAS 地图,请从“JMP 文件交换库”页下载 SAS to JMP Map Converter 插件对于每个地图,插件从两个 SAS 地图表中读取数据,重新排列并设置数据格式,然后将其放置到两个 JMP 地图表中。

需要更多信息?有问题?从 JMP 用户社区得到解答 (community.jmp.com).