技术开发 频道

使用SQL Server 2008中的空间数据类型

 

INSERT INTO Store
(StoreName, StoreAddress, StorePhone, StoreLocation)
VALUES
(
'Aerobic Exercise Company',
  
'39933 Mission Oaks Blvd, Camarillo, CA 93010',
  
'244-555-0112',
  geography::GeomFromGml(
'<Point xmlns="http://www.opengis.net/gml">
                            <pos>34.235504 -118.988734</pos>
                          </Point>
', 4326))

练习 1:创建空间数据类型的实例

在本练习中,您将创建一个数据表来存储空间数据。然后,您将创建一个geography 数据类型的实例,来表示一些点,这些点用来表示商店的位置,以及用来描述由公司销售经理所管理的销售区域的边界多边形信息。在数据库当中,您将使用不同的空间数据格
式来实例化geography实例。

在Microsoft SQL Server 数据库中使用geography 数据类型,使得您可以将现有的业务应用进行扩展,从而处理地理信息,来描述地理表面上简单或复杂的地理元素。

创建数据库和数据表来存储空间数据

点击Start | All Programs | Microsoft SQL Server 2008 | SQL Management Studio  ,启动SQL Server Management Studio。
在Connect to Server对话框中输入下列信息,然后点击 Connect 按钮:

Server type: Database Engine
Server name: (local)
Authentication: Windows Authentication

点击 New Query 来创建一个新查询。如果出现提示对话框,则使用上面的连接方式连接到数据库服务器。
在查询编辑器中输入下面的Transact-SQL 代码:

CREATE DATABASE AWSales
GO
USE AWSales
GO
-- Create a table for stores
CREATE TABLE Store
(StoreID
int IDENTITY PRIMARY KEY,
StoreName
nvarchar(200),
StoreAddress
nvarchar(200),
StorePhone
nvarchar(25),
StoreLocation geography)
GO
-- Create a table for salespeople
CREATE TABLE SalesPerson
(SalesPersonID
int IDENTITY PRIMARY KEY,
  FirstName
nvarchar(20),
  LastName
nvarchar(20),
  Email
nvarchar(35),
  SalesRegionName
nvarchar(25),
  SalesRegion geography)
GO

注意: 在Store 表中的StoreLocation 列以及SalesPerson 表中的SalesRegion 列采用geography 数据类型。geography 数据类型适用于存储及操作涉及地球曲面的地理数据。而对于平面数据,例如点、线等,SQL Server 中引入了geometry 数据类型。
点击 Execute 运行脚本。

插入包括点值的记录

在查询编辑器中,在原有代码的下方输入下面的Transact-SQL 代码:

INSERT INTO Store
(StoreName, StoreAddress, StorePhone, StoreLocation)
VALUES
(
'Economic Parts Supply',
  
'2532 Fairgrounds Road, West Kingston, RI 02892',
  
'623-555-0153',
  geography::Parse(
'POINT(41.497478 -71.548531)'))

注意: 这段代码利用geography 数据类型的Parse 方法,创建了一个WKT 所描述创建的点的实例。WKT 是Open Geospatial Consortium (OGC) 针对基于文本展示的地理数据所定义的标准。
在查询编辑器中,在原有代码的下方输入下面的Transact-SQL 代码:

INSERT INTO Store
(StoreName, StoreAddress, StorePhone, StoreLocation)
VALUES
(
'Two Bike Shops',
  
'35525-9th Street SW, Puyallup, WA 98371',
  
'724-555-0161',
  geography::Point(
'47.156622', '-122.30383', 4326))

注意: 这段代码利用geography 数据类型的Point 方法来创建经纬度所构成的点的实例。geography 实例的Spatial Reference ID (SRID) 将其与特定的地球椭圆模型相关联,从而使得geography 实例同SRID 之间的对比方式与集合同文本之间的对比方式一样。geography 实例的SRID 设置为4326,这也是全世界GPS 系统遵循WGS84 标准所采用的SRID。作为geography 实例默认的SRID,该项设置在之前的记录中也遵循此数值。
在查询编辑器中,在原有代码的下方输入下面的Transact-SQL 代码:

INSERT INTO Store
(StoreName, StoreAddress, StorePhone, StoreLocation)
VALUES
(
'Eastside Department Store',
  
'9992 Whipple Rd, Union City, CA 94587',
  
'926-555-0164',
  geography::STGeomFromText(
'POINT(-122.084552 37.603936)', 4326))

注意: 这段代码使用geography 数据类型的STGeomFromText 方法,从一个文本描述中创建一个点的实例。
在查询编辑器中,在原有代码的下方输入下面的Transact-SQL 代码:
注意: 这段代码使用geography 数据类型的GeomFromGml 方法,从Geography Markup Language (GML) 描述中创建一个点的实例。GML 是OGC 针对XML 展现地理数据所定义的标准。
随便使用一种上面介绍过的技术,创建INSERT语句,从而可以将下面的商店信息添加到数据表中。


Store Data    
Store name: Exotic Bikes
Store address:
6900 William Richardson Ct, South Bend, IN 46628
Store telephone
number: 415-555-0147
Latitude
and Longitude location: 41.733388 -86.298173    
Store name: Healthy Activity Store
Store address:
4460 Newport Center Drive, Newport Beach, CA 92625
Store telephone
number: 911-555-0165
Latitude
and Longitude location: 33.617021 -117.87749    
Store name: Metropolitan Sports Supply
Store address:
482505 Warm Springs Blvd, Fremont, CA 94539
Store telephone
number: 828-555-0186
Latitude
and Longitude location: 37.464038 -121.914168  


选中所有您刚刚输入的INSERT语句,然后点击Execute 来插入数据。
在查询编辑器中,在原有代码的下方输入下面的Transact-SQL 代码:

SELECT StoreName, StoreLocation.ToString()
FROM Store

选中您刚刚输入的SELECT 语句,然后点击Execute 来查看商店数据。下面的结果显示了每个商店的信息。这些点表示了在下面的地图中所对应的针脚。
 

0
相关文章