本教程旨在帮助你了解可用于根据地理背景显示报表数据的地图功能。
地图以空间数据为基础,这些数据通常包含点、线条和多边形。 例如,多边形可以表示国家/地区轮廓,线条可以表示道路,而点则可以表示市县所在位置。 各种类型的空间数据作为一组地图元素显示在单独的地图层上。
若要改变地图元素的外观,可以指定一个字段,通过字段值将地图元素与数据集中分析数据相匹配。 还可以定义相关规则,依据数据范围改变颜色、大小、或其他属性。
在本教程中,你将生成一个地图报表,该报表显示纽约州县的存储位置。
学习内容
本教程介绍如何执行以下作:
注释
在本教程中,将向导的多个步骤合并为两个过程:一个用于创建数据集,一个用于创建表。 有关如何浏览到报表服务器、选择数据源、创建数据集和运行向导的分步说明,请参阅本系列中的第一篇教程:教程:创建基本表报表(报表生成器)。
完成本教程的估计时间:30 分钟。
要求
有关要求的信息,请参阅教程的先决条件(报表生成器)。
1.从地图向导使用多边形层创建地图
从地图库将地图添加到报表。 该地图具有一个层,此层显示了纽约州中的各个县。 各县的形状为根据地图库中的地图内嵌入的空间数据得出的多边形。
在新报表中通过地图向导添加地图
依次单击“ 开始”、“ 程序”、“ Microsoft SQL Server 2014报表生成器”,然后单击“ 报表生成器”。
此时会显示“入门”对话框。
注释
如果未显示“入门”对话框,请在“报表生成器”按钮中单击“ 新建”。
在左窗格中,验证是否选择了 “报表 ”。
在右窗格中,单击“ 地图向导”。
单击 “创建” 。
选择空间数据页的源 ,验证是否选择了 地图库 。
在“地图库”窗格中,在美国下展开按县分的州,然后单击“纽约”。
此时,“地图预览”窗格将显示纽约的县地图。
单击 “下一步” 。
在 “选择空间数据和地图视图选项 ”页上,接受默认值。 默认情况下,地图库中的地图元素将自动嵌入到报表定义中。
单击 “下一步” 。
在“ 选择地图可视化 效果”页上,验证是否选择了 “基本地图 ”,然后单击“ 下一步”。
在“选择颜色主题和数据可视化”页上,选择“显示标签”选项 。
如果选择该选项,请清除 “单色地图 ”选项。
在 “数据”字段 下拉列表中,单击 #COUNTYNAME。 向导中的“地图预览”窗格显示以下各项:
一个标题,其文本为“地图标题”。
一个地图,显示纽约的各个县,其中每个县都用一种不同的颜色表示,且县名称出现在县区域上方适合的位置。
一个图例,包含标题和项 1 至 5 的列表。
一个色阶,包含值 0 到 160 但没有颜色。
一个距离宽度,显示公里数 (km) 和英里数 (mi)。
单击“完成”。
此时,将向设计图面添加一个地图。
单击地图以选择它并显示 “地图层”窗格。 “地图层”窗格显示一个层类型为嵌入的多边形层。 每个县都是该层上的一个嵌入地图元素。
注释
如果未看到“ 地图层 ”窗格,则可能显示在当前视图之外。 请使用位于“设计”视图窗口底部的滚动条来更改视图。 或者,在“视图”选项卡中,取消选中“属性”或“报表数据”选项以提供更多设计操作空间。
右键单击地图标题,然后单击“ 标题属性”。
将标题文本替换为 Sales by Store。
单击 “确定” 。
预览报表。
呈现的报表显示地图标题、地图以及距离刻度。 各县位于地图多边形层上。 每个县都是一个多边形,颜色因调色板的颜色而异,但颜色与任何数据无关。 距离刻度同时用公里和英里显示距离。
地图图例和色阶尚未显示,因为没有与每个县关联的分析数据。 稍后将在本教程中添加分析数据。
2. 添加地图上的点层以显示商店位置
使用地图层向导添加显示商店位置的点图层。
注释
在本教程中,由于查询包含了数据值,因此它不需要外部数据源。 这样,查询就会非常长。 在业务环境中,查询不会包含数据。 本教程中的查询仅供学习使用。
基于 SQL Server 空间查询添加点图层
切换到“设计”视图。
双击地图以显示“地图层”窗格。 在工具栏上,单击“ 新建层向导 ”按钮
。在“ 选择空间数据源 ”页上,选择 “SQL Server 空间查询”,然后单击“ 下一步”。
在 “选择具有 SQL Server 空间数据页的数据集 ”页上,单击“ 添加包含 SQL Server 空间数据的新数据集”,然后单击“ 下一步”。
在“ 选择与 SQL Server 空间数据源 ”页的连接上,选择现有数据源或浏览到报表服务器并选择数据源。
单击 “下一步” 。
在“设计查询”页上,单击“ 编辑为文本”。
将以下文本粘贴到查询窗格中:
Select 114 as StoreKey, 'Contoso Albany Store' as StoreName, 1125 as SellingArea, 'Albany' as City, 'Albany' as County, CAST(1000000 as money) as Sales, CAST('POINT(-73.7472924218681 42.6564617079878)' as geography) AS SpatialLocation UNION ALL SELECT 115 AS StoreKey, 'Contoso New York No.1 Store' AS StoreName, 500 as SellingArea, 'New York' AS City, 'New York City' as County, CAST('2000000' as money) as Sales, CAST('POINT(-73.9922069374483 40.7549638237402)' as geography) AS SpatialLocation UNION ALL Select 116 as StoreKey, 'Contoso Rochester No.1 Store' as StoreName, 462 as SellingArea, 'Rochester' as City, 'Monroe' as County, CAST(3000000 as money) as Sales, CAST('POINT(-77.624041566786 43.1547066024338)' as geography) AS SpatialLocation UNION ALL Select 117 as StoreKey, 'Contoso New York No.2 Store' as StoreName, 700 as SellingArea, 'New York' as City,'New York City' as County, CAST(4000000 as money) as Sales, CAST('POINT(-73.9712488 40.7830603)' as geography) AS SpatialLocation UNION ALL Select 118 as StoreKey, 'Contoso Syracuse Store' as StoreName, 680 as SellingArea, 'Syracuse' as City, 'Onondaga' as County, CAST(5000000 as money) as Sales, CAST('POINT(-76.1349120532546 43.0610223535974)' as geography) AS SpatialLocation UNION ALL Select 120 as StoreKey, 'Contoso Plattsburgh Store' as StoreName, 560 as SellingArea, 'Plattsburgh' as City, 'Clinton' as County, CAST(6000000 as money) as Sales, CAST('POINT(-73.4728622833178 44.7028831413324)' as geography) AS SpatialLocation UNION ALL Select 121 as StoreKey, 'Contoso Brooklyn Store' as StoreName, 1125 as SellingArea, 'Brooklyn' as City, 'New York City' as County, CAST(7000000 as money) as Sales, CAST('POINT (-73.9638533447143 40.6785123489351)' as geography) AS SpatialLocation UNION ALL Select 122 as StoreKey, 'Contoso Oswego Store' as StoreName, 500 as SellingArea, 'Oswego' as City, 'Oswego' as County, CAST(8000000 as money) as Sales, CAST('POINT(-76.4602850815536 43.4353224527794)' as geography) AS SpatialLocation UNION ALL Select 123 as StoreKey, 'Contoso Ithaca Store' as StoreName, 460 as SellingArea, 'Ithaca' as City, 'Tompkins' as County, CAST(9000000 as money) as Sales, CAST('POINT(-76.5001866085881 42.4310489934743)' as geography) AS SpatialLocation UNION ALL Select 124 as StoreKey, 'Contoso Rochester No.2 Store' as StoreName, 700 as SellingArea, 'Rochester' as City, 'Monroe' as County, CAST(100000 as money) as Sales, CAST('POINT(-77.6240415667866 43.1547066024338)' as geography) AS SpatialLocation UNION ALL Select 125 as StoreKey, 'Contoso Queens Store' as StoreName, 700 as SellingArea,'Queens' as City, 'New York City' as County, CAST(500000 as money) as Sales, CAST('POINT(-73.7930979029883 40.7152781765927)' as geography) AS SpatialLocation UNION ALL Select 126 as StoreKey, 'Contoso Elmira Store' as StoreName, 680 as SellingArea, 'Elmira' as City, 'Chemung' as County, CAST(800000 as money) as Sales, CAST('POINT(-76.7397414783301 42.0736492742663)' as geography) AS SpatialLocation UNION ALL Select 127 as StoreKey, 'Contoso Poestenkill Store' as StoreName, 455 as SellingArea, 'Poestenkill' as City, 'Rensselaer' as County, CAST(1500000 as money) as Sales, CAST('POINT(-73.5626737425063 42.6940551238618)' as geography) AS SpatialLocation在查询设计器工具栏上,单击“ 运行 ”(!)。
结果集显示七列:StoreKey、StoreName、SellingArea、City、County、Sales 和 SpatialLocation。 此数据表示一组销售消费品的纽约州商店。 结果集中的每一行都包含一个商店标识符、商店名称、可用于产品显示的区域、商店所在的城市和县、总销售额以及经度和纬度的空间位置。 显示区域从 455 平方英尺到 1125 平方英尺不等。
单击 “下一步” 。
此时,将会为您创建一个名为 DataSet1 的报表数据集。 完成向导后,您可以将报表数据用于其字段集合。
在“选择空间数据和地图视图选项”页上,验证空间字段是否为
SpatialLocation且图层类型是否为点。 接受本页上的其他默认值。地图视图中显示标志每个商店位置的圆圈。
单击 “下一步” 。
指定显示因分析数据而异的标记的映射类型。 在“选择地图可视化效果”页上,单击“ 分析标记映射”,然后单击“ 下一步”。
在“ 选择分析数据集 ”页上,单击“DataSet1”。 此数据集包含将在新点层中显示的分析数据和空间数据。
单击 “下一步” 。
在 “选择颜色主题和数据可视化 ”页上,清除 “使用标记颜色可视化数据 ”选项,然后选择“ 使用标记类型可视化数据”选项。
在 “数据”字段中,选择
[Sum(SellingArea)]根据商店预留的区域的大小来改变标记类型以显示产品。单击“完成”。
将向报表添加该地图层。 图例显示的标记类型是根据 SellingArea 值确定的。
双击地图以显示“地图层”窗格。 “地图层”窗格显示新层“PointLayer1”,以及空间数据源类型“DataRegion” 。
添加图例标题。 右键单击图例标题,然后单击 “图例标题属性”。
删除标题,然后键入“显示区域”(平方英尺)。
单击 “确定” 。
查看向导设置的默认值。 在 “地图层”窗格中,右键单击点层,然后单击“ 标记类型规则”。
在“ 常规 ”选项卡上,标记按图例中显示的顺序列出。 在“ 分发 ”选项卡上,子范围的数量为 5。 在“ 图例 ”选项卡上,图例文本设置为在每个范围内显示起始值和结束值。
单击 “确定” 。
预览报表。
该地图显示纽约州的商店的位置。 每个商店的标记类型都基于显示区域。 系统会自动为您计算五个范围的显示区域。
3.添加地图线条层以显示路线
使用地图层向导添加一个显示两个商店间路线的地图层。 本教程中,通过三个商店位置创建路径。 在业务应用程序中,路径可能是两个商店间的最佳路线。
向地图添加线条层
切换到“设计”视图。
双击地图以显示“地图层”窗格。 在工具栏上,单击“ 新建层向导”。
在“ 选择空间数据源 ”页上,选择 “SQL Server 空间查询 ”,然后单击“ 下一步”。
在 “选择具有 SQL Server 空间数据页的数据集 ”页上,单击“ 添加包含 SQL Server 空间数据的新数据集 ”,然后单击“ 下一步”。
在“ 选择与 SQL Server 空间数据源的连接”上,选择“DataSource1”,即在第一个过程中创建的数据源。
单击 “下一步” 。
在 “设计查询 ”页上,单击“ 编辑为文本”。 查询设计器切换到基于文本的模式。
将以下文本粘贴到查询窗格中:
SELECT N'Path' AS Name, CAST('LINESTRING( -76.5001866085881 42.4310489934743, -76.4602850815536 43.4353224527794, -73.4728622833178 44.7028831413324)' AS geography) as Route单击 “下一步” 。
此时,地图上将显示一条连接三个商店的路径。
在“选择空间数据和地图视图选项”页上,确认“空间字段”为“路线”,且“层类型”为“线条”。 接受其他默认值。
地图视图显示一条从位于纽约州北部的商店到位于纽约州南部商店的路径。
单击 “下一步” 。
在“ 选择地图可视化 效果”页上,单击“ 基本折线图”,然后单击“ 下一步”。
在“选择颜色主题和数据可视化”上,选择“单色图”选项 。 该路径基于所选主题显示为某种颜色。
单击“完成”。
地图显示具有空间数据源类型 DataSet 的新线条层。 在本例中,空间数据来自数据源,但没有分析数据与此线条关联。
4.添加必应地图图块背景
添加显示必应地图图块背景的地图层。
添加虚拟地球磁贴背景
切换到“设计”视图。
双击地图以显示“地图层”窗格。 在工具栏上,单击添加层
。在下拉列表中,单击“ 图块层”。
“地图层”窗格中的最后一层为“TileLayer1”。 默认情况下,图块层显示道路图样式。
注释
在本向导中,还可以在“选择空间数据和地图视图选项”页上添加图块层。 若要执行此操作,请选择“为该地图视图添加必应地图背景”。 在呈现的报表中,图块背景为当前地图视区中心和缩放级别显示 Bing 地图图块。
单击 TileLayer1 上的向下箭头,然后单击“ 磁贴属性”。
在“类型”中,选择“空中”。 鸟瞰图不包含文本。
单击 “确定” 。
5. 使层透明
若要让一个层上的项通过另一层显示,可以调整层的顺序和每个层的透明度,以获得所需的效果。
设置层的透明度
切换到“设计”视图。
双击地图以显示“地图层”窗格。
单击 PolygonLayer1 上的向下箭头,然后单击“ 图层数据”。 将打开“地图多边形层属性”对话框。
单击“可见性”。
在 透明度(%)中,键入 30。
单击 “确定” 。
设计图面将县显示为半透明。
6. 根据销售额改变县色
多边形层上的每个县都有不同的颜色,因为报表处理器根据你在地图向导的最后一页选择的主题自动从调色板中分配颜色值。
在以下步骤中,指定一个颜色规则,用于将特定颜色与每个县的商店销售额范围相关联。 颜色红-黄-绿指示相应的高-中-低销售额。 设置色阶的格式以显示货币。 在新的图例中显示年销售额范围。 对于不包含商店的县,使用无色来表示没有关联的数据。
6a. 在空间和分析数据之间建立关系
若要根据分析数据根据颜色改变县形状,必须先将分析数据与空间数据相关联。 在本教程中,将使用县名称进行匹配。
在空间数据和分析数据之间建立关系
切换到“设计”视图。
双击地图以显示“地图层”窗格。
单击 PolygonLayer1 上的向下箭头,然后单击“ 图层数据”。 将打开“地图多边形层属性”对话框。
单击 “分析数据”。
从下拉列表中选择“DataSet1”。 指定县的空间数据查询时,向导会创建此数据集。
在“要匹配的字段”中,单击添加。 将添加一个新行。
在 “从空间数据集”的下拉列表中,单击“COUNTYNAME”。
在从分析数据集的下拉列表中,点击[县]。
单击 “确定” 。
预览报表。
通过从空间数据源和分析数据集中指定一个匹配字段,报表处理器可以基于地图元素对分析数据进行分组。 针对您指定的值,数据绑定的地图元素具有成功的匹配项。
对于包含商店的每个县,其颜色取决于您在向导中选择的样式的调色板。
6b. 指定多边形的颜色规则
若要创建根据商店销售额改变每个县颜色的规则,必须指定范围值、要显示的范围的划分数以及要使用的颜色。
指定具有关联数据的所有多边形的颜色规则
切换到“设计”视图。
单击 PolygonLayer1 上的向下箭头,然后单击 “多边形颜色规则”。 将打开“地图颜色规则属性”对话框。 请注意,已选择“使用调色板实现数据的可视化效果”颜色规则选项。 此选项是由向导设置的。
选择“使用颜色范围实现数据的可视化效果”。 调色板选项将替换为开始颜色、中间颜色和结束颜色选项。
为每个县的销售额定义范围值。 在“数据字段”中,从下拉列表中选择“”。
若要更改格式以以千为单位显示货币,请将表达式更改为以下内容:
=Sum(Fields!Sales.Value)/1000将“开始颜色”更改为“红色”。
将“结束颜色”更改为“绿色” 。
“红色”表示低销售值,“黄色”表示中等销售值,而“绿色”表示高销售值 。 报表处理器将基于这些值以及在“分布”页上选择的选项来计算颜色范围。
单击分发。
确认分布类型为“最佳”。 对于步骤 5 中的表达式,最佳分布将值划分到各个子范围,这些子范围在每个范围中的项数与每个范围的跨度之间实现平衡。
对于本页上的其他选项接受默认值。 如果您选择最佳分布类型,则在运行报表时将计算子范围数。
单击 “图例” 。
在“色阶选项”中,确认已选中“在色阶中显示” 。
在“在此图例中显示”中,从下拉列表中选择空行。 目前,将仅在色阶中显示颜色范围。
单击 “确定” 。
色阶显示五种颜色:红色、橙色、黄色、黄色、绿色和绿色。 每个颜色表示一个销售额范围,此范围是以县为单位根据销售额自动计算得出的。
6c. 将色阶中的数据格式化为货币
默认情况下,数据具有常规格式。 可以应用自定义格式。
设置颜色梯度的格式
右键单击色阶,然后单击 色阶属性。
单击 “数字”。
在 “类别”中,单击“ 货币”。
在 小数位数中,键入 0。 此格式不指定货币的小数位数。
单击 “确定” 。
预览报表。
色阶对于每个范围用货币格式显示年销售额。
6d. 创建一个新的传奇
默认情况下,所有规则都显示在第一个图例中。 若要改进地图的显示效果,可以添加图例。
若要更改默认显示,有两个步骤:创建新图例,然后将地图层的规则结果与新图例相关联。
创建新图例
切换到“设计”视图。
右键单击视区外的地图,然后单击“ 添加图例”。 在默认位置添加了一个新的图例到地图上。
右键单击图例,然后单击“ 图例属性”。
在 “位置”选项中,单击指定希望图例相对于视区显示的位置的位置。 设计图面上的地图将更改以显示所选内容的效果。
单击 “确定” 。
单击图例上的 “标题 ”以选择图例标题。
再次单击 “标题 ”以输入文本的插入模式。 将 Title 替换为 Sales (Thousands),然后单击文本外部。
图例展开以显示标题。
6e. 关联图例和颜色规则
每个图例可以显示一组或多组规则结果。
将图例与颜色规则相关联
双击地图以显示“地图层”窗格。
单击 PolygonLayer1 上的向下箭头,然后单击 “多边形颜色规则”。 将打开“地图颜色规则属性”对话框。
单击 “图例” 。
在 色阶选项中,清除 以色阶显示。
在 图例选项中,从下拉列表中选择 Legend2。 此时会显示图例文本选项。 默认情况下,图例文本采用常规 .NET Framework 格式字符串的格式。 N0 中的 0 不指定十进制数字。
在 图例文本中,使用以下格式指定没有十进制数字的货币:
#FROMVALUE {C0} - #TOVALUE {C0}单击 “确定” 。
在设计图面上,图例显示采用货币格式的示例数据的颜色范围。
预览报表。
具有关联的商店和销售额的县根据颜色规则进行显示。 没有销售额的县没有颜色。
6f. 更改不带数据的县的颜色
可以为层上所有地图元素设置默认显示选项。 颜色规则优先于这些显示选项。
设置层上所有元素的显示属性
切换到“设计”视图。
双击地图以显示“地图层”窗格。
单击 PolygonLayer1 上的向下箭头,然后单击 “多边形属性”。 将打开“地图多边形属性”对话框。 在应用基于规则的显示选项之前,此对话框中设置的显示选项将应用于层上的所有多边形。
单击“ 填充”。
验证填充样式是否为 Solid。 渐变和图案适用于所有颜色。
在 “颜色”中,单击向下箭头,然后单击“ 浅钢蓝色”。
单击 “确定” 。
预览报表。
没有关联数据的县显示为蓝色。 只有具有关联分析数据的县才会根据您指定的颜色规则,以红色至绿色的颜色显示。
7. 添加自定义点
若要表示尚未生成的新商店,请指定一个点并使用 PushPin 标记类型。
添加自定义点
切换到“设计”视图。
双击地图以显示“地图层”窗格。 在工具栏上,单击“ 添加层”,然后单击“ 点层”。
将向地图添加一个新点层。 默认情况下,该点层的空间数据类型为“嵌入”。
单击 PointLayer2 上的向下箭头,然后单击“ 添加点”。
将指针移到地图视区上方。 光标将变为十字准线。
单击地图上的位置以添加一个点。 在本教程中,点击路线起点相邻县中的一个位置。 在你单击的位置,一个被圆圈标记的点被添加到图层中。 默认情况下,该点处于选中状态。
右键单击添加的点,然后单击 “嵌入点属性”。
选择“ 覆盖此层的点选项”选项。 对话框中会显示其他页面。 您在此处设置的值优先于层或颜色规则的显示选项。
单击 “标记”。
对于 标记类型,请选择 “星形”。
单击 “确定” 。
预览报表。
添加的新点显示为 星形。
为自定义点添加标签
切换到“设计”视图。
右键单击刚添加的点,然后单击 “嵌入点属性”。
单击 “标签”。
在 “标签”文本中,键入 “新建存储”。
在 “放置”中,单击 “顶部”。
单击 “确定” 。
预览报表。
标签显示在商店位置上方。
将地图视图居中
更改地图视区中心和缩放级别。
更改视区
右键单击地图视区,然后单击 “视区属性”。
单击居中和缩放。
验证是否选择了“ 设置视图中心和缩放级别 ”选项。
单击 “确定” 。
左键单击地图视区,并将视区中心拖动到所需位置。
使用鼠标滚轮更改视区缩放级别。
预览报表。
在“设计”视图中,显示图面上的地图以及视图基于示例数据。 在呈现的报表中,地图视图位于您指定的视图的中心。
添加报表标题
添加报表标题
在设计图面上,单击 单击以添加标题。
键入“纽约商店的销售”,然后单击文本框外的区域。
此标题将显示在报表顶部。 如果未定义页眉,则报表正文顶部的项等效于报表页眉。
保存报表
保存报表
切换到“设计”视图。
在“报表生成器”按钮中,单击“ 另存为”。
在“名称”中,键入纽约的商店销售。
单击“ 保存”。
后续步骤
最后,本演练介绍如何向报表添加地图。
有关详细信息,请参阅 地图(报表生成器和 SSRS) 以及 blogs.msdn.com 上的 SQL Server Reporting Services 空间数据的图式调整 博客条目。
有关更多教程,请参阅教程(报表生成器)。
另请参阅
教程(报表生成器)
SQL Server 2014 中的报表生成器
地图向导和地图层向导(报表生成器和 SSRS)
按规则和分析数据更改多边形、线条和点的显示方式(报表生成器和 SSRS)