读书人

-小弟我的一些笔记七(空间数据的一些操

发布时间: 2012-03-03 15:33:04 作者: rapoo

-------------我的一些笔记七(空间数据的一些操作)-------------

SQL code
--空间数据的一些操作 

1.在创建表时定义geometry类型的列
例子:
create table streets
(
streetid int identity(1,1),
streetName nvarchar(20),
streetGeo geometry
);
go

2.向表中插入几何数据
insert into streets values

('street1',geometry::stgeomfromtext('LINESTRING(100 100,20

180, 180 180)',0))

3.从表中获取几何数据
--注意,直接读取无法看到真实的含义,可以在select 语句将该列

的值读取到一个几何数据类型的变量,具体语句如下:
declare @g geometry
select @g=streetgeo from streets where streetnam='street1'
select @g.stastext()
go


4.获取geometry 实例中包含的点
(1)获取geometry 实例中包含的点数
使用STNumPoints()函数可以获得geometry实例中包含的点数。例如


declare @g geometry
select @g=streetgeo from streets where streetnam='street1'
select @g.STNumPoints()
go

(2)获取geometry 实例中包含的点
declare @g geometry
select @g=streetgeo from streets where streetnam='street1'
select @g.STPointN(2).Tostring()
go

(3)获取起始点和终点
declare @g geometry
select @g=streetgeo from streets where streetnam='street1'
select @g.STStartPoint().ToString() as 起始点,@g.STEndPoint

().ToString() as 终点
go

(4)获取多边形的中心点
declare @g geometry
set @g=geometry::STGeomFromText('POLYGON(0 0,0 2, 2 2,0 2, 0

0))',0);
select @g.STCentroid().Tostring();

5.获取geometry实例的维度信息
(1)返回对象的维度
使用STDimension()函数可以获取对象的维度信息。
例如:
declare @g geometry;
set @g=geometry::STGeomFromText('POINT(3,4)',));
select @g.STAsText(),@g.STDimension()
go
结果是:
/*
POINT(3,4),0
*/

(2)计算对象的长度
使用STLength()函数可以计算一维或二维对象的长度。例如:
declare @g geometry
select @g=streetgeo from streets where streetnam='street1'
select @g.STLength()
go

(3)计算对象的面积
使用STArea()函数可以计算二维对象的面积。例如:
declare @g geometry
set @g=geometr::STGeomFromText('POLYGON((0 0,2 0, 2 2,0 2,0 0))',0);
select @g.STArea()

6.检查是否为空
在使用geometry实例之前,需要判断是否为空,可以使用STlsEmpty()函数实现此功能,当geometry实例为空时,则返回1,否则返回0
declare @g geometry;
set @g=geometry::STGeomFromText('POLYGON EMPTY',0);
select @g STlsEmpty();
set @g=geometry::STGeomFromText('POLYGON((0 0,2 0, 2 2,0 2,0 0))',0);
select @g STlsEmpty();
返回结果为1和0

7.判断geometry实例是否为简单
满足下面条件的geometry实例子=被称为简单的geometry实例
(1)实例中任何一个图形都不与自身相交,但其终点除外。
(2)实例上任意两个图形可以在某个点相交,但两个边界上的点除外。
当geometry 实例为简单实例时,返回1,否则返回0
例如:
declare @g geometry;
set @g=geometry::STGeomFromText('LINESTRING(0 0,2 2,0 2,2 0)',0);
select @g.STlsSimple();
结果为1
declare @g geometry;
set @g=geometry::STGeomFromText('LINESTRING(0 0,0 2,2 2,2 0)',0);
select @g.STlsSimple();
结果为0

8.返回geometry实例的边界
除Point和MultiPoint实例外,其他geometry实例都存在边界.使用STBoundary()函数可以返回geometry实例的边界
下面是在LineString实例上应用STBoundary()函数的实例。
declare @g geometry;
set @g=geometry::STGeomFromText('LINESTRING(1 1,2 2,0 2,2 1)',0);
select @g.STBoundary().Tostring();
返回结果为Multipoint((2,1),(1,1)),即LineString实例的起点和终点.
Polygon和MultiPolygon实例的边界值为Multipoint 实例。下面是Polygon应用STBoundary()函数的实例。
declare @g geometry;
set @g=geometry::STGeomFromText('POLYGON((0 0,0 3,3 3,3 0,0 0)(1 1,1 2, 2 1,1 1))',10);
select @g.STBoundary().Tostring();
返回结果为Multilinestring((1 1,1 2,2 1,1 1),(0 0 ,3 0 , 3 3, 0 3,0 0)),即Polygon的环。

---这次先写这么多,太多了,下次再写


[解决办法]
厉害.
------解决方案--------------------


没抢到沙发。
[解决办法]
db.....
[解决办法]
学习了。
[解决办法]

探讨
SF必须是自己的

[解决办法]
这么高深.....

