扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:IT168网站 2010年1月19日
关键字: SQL Server
在此练习中,您将创建返回以地理标记语言 (GML) 表示的空间数据的存储过程。GML 是一个由开放地理空间联盟 (OGC) 定义的标准,用于在应用程序和系统之间交换地理数据。SQL Server 中的空间数据类型支持 GML 作为空间数据类型实例的数据源,也支持 GML 作为表示空间数据值的格式。借助对 GML 的这种支持,可以轻松地在 SQL Server 中的空间数据和其他地理空间系统(如 Microsoft Virtual Earth)之间进行集成。
注意:您可以从 C:\\SQLHOLS\\Spatial and VE\\Solution\\StoredProcs.sql 复制此练习中使用的代码
创建包含空间数据的数据库
1. 从开始菜单中的 Microsoft SQL Server 2008 程序组中启动 SQL Server Management Studio。收到提示时,使用 Windows 身份验证连接到数据库引擎的 (local) 实例。
2. 打开 C:\\SQLHOLs\\Spatial and VE\\Starter 文件夹中的 Create DB.sql 查询文件。
3. 检查此脚本中的 Transact-SQL 代码。请注意,此代码执行下列任务:
· 删除名为 StoreData的数据库并重新创建它。
· 创建一个名为 Stores 表,其中包含名为 StoreLocation 的 geography列。
· 在 StoreLocation 列上创建一个空间索引。
· 在 Stores 表中插入大量记录。每个记录都包含一个由纬度和经度坐标定义的表示地理点的 StoreLocation 值。
4. 单击执行运行此脚本。如果尚不存在 StoreData 数据库,请忽略任何有关无法删除该数据库的错误。
5. 保持 SQL Server Management Studio 打开,下一个过程还要使用此程序。
创建检索所有商店的存储过程
1. 单击新建查询创建新查询。如果收到提示,请使用 Windows 身份验证连接到 (local) 数据库引擎实例。
2. 在查询编辑器中键入以下 Transact-SQL 代码。
USEStoreData
GO CREATEPROCEDUREGetStoresGML
AS --Return the store location geography data as GML
SELECTStoreName,
StoreAddress +', Tel:'+StorePhone ASContactDetails,
StoreLocation.AsGml() AsStoreGML
FROMStores
GO
注意:此代码使用地理数据类型的 AsGml 方法返回 GML 格式的空间数据值。
3. 单击执行运行此脚本。
4. 在 CREATE PROCEDURE 语句下,添加下面的代码以测试存储过程。
EXECUTEGetStoresGML
5. 选择刚刚添加的 EXECUTE 语句,然后单击执行运行所选的代码。
6. 在结果窗格中,单击任意 StoreGML 值在 XML 查看器中查看空间数据的 GML 表示形式。
7. 关闭 XML 查看器并返回到查询编辑器。
创建查找指定位置附近的商店的存储过程
1. 在您在上一过程中添加的 EXECUTE 语句下,添加以下 Transact-SQL 代码。
CREATEPROCEDUREGetNearbyStoresGML @Latnvarchar(10), @Longnvarchar(10)
AS --Create a point geography instance based on the supplied location
DECLARE@SearchPointgeography
SET@SearchPoint=geography::Point(@Lat, @Long, 4326)
--Create a polygon geography instance by adding a 100km buffer to the point
DECLARE@SearchAreageography
SET@SearchArea=@SearchPoint.STBuffer(100000)
--Return the search area and all store locations that intersect it
SELECT'Search Area', '100 KM radius', @SearchArea.AsGml()
UNIONALL SELECTStoreName,
StoreAddress +', Tel:'+StorePhone ASContactDetails,
StoreLocation.AsGml() AsStoreGML
FROMStores
WHEREStoreLocation.STIntersects(@SearchArea) =1 GO
注意:此代码创建一个 geography 实例,该实例中包含一个基于传递到存储过程的纬度和经度参数的点。然后此代码使用 geography 数据类型的 STBuffer 方法创建表示搜索点周围方圆 100km 范围内的多边形 geography 实例。最后,此代码返回定义搜索区域的 geography 实例的 GML 表示形式以及搜索区域中的所有商店,通过使用 geography 数据类型的 STIntersects 方法可以找到这些商店。
2. 选择刚刚添加的 CREATE PROCEDURE 语句,然后单击执行运行所选的代码。
3. 在 CREATE PROCEDURE 语句下,添加下面的代码以测试存储过程。
EXECUTEGetNearbyStoresGML '34.000000', '-118.000000'
4. 选择刚刚添加的 EXECUTE 语句,然后单击执行运行所选的代码。
5. 在结果窗格中,单击第一个 XML 值,以在 XML 查看器中查看搜索区域的 GML 表示形式。
6. 关闭 XML 查看器并返回到查询编辑器。
7. 将查询脚本文件另存为 C:\\SQLHOLs\\Spatial and VE\\Starter\\StoredProcs.sql,然后关闭 SQL Server Management Studio。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者