postgis 常用函数

一.坐标处理

    1.ST_AsText(geometry g1); 取得坐标。例如:ST_AsText(geom)值为: POINT(118.84639183778 37.4281744123688)

    2.ST_GeomFromText(text WKT, integersrid);将坐标转化成geom。例如:ST_GeomFromText('point(118.84639183778 37.4281744123688)' ,4326);

    3.ST_SetSRID(geometry, integer)给一个几何对象(geometry)设置一个整型的SRID,对于在一个范围内的查询非常有用。

    4.ST_Distance(geometry, geometry)返回两个几何对象的距离(笛卡尔),不使用索引。

    5.ST_DWithin(geometryA, geometryB, double b  )如果一个几何对象(geometryA)在另一个几何对象(geometryB)描述的距离(double)内,返回TRUE。b:单位为  度  。

    6.ST_Disjoint(geometry, geometry)如果两个对象不相连,则返回TRUE

    7.ST_Crosses(geometry, geometry)如果两个几何空间对象存在交叉,则返回TRUE

    8.ST_Touches(geometry, geometry)如果两个几何空间对象存在接触,则返回TRUE

    9.ST_Crosses(geometry, geometry)如果两个几何空间对象存在交叉,则返回TRUE

   10.ST_Within(geometry A, geometry B)如果几何空间对象A存在空间对象B,则返回TRUE。

   11.ST_Overlaps(geometry, geometry)如果两个几何空间数据存在交迭,则返回 TRUE。

   12.ST_Contains(geometry A, geometry B)如果几何空间对象A包含空间对象B,则返回 TRUE。

   13.ST_Covers(geometry A, geometry B)如果几何空间对象B中的所有点都在空间对象A,则返回 TRUE

   14.ST_Buffer(geometry, doubleradius_of_buffer)返回小于等于距离的空间。

   15.GeometryType(geometry)判断几何空间数据的类型(POINT、LINESTRING、POLYGON、MULTIPOINT、 MULTILINESTRING 、MULTIPOLYGON)。

二.空间处理与分析

     单位的换算关系如下:
     1
英里= 63360
    
=1/1852海里
    
海里= 1/60
     果要进行具体的运算,需要进行一下单位换算,比如要求一个1000米的范围,那么应该是  :1000*1/1852*1/60(度)

    1.缓冲区分析(点、线、面),下面以点举例。

        (1)取得查询1000米的缓冲区:select * from table ST_AsText(ST_Buffer(ST_GeomFromText('POINT(118.84639183778 37.4281744123688)'), 0.008999280));

       结果:POLYGON((118.85539111778 37.4281744123688,118.855218199138 37.4264187399357,118.854706088379 37.4247305370096,118.853874465633 37.4231746802822,118.852755289694 37.421810960455,118.851391569867 37.4206917845162,118.849835713139 37.4198601617695,118.848147510213 37.4193480510106,118.84639183778 37.4191751323688,118.844636165347 37.4193480510106,118.842947962421 37.4198601617695,118.841392105693 37.4206917845162,118.840028385866 37.421810960455,118.838909209927 37.4231746802822,118.838077587181 37.4247305370096,118.837565476422 37.4264187399357,118.83739255778 37.4281744123688,118.837565476422 37.4299300848019,118.838077587181 37.431618287728,118.838909209927 37.4331741444554,118.840028385866 37.4345378642826,118.841392105693 37.4356570402214,118.842947962421 37.4364886629681,118.844636165347 37.437000773727,118.84639183778 37.4371736923688,118.848147510213 37.437000773727,118.849835713139 37.4364886629681,118.851391569867 37.4356570402214,118.852755289694 37.4345378642826,118.853874465633 37.4331741444554,118.854706088379 37.431618287728,118.855218199138 37.4299300848019,118.85539111778 37.4281744123688))

     (2)查询分析举例该点(118.84639183778 37.4281744123688)100米内的街道:select  streetname from  layer where   ST_DWithin(geom,ST_GeomFromText('point(118.84639183778 37.4281744123688)'),0.0008999280);

 2.空间查询

    以后整理
   




### PostGIS 空间函数概述 PostGIS 提供了大量的空间函数来支持地理空间数据分析和操作。这些函数可以分为几大类,包括但不限于几何构造、几何测量、几何关系判断、转换和其他辅助功能。 #### 几何构造函数 用于创建新的几何对象或修改现有几何对象: - `ST_Buffer(geometry geomA, float width)`:返回给定宽度的缓冲区多边形[^1]。 ```sql SELECT ST_Buffer(ST_GeomFromText('POINT(0 0)'), 5); ``` - `ST_ConvexHull(geometry geomA)`:返回输入几何体的凸包。 ```sql SELECT ST_ConvexHull(ST_Collect( ARRAY[ ST_GeometryFromText('POLYGON((0 0,4 0,4 4,0 4,0 0))'), ST_GeometryFromText('POLYGON((5 5,7 5,7 7,5 7,5 5))') ] )); ``` #### 几何测量函数 提供关于几何属性的信息,如长度、面积等: - `ST_Length(geometry a_geom)`:返回线串或多线串的总长度。 ```sql SELECT ST_Length(ST_GeomFromText('LINESTRING(0 0, 1 1, 2 2)')); ``` - `ST_Area(geometry g)`:计算并返回多边形或多面体表面区域大小。 ```sql SELECT ST_Area(ST_Polygon(ST_MakeLine( ARRAY[ ST_Point(0, 0), ST_Point(0, 5), ST_Point(5, 5), ST_Point(5, 0), ST_Point(0, 0) ]), 0)); ``` #### 关系判断函数 评估两个几何图形之间的拓扑关系: - `ST_Intersects(geometry A, geometry B)`:如果两个几何形状相交则返回 true;否则 false。 ```sql SELECT ST_Intersects( ST_GeomFromText('LINESTRING (0 0 , 1 1)'), ST_GeomFromText('POINT (0.5 0.5)') ); ``` - `ST_Contains(geometry A, geometry B)`:测试集合论上的包含关系,即B完全位于A内部时返回true[^4]。 ```sql SELECT ST_Contains( ST_Polygon(ST_MakeLine( ARRAY[ ST_Point(0, 0), ST_Point(0, 5), ST_Point(5, 5), ST_Point(5, 0), ST_Point(0, 0) ]), 0), ST_Point(2, 2) ); ``` #### 投影变换及其他实用工具 允许用户在不同坐标参照系统之间转换数据,并执行其他常见任务: - `ST_Transform(geometry geomA, integer srid)`:将几何体从一种SRID转换到另一种指定的SRID。 ```sql SELECT ST_AsEWKT(ST_Transform( ST_SetSrid(ST_MakePoint(-71.060316, 48.432044), 4326), 900913 )); ``` 以上仅列举了一部分常用空间函数,在实际开发过程中可能还会涉及到更多特定场景下的高级用法。对于更详尽的学习资料推荐查阅官方文档或者《PostGIS中文手册》以获取最新最全的知识体系[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值