按邮政编码的 Reporting Services 映射

Reporting Services Mapping by Postcodes

是否可以使用邮政编码或北距和东距坐标绘制地图坐标。可以从某处免费获取地图吗?因为似乎只有美国地图默认带有 SSRS,但英国没有。

您可以从 Ordnance Survey and for Northern Ireland from OpenDataNI 免费下载英国的 ESRI 形状文件。根据您的需要,我建议使用 Boundary-Line 选项来获取英国的各个行政区域。这些带有名字等,非常棒。

对于邮政编码,我认为 SSRS 不能按原样映射它们。您将需要投资 Post 办公室的 Postcode Address File which costs regular licence money but is updated every 6 months, or you can rely on free resources (that include Northern Ireland) from websites like Doogal,他们收集了非常全面的英国邮政编码、地理数据(Lat/long、Eas/Nor 等)和其他信息元数据,例如他们居住在哪个病房。

从这两个资源中,您可以非常轻松地建立一个邮政编码查找 table,它将您的纬度和经度保存在一个 spatial 数据字段中,以供您的查询返回。这是提供 SSRS 映射信息的最简单方法,当您使用正确的 geography 数据类型时,它 'just works'。

为您的邮政编码添加 spatial 列 table:

ALTER TABLE [dbo].[Postcodes]
ADD [SpatialPoint] GEOGRAPHY
GO

-- This query may take a loooooong time depending on your set up,
-- though you only have to run once across the whole dataset.
-- Obviously you will need to run again for any new postcodes.
UPDATE [dbo].[Postcodes]
SET [SpatialPoint] = geography::STPointFromText('POINT('
                                + CAST([Longitude] AS VARCHAR(20))
                                + ' '
                                + CAST([Latitude] AS VARCHAR(20))
                                + ')'
                                , 4326)
GO

一旦你开始使用 spatial 查询,你很快就会发现虽然查询肯定会花费很长时间(我在我们的破盒子上最初的 运行 花了大约 20 个小时,尽管只有一次),您可以使用各种 spatial 函数来确定哪些邮政编码位于哪些边界多边形中,并开始通过属于特定边界的所有邮政编码来分割数据。当您不能确定您的地址数据是否包含 County/Ward/Local Authority/etc.

时,这非常有用

您也非常想考虑将您的 SQL 服务器版本至少升级到 2012,因为每个版本的空间功能都有飞跃式的改进。

如果您属于 public 部门(例如 NHS),您可以下载 Ordnance Survey 的数据集 "Codepoint with Polygons",其中包含每个邮政编码区域的单独文件中的所有英国邮政编码。对于 public 扇区,这是免费的。您需要像我们一样获得 PSMA 许可证(普尔医院)。