PostGreSQL(五)PostGIS-常⽤函数
PostGIS中的常⽤函数
图形和地理位置
ST_GeometryType(geometry) —— 返回⼏何图形的类型
ST_Transform(geometry, srid)——将⼏何图形投影为地理坐标数据或转换为不同srid坐标系统的坐标数据
Geography(geometry)——将基于EPSG:4326(srid=4326)的geometry数据类型转换为geography数据类型
ST_NDims(geometry) —— 返回⼏何图形的维数
ST_SRID(geometry) —— 返回⼏何图形的空间参考标识码 srid
ST_SetSRID(geometry,SRID)——设置srid
sum(expression) ——返回⼀个计算式/表达式的和
count(expression) ——返回⼀个表达式中的次数
PS : geometry,是⼏何类型的列的列名
srid,不同的srid就是不同标准的坐标系
点空间函数:
ST_X(geometry) —— 返回X坐标
ST_Y(geometry) —— 返回Y坐标
线串空间函数:
ST_Length(geometry) —— 返回线串的长度
ST_StartPoint(geometry) —— 将线串的第⼀个坐标作为点返回
ST_EndPoint(geometry) —— 将线串的最后⼀个坐标作为点返回
ST_NPoints(geometry) —— 返回线串的坐标数量
多边形空间函数:
ST_Area(geometry) —— 返回多边形的⾯积
ST_NRings(geometry) —— 返回多边形中环的数量(通常为1个,其他是孔)
ST_ExteriorRing(geometry) —— 以线串的形式返回多边形最外⾯的环
ST_InteriorRingN(geometry, n) —— 以线串形式返回指定的内部环
ST_Perimeter(geometry) —— 返回所有环的长度
集合空间函数(多点、多线、多⾯、任意图形组合):gis字符串是什么
ST_NumGeometries(geometry) —— 返回集合中的组成部分的数量
ST_GeometryN(geometry, n) —— 返回集合中指定的组成部分
ST_Area(geometry) —— 返回集合中所有多边形组成部分的总⾯积
ST_Length(geometry) —— 返回所有线段组成部分的总长度
⼏何图形输⼊和输出
在数据库中,⼏何图形(Geometry)以仅供PostGIS使⽤的格式存储在磁盘上。为了让外部程序插⼊和检索有⽤的⼏何图形信息,需要将它们转换为其他应⽤程序可以理解的格式。
①Well-known text()
ST_GeomFromText(text, srid) —— 返回geometry,除⾮指定SRID,否则将得到⼀个包含未知SRID的⼏何图形
ST_GeographyFromText(text)——返回Geography
ST_AsText(geometry) —— 返回text
ST_AsEWKT(geometry) —— 返回text
②Well-known binary()
ST_GeomFromWKB(bytea) —— 返回geometry
ST_AsBinary(geometry) —— 返回bytea
ST_AsEWKB(geometry) —— 返回bytea
③Geographic Mark-up Language()
ST_GeomFromGML(text) —— 返回geometry
ST_ASGML(geometry) —— 返回text
④Keyhole Mark-up Language()
ST_GeomFromKML(text) —— 返回geometry
ST_ASKML(geometry) —— 返回text
⑤
ST_AsGeoJSON(geometry) —— 返回text
⑥Scalable Vector Graphics()
ST_AsSVG(geometry) —— 返回text
以上函数最常见的⽤法是将⼏何图形的⽂本(text)表⽰形式转换为内部表⽰形式
请注意,除了具有⼏何图形表⽰形式的⽂本参数外,还可以指定⼀个提供⼏何图形SRID的数字参数。
图形关系
ST_Equals(geometry A, geometry B)
⽤于测试两个图形的空间相等性。
如果两个相同类型的⼏何图形具有相同的x、y坐标值,即如果第⼆个图形与第⼀个图形的坐标信息相等(相同),则ST_Equals()返回TRUE。
ST_Intersects、ST_Disjoint、ST_Crosses和ST_Overlaps
ST_Intersects、ST_Crosses和ST_Overlaps测试⼏何图形是否相交。
如果两个图形有重合的部分,即如果它们的边界或内部相交,则ST_Intersects(geometry A, geometry B)返回TRUE
ST_Disjoint(geometry A, geometry B),如果两个⼏何图形没有重合的部分,则它们不相交,反之亦然。事实上测试"not intersect"通常⽐测试"disjoint"更有效,因为intersect测试可以使⽤空间索引
对于multipoint/polygon、multipoint/linestring、linestring/linestring、linestring/polygon和linestring/multipolygon的⽐较,如果相交⽣成的⼏何图形的维度⼩于两个源⼏何图形的最⼤维度,且相交集位于两个源⼏何图形的内部,则ST_Crosses(geometry A, geometry
B)将返回TRUE。
ST_Overlaps(geometry A, geometry B)⽐较两个相同维度的⼏何图形,如果它们的结果集与两个源⼏何图形都不同但具有相同维度,则返回TRUE。
ST_Touches()
测试两个⼏何图形是否在它们的边界上接触,但在它们的内部不相交
如果两个⼏何图形的边界相交,或者只有⼀个⼏何图形的内部与另⼀个⼏何图形的边界相交,则ST_Touches(geometry A, geometry
B)将返回TRUE
ST_Within和ST_Contains
ST_Within()和ST_Contains()测试⼀个⼏何图形是否完全位于另⼀个⼏何图形内
如果第⼀个⼏何图形完全位于第⼆个⼏何图形内,则ST_Within(geometry A, geometry B)返回TRUE,ST_Within()测试的结果与ST_Contains()完全相反
如果第⼆个⼏何图形完全包含在第⼀个⼏何图形内,则ST_Contains(geometry A, geometry B)返回TRUE
ST_Distance和ST_DWithin
ST_Distance(geometry A, geometry B)计算两个⼏何图形之间的最短距离,并将其作为浮点数返回。这对于实际报告⼏何图形之间的距离⾮常有⽤
ST_DWithin(),测试两个⼏何图形之间的距离是否在某个范围之内,
geography类型
ST_AsText(geography) returns text
ST_GeographyFromText(text) returns geography
ST_AsBinary(geography) returns bytea
ST_GeogFromWKB(bytea) returns geography
ST_AsSVG(geography) returns text
ST_AsGML(geography) returns text
ST_AsKML(geography) returns text
ST_AsGeoJson(geography) returns text
ST_Distance(geography, geography) returns double
ST_DWithin(geography, geography, float8) returns boolean
ST_Area(geography) returns double
ST_Length(geography) returns double
ST_Covers(geography, geography) returns boolean
ST_CoveredBy(geography, geography) returns boolean
ST_Intersects(geography, geography) returns boolean
ST_Buffer(geography, float8) returns geography[
ST_Intersection(geography, geography) returns geography[
geography转换为geometry
PostgreSQL的类型转换语法是将 ::typename 附加到希望转换的值的末尾。因此,2::text将数字2转换为⽂本字符串"2";'POINT(0 0)' :: geometry将点的⽂本表⽰形式转换为geometry点
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论