[解决办法]
学习,
[解决办法]
Bs坐了sf的还切的人
[解决办法]
探讨
Bs坐了sf的还切的人

[解决办法]
稍微提点意见,个人觉得作为技术文章,应该写下前因后果。。。
比如空间坐标系的基本概念,为什么要用这个对象,否则没接触过gis行业的人会不理解的
[解决办法]
不仅送自己的学习心得,竟然还送分,真是好人。
[解决办法]
探讨
稍微提点意见,个人觉得作为技术文章,应该写下前因后果。。。
比如空间坐标系的基本概念,为什么要用这个对象,否则没接触过gis行业的人会不理解的

[解决办法]
探讨
稍微提点意见,个人觉得作为技术文章,应该写下前因后果。。。
比如空间坐标系的基本概念,为什么要用这个对象,否则没接触过gis行业的人会不理解的

[解决办法]
mark,up
[解决办法]
不错,继续啊
[解决办法]
这个确实不会
[解决办法]
突然炎热
[解决办法]
小F的作品,顶
[解决办法]
探讨
稍微提点意见,个人觉得作为技术文章,应该写下前因后果。。。
比如空间坐标系的基本概念,为什么要用这个对象,否则没接触过gis行业的人会不理解的

[解决办法]
学习一下

[解决办法]
看看~~
[解决办法]
...........
[解决办法]
jf。。。
[解决办法]
kan kan
[解决办法]
先顶了··
[解决办法]

[解决办法]
学习。。
[解决办法]
厉害.
[解决办法]
必须的 顶!
[解决办法]
学习学习
[解决办法]
不错,学习了。。。。。。。。。。。。。。。
[解决办法]
不懂,学习
------解决方案--------------------


还不错可以啊楼主
[解决办法]
学习。。。。。
[解决办法]
学习!
[解决办法]
我顶老大啊!!
[解决办法]
小F的作品,顶
[解决办法]
不懂 帮顶 学习 蹭分

[解决办法]
不错
不懂 帮顶
[解决办法]
学习一下
[解决办法]
学习了~~~
[解决办法]
good
[解决办法]
什么东西什么东西
我操
[解决办法]
挺专业的,看不懂
[解决办法]
sadsadsadsadsadad
[解决办法]
学习。
[解决办法]

[解决办法]
学习。。
[解决办法]
慢慢 学吧
[解决办法]
好好好好好好好好好
[解决办法]
稍微提点意见,个人觉得作为技术文章,应该写下前因后果。。。
比如空间坐标系的基本概念,为什么要用这个对象,否则没接触过gis行业的人会不理解的



[解决办法]
牛人!顶一下!
[解决办法]
不错不错。楼主发的都是精品啊~!
[解决办法]
xiangnixuexi
[解决办法]

探讨
引用:
Bs坐了sf的还切的人

继续BS

[解决办法]
这个资料还真的是挺复杂的呀
[解决办法]
了解,谢谢

[解决办法]
很高深哦!
[解决办法]
懂不起 我是来的积分的
[解决办法]
写成和永生一样了 抄袭了他的思路
[解决办法]
哇哈哈
[解决办法]
谢谢楼主分享。。。顶
[解决办法]
很值得学习哦 看来得多看一些数据库的知识了 温习一下
[解决办法]
路过 看看
[解决办法]
接分。。必须的

[解决办法]
hao 好哈啊和

[解决办法]
       
               
   飘过       拿分   
            
            
            
       ●       ●  
       〃      〃  
                
         
              
           闪人
             
       





[解决办法]
.....
[解决办法]
好好学习了一下
[解决办法]
学习,接分。
[解决办法]
先顶起
[解决办法]
awesome!
markup!
[解决办法]
fredrickhu

敬礼!
[解决办法]
标记。。。。。。。。。。
[解决办法]
非常好,期待下期啊~~
[解决办法]
很好。。收藏了
[解决办法]
好的 我来看看
[解决办法]
不错,谢谢楼主分享
[解决办法]
挺好~~~
[解决办法]
研究中。。。。
[解决办法]
谢谢你的分享!好东西!恩,如每个程序员都像你这样无私奉献的话,那中国软件开发又前进几年了!
[解决办法]
...
[解决办法]
看不懂啊
[解决办法]
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
[解决办法]
清风飘过,顶一下
[解决办法]
学习 了、、、、
[解决办法]

探讨
引用:
SF必须是自己的


BS自己坐sf的

[解决办法]
探讨

稍微提点意见,个人觉得作为技术文章,应该写下前因后果。。。
比如空间坐标系的基本概念,为什么要用这个对象,否则没接触过gis行业的人会不理解的

[解决办法]
真的看不懂啊
[解决办法]
踩踩...路过..学过.
[解决办法]
路过,看不懂
[解决办法]
学习。。
[解决办法]
标个记!!!!!!!!!!!!!
[解决办法]
收藏,学习.

读书人网 >SQL Server

热点推荐