通过WKT构造geography实例
DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING (-122.36 47.656, -122.343 47.656)', 4120);
--定义地理空间数据
通过WKB构造geography实例
DECLARE @g geography;
SET @g =geography::STGeomFromWKB(
0x010300000001000000050000000000000000000000000000000000000000000000000000400000000000000000000000000000004000000000000000400000000000000000000000000000004000000000000000000000000000000000, 4326);
通过GML构造地域实例
DECLARE @g geography;
DECLARE @x xml;
SET @x = '<LineString xmlns="http://www.opengis.net/gml"><posList>47.656 -122.36 47.656 -122.343</posList></LineString>'; --定义GML
SET @g = geography::GeomFromGml(@x, 4120); --通过GML构造实例
SELECT @g.ToString(); --获得地理空间数据的WKT
--系统输出结果:
LINESTRING (-122.36 47.656, -122.343 47.656)
获得地域实例的WKT、WKB和GML
DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING (-122.36 47.656, -122.343 47.656)', 4120);
SELECT @g.ToString(); --输出WKT
SELECT @g.STAsBinary(); --输出WKB
SELECT @g.AsGml(); --输出GML
--系统返回结果:
LINESTRING (-122.36 47.656, -122.343 47.656)
0x010200000002000000D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC08716D9CEF7D34740
<LineString xmlns="http://www.opengis.net/gml"><posList>47.656 -122.36 47.656 -122.343</posList></LineString>
--
--15.3.2节示例
--
获得LineString地域数据类型的起点
DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING (1 1,1 2)', 4326);
SELECT @g.STStartPoint().ToString(); --获得起点的WKT
--系统返回结果:POINT (1 1)
获得LineString地域类型的长度
DECLARE @g geography;
SET @g = geography::STGeomFromText('LINESTRING(0 0,0 1)', 4326);
SELECT @g.STLength(); --系统返回:110574.388493406
SET @g = geography::STGeomFromText('LINESTRING(0 0,1 0)', 4326);
SELECT @g.STLength(); --系统返回:111319.490735885
判断geography实例是否为空
DECLARE @g geography;
SET @g = geography::STGeomFromText('POLYGON EMPTY', 4326);
SELECT @g.STIsEmpty(); --判断地理数据是否为空
--系统返回结果:1
判断geography实例是否闭合
DECLARE @g geography;
SET @g = geography::STGeomFromText('POLYGON((0 0,1 0,1 1,0 1,0 0))', 4326);
SELECT @g.STIsClosed(); --判断地理数据是否闭合
--系统返回结果:1
获得geography实例的总环数
DECLARE @g geography;
SET @g = geography::STGeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0),(1 1,1 1.5,1.5 1.5,1.5 1,1 1))', 4326);
SELECT @g.NumRings(); --获得地理数据类型总环数
--系统返回结果:2
获得geography实例的某个环
DECLARE @g geography;
SET @g = geography::STGeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0),(1 1,1 1.5,1.5 1.5,1.5 1,1 1))', 4326);
SELECT @g.RingN(2).ToString(); --获得某个环
--系统返回结果:
LINESTRING (1 1, 1 1.5, 1.5 1.5, 1.5 1, 1 1)
获得和修改geography数据类型的SRID
DECLARE @g geography;
SET @g = geography::STGeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0),(1 1,1 1.5,1.5 1.5,1.5 1,1 1))', 4326);
SELECT @g.STSrid; --4326
SET @g.STSrid = 4267;
SELECT @g.STSrid; --4327
--
--15.3.3节示例
--
获得geography数据类型Point到Polygon的距离
DECLARE @g geometry;
DECLARE @h geometry;
SET @g = geometry::STGeomFromText('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))', 0);
SET @h = geometry::STGeomFromText('POINT(10 10)', 0);
SELECT @g.STDistance(@h); --返回地理空间数据之间的距离
--系统返回的结果为:11.3137084989848