创建含有几何类型geometry的表
CREATE TABLE geometries (name varchar, geom geometry);
INSERT INTO geometries VALUES
('Point', 'POINT(0 0)'), --插入一个点
('Linestring','LINESTRING(0 0, 1 1,2 1,2 2)'), --插入一条线段
('Polygon', 'POLYGON((0 0, 1 0, 1 1,0 1,0 0))'),--插入一个多边形必须首位相接
('PolygonWithHole', 'POLYGON((0 0, 10 0, 10 10,0 10, 0 0),(1 1, 1 2,2 2,2 1,1 1))'), --中间有个洞的多边形
('Collection', 'GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0,1 1,0 1, 0 0)))'); --一个点和多边形
线段基本操作
ST_AsText:返回一个WKT text
ST_Length:计算线段长度
ST_StartPoint:返回线段开始的第一个坐标点
ST_EndPoint:返回线段最后一个坐标点
ST_NPoints:返回线坐标个数,只对线有用
---------------------线段基本操作----------------------------------
SELECT name, ST_AsText(geom) FROM geometries;--ST_AsText 作为text文本输出
SELECT ST_AsText(geom) FROM geometries WHERE name = 'Linestring';--将geometry最为text文档输出
SELECT ST_Length(geom) FROM geometries WHERE name = 'Linestring'; --线的长度
select ST_AsText(ST_StartPoint(geom)) from geometries where name = 'Linestring';--将线串的第一个坐标作为点返回
select ST_AsText(ST_EndPoint(geom)) from geometries where name = 'Linestring';--将线串的第一个坐标作为点返回
select ST_NPoints(geom) from geometries where name = 'Linestring';--返回线坐标个数,只对线有用
多边形简单操作
ST_Area:求多边形面积
ST_NRings:返回多边形中环的数量
ST_Perimeter:返回闭环的长度包括内环
ST_ExteriorRing:以线串的形式返回多边形最外面的环
ST_InteriorRingN:以线串形式返回指定的内部环
---------------------多边形简单操作---------------------------------
SELECT ST_AsText(geom) FROM geometries WHERE name like 'Polygon%';
SELECT ST_Area(geom) FROM geometries where name like 'Polygon%';--求多边形面积
select ST_NRings(geom) from geometries where name like 'Polygon%';--返回多边形中环的数量
select ST_Perimeter(geom) from geometries where name like 'Polygon%';--返回闭环的长度包括内环
select ST_AsText(ST_ExteriorRing(geom)) from geometries where name like 'Polygon%';--以线串的形式返回多边形最外面的环
select ST_AsText(ST_InteriorRingN(geom , 1)) from geometries where name like 'Polygon%';--以线串形式返回指定的内部环
集合,可以存放多种类型的图形
ST_NumGeometries:返回集合个数
ST_GeometryN:返回第2个集合对象
ST_Area:集合面积,是分别计算并相加
ST_Length:返回集合中所有线段组成部分的总长度
---------------------集合,可以存放多种类型的图形-------------------
select name , ST_AsText(geom) from geometries where name = 'Collection';
select name , ST_NumGeometries(geom) from geometries where name = 'Collection';--返回集合个数
select ST_AsText(ST_GeometryN(geom , 2)) from geometries where name = 'Collection';--返回第2个集合对象
select name , ST_Area(geom) from geometries where name = 'Collection';--集合面积,是分别计算并相加
select ST_Length(geom) from geometries where name = 'Collection';--返回集合中所有线段组成部分的总长度
其它函数操作
ST_GeometryType:返回一个几何类型
ST_SRID:返回一个几何类型的SRID值
UpdateGeometrySRID:更新表的几何类型的SRID值
ST_NDims:返回一个几何类型的维数
ST_AsGeoJSON:json格式输出
select ST_GeometryType(geom) from geometries;--返回一个几何类型
--srid,指的是空间引用标识符。
select ST_SRID(geom) from geometries;--返回一个几何类型的SRID值
select UpdateGeometrySRID('geometries','geom',26918);--更新表的几何类型的SRID值
select ST_NDims(geom) from geometries;--返回一个几何类型的维数
select * from geometry_columns;--查看视图中的表属性值
select * from spatial_ref_sys where srtext ~* 'beijing';--查询北京的SRID值
select ST_AsGeoJSON(geom) from geometries where name = 'Collection'; --json格式输出
--{"type":"GeometryCollection",
-- "geometries":[
-- {"type":"Point","coordinates":[2,0]},
-- {"type":"Polygon","coordinates":[[[0,0],[1,0],[1,1],[0,1],[0,0]]]}
-- ]
--}
--指定SRID
select 'SRID=4326;point(0 0)'::geometry;
select concat('SRID=4326;',ST_AsText(geom))::geometry from geometries where name = 'Point';
srid,指的是空间引用标识符。
空间引用标识符(SRID)
每个空间实例都有一个空间弓|用标识符(SRID)。SRID 对应于基于特定椭圆体的空间引|用系统,可用于平面球体映射或圆球映射。空间列可包含具有不同SRID的对象。然而,在使用SQL Server空间数据方法对数据执行操作时,仅可使用具有相同SRID的空间实例。从两个空间数据实例派生的任何空间方法的结果仅在这两个实例具有相同的SRID (该SRID基于相同的用于确定实例坐标的度量单位、数据和投影)时才有效。SRID 最常见的度量单位为米或平方米。