详解SQL Server 2008空间数据类型

SQL Server 2008为大地测量空间数据提供了geography数据类型,为平面空间数据提供了geometry数据类型。这两个都是Microsoft .NET Framework通用语言运行时(CLR)类型,并且可以用来存储不同种类的地理元素,例如点、线和多边形。这两个数据类型都提供了你可以用来执行空间操作的属性和方法,例如计算位置间的距离和找出两者间交叉的地理特性(例如一条河流经一个城镇。)

geography 数据类型

geography数据类型为空间数据提供了一个由经度和纬度联合定义的存储结构。使用这种数据的典型用法包括定义道路、建筑、或者地理特性如可以覆盖到一个光栅图上的向量数据,它考虑了地球的弯曲性,或者计算真实的圆弧距离和空中传播轨道,而这些在一个平面模型中所存在的固有失真引起的错误程度是不可接受的。

geometry数据类型

geometry数据类型为空间数据提供了一个存储结构,它是由任意平面上的坐标定义的。这种数据通常是用在区域匹配系统中的,例如由美国政府制定的州平面系统,或者是不需要考虑地球弯曲性的地图和内层布置图。

geometry 数据类型提供了与开放地理空间联盟(OGC)Simple Features Specification for SQL标准结合的属性和方法,使得你可以对geometry数据执行操作以产生行业标准的行为。

空间数据类型的方法

SQL Server 2008中的两种空间数据类型都提供了一组全面的实例和静态方法,你可以使用它们对空间数据执行查询和操作。例如,下面的代码示例为一个城市地图应用程序创建了两个表;一个包含了城市中区的geometry值,另一个包含了城市中的街道的geometry 值。然后一个查询获得了城市中交叉的街道和区。

CREATE TABLE Districts 

( DistrictId int IDENTITY (1,1),

DistrictName nvarchar(20),

DistrictGeo geometry);

GO

CREATE TABLE Streets

( StreetId int IDENTITY (1,1),

StreetName nvarchar(20),

StreetGeo geometry);

GO

INSERT INTO Districts (DistrictName, DistrictGeo)

VALUES ('Downtown',

geometry::STGeomFromText

('POLYGON ((0 0, 150 0, 150 150, 0 150, 0 0))', 0));

INSERT INTO Districts (DistrictName, DistrictGeo)

VALUES ('Green Park',

geometry::STGeomFromText

('POLYGON ((300 0, 150 0, 150 150, 300 150, 300 0))', 0));

INSERT INTO Districts (DistrictName, DistrictGeo)

VALUES ('Harborside',

geometry::STGeomFromText

('POLYGON ((150 0, 300 0, 300 300, 150 300, 150 0))', 0));

INSERT INTO Streets (StreetName, StreetGeo)

VALUES ('First Avenue',

geometry::STGeomFromText

('LINESTRING (100 100, 20 180, 180 180)', 0))

GO

INSERT INTO Streets (StreetName, StreetGeo)

VALUES ('Mercator Street',

geometry::STGeomFromText

('LINESTRING (300 300, 300 150, 50 50)', 0))

GO

SELECT StreetName, DistrictName

FROM Districts d, Streets s

WHERE s.StreetGeo.STIntersects(DistrictGeo) = 1

ORDER BY StreetName

该查询的结果如下表所示

StreetName

DistrictName

First Avenue

Downtown

First Avenue

Harborside

Mercator Street

Downtown

Mercator Street

Green Park

Mercator Street

Harborside

高性能的空间数据

SQL Server 2008中的空间数据类型作为CLR系统类型来执行。SQL Server 2008增加了数据库中的CLR类型的***规模,提高了原来在SQL Server 2005中的8000字节的限制,这使得它可以存储非常复杂的空间数据元素,例如通过许多点定义的多边形。

通过在关系表中存储空间数据,SQL Server 2008 使得可以结合空间数据到其他任何商业数据类型中去;这消除了对维护一个单独的只用于空间数据存储的维护要求,并使得可以做高性能查询,它不需要结合从多个外部来源获得的数据。

在SQL Server 2008中对空间索引的支持进一步增强了对空间数据的查询操作。你可以用一个集成在SQL Server数据库引擎中的适合的多级网格索引来检索空间数据。空间索引包含一个基于网格的层级,在其中每一级索引又细分为由上一级所定义的网格区域。一个空间索引的概念模型如图3所示。

 

图3:一个空间索引

SQL Server查询优化器会作出基于成本的决策,决定对给定的查询使用哪种索引,并且因为空间索引是数据库引擎的一个完整部分,可以作出关于是否使用特殊的空间索引的基于成本的决策,就像其它索引一样。

【编辑推荐】

  1. SQL Server 2008中位置智能应用程序可扩展性
  2. SQL Server 2008中使用空间数据实现位置智能
  3. SQL Server数据库优化经验总结

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/229736.html<

(0)
管理的头像管理
上一篇2025-04-18 22:03
下一篇 2025-04-18 22:04

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注