新聞中心
友情提示,您閱讀本篇博文的先決條件如下:

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、鹽亭網(wǎng)站維護(hù)、網(wǎng)站推廣。
1、本文示例基于Microsoft SQL Server 2008 R2調(diào)測(cè)。
2、具備 Transact-SQL 編程經(jīng)驗(yàn)和使用 SQL Server Management Studio 的經(jīng)驗(yàn)。
3、熟悉或了解Microsoft SQL Server 2008中的空間數(shù)據(jù)類型。
4、具備相應(yīng)(比如OGC)的GIS專業(yè)理論知識(shí)。
5、其他相關(guān)知識(shí)。
通過前面幾篇文章介紹了關(guān)于SQL Server 2008中空間數(shù)據(jù)類型相關(guān)的知識(shí)點(diǎn),了解到了什么是空間數(shù)據(jù),什么是空間數(shù)據(jù)類型,如何在SQL中變成定義基礎(chǔ)的空間對(duì)象實(shí)例,這些知識(shí)點(diǎn)主要是為了后續(xù)學(xué)習(xí)空間數(shù)據(jù)應(yīng)用和做地理空間分析做準(zhǔn)備。本篇將繼續(xù)介紹SQL Server 2008中空間數(shù)據(jù)類型的應(yīng)用知識(shí)點(diǎn),主要介紹如何在數(shù)據(jù)表中使用空間數(shù)據(jù)類型列,如何存儲(chǔ)空間數(shù)據(jù)到空間數(shù)據(jù)類型,以及如何查詢、預(yù)覽空間數(shù)據(jù)等相關(guān)知識(shí)點(diǎn)。
選擇使用空間數(shù)據(jù)類型,意味著必須在SQL數(shù)據(jù)表中添加空間數(shù)據(jù)類型列以存儲(chǔ)空間數(shù)據(jù)。通常有兩種情況:
1、創(chuàng)建一張帶有空間數(shù)據(jù)類型的新表。
2、向已有數(shù)據(jù)表中添加空間數(shù)據(jù)類型列字段。
一、創(chuàng)建空間數(shù)據(jù)類型新表
創(chuàng)建一個(gè)帶有空間數(shù)據(jù)類型的新表和創(chuàng)建普通的表基本沒有區(qū)別,***的不同就是使用了空間數(shù)據(jù)類型字段。以下SQL演示了創(chuàng)建帶有空間數(shù)據(jù)類型的數(shù)據(jù)表:
- CREATE TABLE [Cities] (
- [ID] [int] IDENTITY(1,1) NOT NULL,
- [CityName] [varchar](255) NOT NULL,
- [CityLocation] [geometry] NOT NULL
- )
- GO
二、添加空間數(shù)據(jù)類型到已有表
向已有表中添加空間數(shù)據(jù)類型列和普通表添加新的列是一樣的,同樣使用alter table xxx add yyy datatype命令完成。下面代碼演示了向剛創(chuàng)建的新表添加一空間數(shù)據(jù)類型字段:
--向已有表中添加空間數(shù)據(jù)類型字段
- ALTER TABLE [Cities]
- ADD geo geography
- GO
三、為空間數(shù)據(jù)類型列制定空間引用標(biāo)識(shí)(SRID)
任何空間數(shù)據(jù)類型字段都可以向其指派相應(yīng)的空間引用標(biāo)識(shí)(SRID),部分空間數(shù)據(jù)類型字段還是必須制定SRID的。實(shí)現(xiàn)對(duì)空間數(shù)據(jù)類型列指派SRID也非常簡(jiǎn)單,SQL提供了指派命令來完成,下面的SQL命令演示了給上面新添加的空間數(shù)據(jù)類型指派SRID的實(shí)現(xiàn)。
--指派空間數(shù)據(jù)類型列的SRID
- ALTER TABLE [Cities]
- ADD CONSTRAINT [enforce_srid_geographycolumn]
- CHECK (geo.STSrid = 4326)
- GO
四、插入空間數(shù)據(jù)到空間數(shù)據(jù)類型字段
插入數(shù)據(jù)導(dǎo)表格中同樣使用“insert into table.....”語法實(shí)現(xiàn),不同的是插入空間數(shù)據(jù)的時(shí)候需要對(duì)數(shù)據(jù)進(jìn)行格式化處理才能被成功的插入到空間數(shù)據(jù)類型列。針對(duì)于兩種(geography和geometry)空間數(shù)據(jù)類型,系統(tǒng)提供了專門的空間格式化語法來處理,比如通過將WKT文本插入到空間數(shù)據(jù)列,可以使用geometry::STGeomFromText()或者geography::STGeomFromText()函數(shù)來對(duì)WKT文本進(jìn)行空間數(shù)據(jù)類型格式轉(zhuǎn)化。
- insert into Cities
- (CityName,CityLocation)
- values
- ('chongqing',geometry::STGeomFromText('POLYGON ((107.04352 28.870554, 107.043891 28.873231......)',4326));
注:上面SQL代碼塊實(shí)現(xiàn)了將重慶市區(qū)區(qū)域WKT格式的空間數(shù)據(jù)插入到Cities表的CityLocation字段中,由于WKT內(nèi)用太長(zhǎng),代碼段中對(duì)其進(jìn)行了截取。
四、查詢空間數(shù)據(jù)類型數(shù)據(jù)
查詢空間數(shù)據(jù)和普通的數(shù)據(jù)查詢幾乎沒有區(qū)別,同樣使用“select xxx from table where x=y”的方式實(shí)現(xiàn)數(shù)據(jù)查詢。下面SQL命令演示了查詢剛剛插入的數(shù)據(jù)記錄:
- select * from Cities;
同樣可以使用系統(tǒng)函數(shù)將查詢出的空間結(jié)果轉(zhuǎn)化為WKT文本格式輸出,下面的SQL命令詳細(xì)演示了改功能函數(shù)的使用:
--轉(zhuǎn)換空間數(shù)據(jù)為WKT文本
- DECLARE @chongqing geometry;
- select @chongqing = CityLocation from Cities where ID=1;
- select @chongqing as 重慶市;
- select @chongqing.ToString() as 重慶市;
- select @chongqing.STAsText() as 重慶市; --WKT
網(wǎng)頁標(biāo)題:SQL Server 2008數(shù)據(jù)表中使用空間數(shù)據(jù)類型
分享鏈接:http://m.fisionsoft.com.cn/article/cdoohpg.html
其他資訊
- 農(nóng)產(chǎn)品如何建設(shè)網(wǎng)站,工業(yè)化建設(shè)需要農(nóng)產(chǎn)品嗎
- 電腦打開上網(wǎng)導(dǎo)航后任何網(wǎng)站都打不開?(文件管理也打不開網(wǎng)站也打不開)
- S框架數(shù)據(jù)庫鏈接實(shí)現(xiàn)技巧(s框架與數(shù)據(jù)庫的鏈接)
- Redis中的簡(jiǎn)單動(dòng)態(tài)字符串實(shí)現(xiàn)(redis簡(jiǎn)單動(dòng)態(tài)符串)
- 首頁域名注冊(cè)域名證書輸入對(duì)應(yīng)的域名跳轉(zhuǎn)到域名證書頁面


咨詢
建站咨詢
