教程:地图报表(报表生成器)
本教程旨在帮助您了解地图功能,您可以使用该功能针对地理背景显示报表数据。
地图以空间数据为基础,这些数据通常包含点、线条和多边形。 例如,多边形可以表示国家/地区轮廓,线条可以表示道路,而点则可以表示市县所在位置。 各种类型的空间数据作为一组地图元素显示在单独的地图层上。
若要改变地图元素的外观,可以指定一个字段,通过字段值将地图元素与数据集中分析数据相匹配。 还可以定义相关规则,依据数据范围改变颜色、大小、或其他属性。
本教程中,将生成一个地图报表,该报表显示了纽约州各县内的商店位置。
学习内容
在本教程中,您将学习如何执行下列操作:
注意
在本教程中,将向导的多个步骤合并为两个过程:一个用于创建数据集,一个用于创建表。 有关如何浏览到报表服务器、选择数据源、创建数据集和运行向导的分步说明,请参阅本系列的第一个教程:教程:创建基本表报表(报表生成器)。
完成本教程的估计时间:30 分钟。
要求
有关要求的信息,请参阅教程先决条件(报表生成器)。
1.通过地图向导使用多边形层创建地图
从地图库向报表中添加地图。 该地图具有一个层,此层显示了纽约州中的各个县。 各县的形状为根据地图库中的地图内嵌入的空间数据得出的多边形。
使用地图向导在新报表中添加地图
单击“开始”,指向“程序”,指向“Microsoft SQL Server 2014Report Builder”,然后单击“Report Builder”。
此时将显示“入门”对话框。
注意
如果未显示“入门”对话框,请在“Report Builder”按钮中单击“新建”。
在左窗格中,验证是否已选择 “报表 ”。
在右窗格中,单击“地图向导”。
单击创建。
选择空间数据页的源 ,验证是否已选择 “地图库 ”。
在“地图库”窗格中,展开“美国”下的“按县排序的州”,然后单击“纽约”。
此时,“地图预览”窗格将显示纽约的县地图。
单击“下一步”。
在 “选择空间数据和地图视图选项 ”页上,接受默认值。 默认情况下,来自地图库的地图元素将自动嵌入到报表定义中。
单击“下一步”。
在“选择地图可视化”页上,确认已选中“基本地图”,然后单击“下一步” 。
在“选择颜色主题和数据可视化”页上,选择“显示标签”选项 。
如果已选择,则清除“单色图”选项。
在 “数据字段 ”下拉列表中,单击“#COUNTYNAME”。 向导中的“地图预览”窗格显示以下各项:
一个标题,其文本为“地图标题”。
一个地图,显示纽约的各个县,其中每个县都用一种不同的颜色表示,且县名称出现在县区域上方适合的位置。
一个图例,包含标题和项 1 至 5 的列表。
一个色阶,包含值 0 到 160 但没有颜色。
一个距离宽度,显示公里数 (km) 和英里数 (mi)。
单击“完成”。
此时,将向设计图面添加一个地图。
单击地图以将其选中,并显示“ 地图层”窗格。 “ 地图层”窗格 显示一个层类型为 Embedded 的多边形层。 每个县都是该层上的一个嵌入地图元素。
注意
如果看不到“ 地图层 ”窗格,它可能会显示在当前视图的外部。 请使用位于“设计”视图窗口底部的滚动条来更改视图。 或者,在“ 视图 ”选项卡中,清除 “属性” 或“ 报表数据 ”选项以提供更多设计图面。
右键单击地图标题,然后单击“ 标题属性”。
将标题文本替换为 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.添加 Bing 地图图块背景
添加一个地图层,用于显示 Bing 地图图块背景。
添加 Virtual Earth 图块背景
切换到“设计”视图。
双击地图以显示“地图层”窗格。 在工具栏上,单击“添加层”。
从下拉列表中,单击“图块层”。
“地图层”窗格中的最后一层为“TileLayer1”。 默认情况下,图块层显示道路图样式。
注意
在本向导中,还可以在“选择空间数据和地图视图选项”页上添加图块层。 若要执行此操作,请选择“为该地图视图添加必应地图背景”。 在呈现的报表中,图块背景为当前地图视区中心和缩放级别显示 Bing 地图图块。
单击 TileLayer1 上的向下箭头,然后单击“ 磁贴属性”。
在 “类型”中,选择“ 鸟瞰图”。 空中视图不包含文本。
单击 “确定” 。
5.将层设置为透明
若希望某一层上的项透过另一层显示出来,则可以调整层的顺序以及每层的透明度以获得您想要的效果。
设置层的透明度
切换到“设计”视图。
双击地图以显示“地图层”窗格。
单击 PolygonLayer1 上的向下箭头,然后单击“ 层数据”。 将打开“地图多边形层属性”对话框。
单击 “可见性” 。
在 “透明度 (%) ”中,键入 30。
单击 “确定” 。
设计图面将县显示为半透明。
6.根据销售改变县颜色
多边形层上的每个县都有一种不同的颜色,因为报表处理器会根据您在地图向导的最后一页选择的主题,自动从调色板中分配一个颜色值。
在下面的步骤中,指定颜色规则,以便将特定的颜色与每个县的商店销售额范围关联起来。 颜色红-黄-绿指示相应的高-中-低销售额。 设置色阶的格式以显示货币。 在新的图例中显示年销售额范围。 对于不包含商店的县,不使用任何颜色,以指明没有关联的数据。
6a. 在空间数据与分析数据之间建立关系
若要基于分析数据改变县形状中的颜色,首先必须将分析数据与空间数据关联起来。 在本教程中,您将使用要匹配的县名称。
在空间数据与分析数据之间建立关系
切换到“设计”视图。
双击地图以显示“地图层”窗格。
单击 PolygonLayer1 上的向下箭头,然后单击“ 层数据”。 将打开“地图多边形层属性”对话框。
单击 “分析数据” 。
从下拉列表中选择 DataSet1。 此数据集是您为县指定空间数据查询时由向导创建的。
在 “要匹配的字段”中,单击“ 添加”。 将添加一个新行。
在 “从空间数据集”的下拉列表中,单击“COUNTYNAME”。
在“ 从分析数据集”的下拉列表中,单击“[县]”。
单击“确定”。
预览报表。
通过从空间数据源和分析数据集中指定一个匹配字段,报表处理器可以基于地图元素对分析数据进行分组。 针对您指定的值,数据绑定的地图元素具有成功的匹配项。
对于包含商店的每个县,其颜色取决于您在向导中选择的样式的调色板。
6b. 为多边形指定颜色规则
若要创建根据商店销售额改变每个县颜色的规则,必须指定范围值、要显示的范围的划分数以及要使用的颜色。
为具有关联数据的所有多边形指定颜色规则
切换到“设计”视图。
单击“PolygonLayer1”上的向下箭头,然后单击“ 多边形颜色规则”。 将打开“地图颜色规则属性”对话框。 请注意,已选择“使用调色板实现数据的可视化效果”颜色规则选项。 此选项已由向导进行设置。
选择“使用颜色范围实现数据的可视化效果”。 调色板选项被开始颜色、中间颜色和结束颜色选项取代。
为每个县的销售额定义范围值。 在“数据字段”中,从下拉列表中选择“
[Sum(Sales)]
”。若要更改格式以便以千为单位显示货币,请将表达式更改为以下形式:
=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”上的向下箭头,然后单击“多边形属性”。 将打开“地图多边形属性”对话框。 在应用基于规则的显示选项之前,此对话框中设置的显示选项将应用于层上的所有多边形。
单击“ 填充”。
验证填充样式是否为 “纯色”。 渐变和图案适用于所有颜色。
在 “颜色”中,单击向下箭头,然后单击“ 浅钢蓝”。
单击“确定”。
预览报表。
不具有关联数据的县显示为蓝色。 只有具有关联分析数据的县才会在指定的颜色规则中以 红色 到 绿色 显示。
7.添加自定义点
若要表示尚未生成的新存储,请指定一个点并使用 PushPin 标记类型。
添加自定义点
切换到“设计”视图。
双击地图以显示“地图层”窗格。 在工具栏上,单击“ 添加层”,然后单击“ 点层”。
将向地图添加一个新点层。 默认情况下,该点层的空间数据类型为“嵌入”。
单击 PointLayer2 上的向下箭头,然后单击“ 添加点”。
将指针移到地图视区上方。 光标将变为十字准线。
单击地图上您要添加点的位置。 在本教程中,单击县中路线起点旁边的位置。 用圆圈标记的点将添加到层中您单击的位置。 默认情况下,该点处于选中状态。
右键单击添加的点,然后单击“嵌入的点属性”。
为此层选择 “替代点选项”选项。 其他页将显示在对话框中。 您在此处设置的值优先于层或颜色规则的显示选项。
单击“ 标记”。
对于 “标记类型”,选择“ 星形”。
单击“确定”。
预览报表。
添加的新点显示为 星形。
为自定义点添加标签
切换到“设计”视图。
右键单击刚刚添加的点,然后单击“ 嵌入点属性”。
单击“ 标签”。
在 “标签文本”中,键入 “新建应用商店”。
在“位置”中,单击“顶部” 。
单击“确定”。
预览报表。
标签显示在商店位置上方。
将地图视图居中
更改地图视区中心和缩放级别。
更改视区
右键单击地图视区,然后单击“ 视区属性”。
单击“ 居中和缩放”。
验证是否选择了“ 设置视图中心和缩放级别 ”选项。
单击“确定”。
左键单击地图视区,并将视区中心拖到您希望的位置。
使用鼠标滚轮更改视区的缩放级别。
预览报表。
在“设计”视图中,显示图面上的地图以及视图基于示例数据。 在呈现的报表中,地图视图位于您指定的视图的中心。
添加报表标题
添加报表标题
在设计图面上,单击“单击以添加标题”。
键入 Sales in New York Stores ,然后在文本框外部单击。
此标题将显示在报表的顶部。 当未定义页眉时,表体顶部的项等同于报表表头。
保存报表
保存报表
切换到“设计”视图。
从“报表生成器”按钮,单击 “另存为” 。
在“名称”中,键入“纽约的商店销售额” 。
单击“ 保存”。
后续步骤
到此为止,我们结束了有关如何向报表添加地图的演练。
有关详细信息,请参阅地图 (Report Builder和 SSRS) 和博客文章地图调整空间数据,以便 blogs.msdn.com 上的SQL Server Reporting Services。
有关更多教程,请参阅教程 (Report Builder) 。
另请参阅
教程(报表生成器)
SQL Server 2014 中的报表生成器
地图向导和地图层向导(报表生成器和 SSRS)
按规则和分析数据更改多边形、线条和点的显示方式(报表生成器和 SSRS)