1、ST_Line_Interpolate_Point

返回一个点内插入一条线。第一个参数必须是 一个LINESTRING类型几何对象,第二个参数是一个float8类型,在0和1之间代表总长度一部分的,这个点将被定位。

geometryST_Line_Interpolate_Point(geometry a_linestring, float a_fraction);

可参考:http://hi.baidu.com/zhwtteng/item/9a6fcb3f79fe12cb1a96966c

示例SQL:

SELECT ST_AsEWKT(ST_Line_Interpolate_Point(the_line, 0.5))
FROM (SELECT ST_GeomFromEWKT('LINESTRING(1 2 3, 4 5 6, 6 7 8)') as the_line) As foo;

SELECT ST_AsText(ST_Line_Interpolate_Point(foo.the_line, ST_Line_Locate_Point(foo.the_line, ST_GeomFromText('POINT(4 3)'))))
FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)') As the_line) As foo;

2、ST_Line_Locate_Point

返回a_point离a_linestring在上最近的点位置(这个位置表示为一个0到1浮点数)。点具体的位置我们可以使用前面介绍的ST_Line_Interpolate_Point取出。

floatST_Line_Locate_Point(geometry a_linestring, geometry a_point);

示例SQL:

SELECT ST_AsText(house_loc) As as_text_house_loc,startstreet_num +
CAST( (endstreet_num - startstreet_num)*ST_Line_Locate_Point(street_line, house_loc) As integer) As street_num
FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 3 4)') As street_line,ST_MakePoint(x*1.01,y*1.03) As house_loc, 10 As startstreet_num,
20 As endstreet_num FROM generate_series(1,3) x CROSS JOIN generate_series(2,4) As y)
As foo WHERE ST_DWithin(street_line, house_loc, 0.2);

3、ST_Line_Substring

返回一个线对象,作为一个的子字符串输入开始和结束在二维总长度的分数。第二个和第三个参数是 0和1之间的浮点数。

geometryST_Line_Substring(geometry a_linestring, float startfraction, float endfraction);

示例SQL:

SELECT ST_AsText(ST_Line_SubString(ST_GeomFromText('LINESTRING(25 50, 100 125, 150 190)'), 0.333, 0.666));

4、ST_LocateAlong

返回一个根据指定的测量值与元素相匹配的导出几何对象。不支持面元素。

geometryST_LocateAlong(geometry ageom_with_measure, float a_measure, float offset);

示例SQL:

SELECT ST_AsText(the_geom) FROM (SELECT ST_LocateAlong(
ST_GeomFromText('MULTILINESTRINGM((1 2 3, 3 4 2, 9 4 3),
(1 2 3, 5 4 5))'),3) As the_geom) As foo;

5、ST_LocateBetween (2.0.0版本叫 ST_Locate_Between_Measures)

根据量测值获得几何对象.

geometryST_LocateBetween(geometry geomA, float measure_start, float measure_end, float offset);

示例SQL:

SELECT ST_AsText(the_geom)
FROM
(SELECT ST_LocateBetween(
ST_GeomFromText('MULTILINESTRING M ((1 2 3, 3 4 2, 9 4 3),
(1 2 3, 5 4 5))'),1.5, 3) As the_geom) As foo;

6、ST_LocateBetweenElevations

根据量测值返回一个几何对象集合,这个只支持3D, 4D LINESTRINGS and MULTILINESTRINGS。

geometryST_LocateBetweenElevations(geometry geom_mline, float elevation_start, float elevation_end);

示例SQL:

--Geometry collections are difficult animals so dump them
--to make them more digestable
SELECT ST_AsEWKT((ST_Dump(the_geom)).geom)
FROM
(SELECT ST_LocateBetweenElevations(
ST_GeomFromEWKT('LINESTRING(1 2 6, 4 5 -1, 7 8 9)'),6,9)As the_geom) As foo

7、ST_InterpolatePoint

返回几何点闭合提供的点的测量维度值。

floatST_InterpolatePoint(geometry line, geometry point);

示例SQL:

SELECT ST_InterpolatePoint('LINESTRING M (0 0 0, 10 0 20)', 'POINT(5 5)');

8、ST_AddMeasure

返回一个导出几何对象在开始和结束点之间线性内插一些元素。如果几何没有测量尺寸,添加一个。如果几何形状有一个测量维度,它超出写入一个新值。只支持LINESTRINGS 和 MULTILINESTRINGS。

geometryST_AddMeasure(geometry geom_mline, float measure_start, float measure_end);

示例SQL:
SELECT ST_AsText(ST_AddMeasure(
ST_GeomFromEWKT('MULTILINESTRINGM((1 0 4, 2 0 4, 4 0 4),(1 0 4, 2 0 4, 4 0 4))'),10,70)) As ewelev;

转载于:https://www.cnblogs.com/LCGIS/archive/2013/03/21/2974278.html

PostGIS之路——线性参考相关推荐

  1. 基于PostGIS的高级应用(3)--线性参考

    2019独角兽企业重金招聘Python工程师标准>>> 一 线性参考干啥用的   如果直接写个"高大上"的定义结果往往是一脸懵逼的,也不知道为什么要定义这么一个概 ...

  2. ArcGIS水文分析实战教程(18) 河段桩号与线性参考

    ArcGIS水文分析实战教程(18) 河段桩号与线性参考 本章导读:在很多线性要素的应用中,桩号扮演着非常重要的角色.例如高速公路,使用桩号可以快速的描述某个事件在该路段的大概位置.同样是线性要素的河 ...

  3. Introduction to PostGIS 之线性参考、地理编码

    今天学习了postGIS中的两个很有用的方法: ST_Line_Interpolate_Point geometry ST_Line_Interpolate_Point(geometry a_line ...

  4. PostGIS之路--AddGeometryColumn函数--添加一个几何类型字段

    1.AddGeometryColumn 添加一个几何类型字段到已经存在的可用表中,默认情况下使用类型修饰符定义约束.该i函数实现版本较早,支持3D但不能删除z,也支持添加圆和曲面. 函数: text ...

  5. 我的Linux学习之路及参考书籍

    学习目的 很简单的考虑,最近在各大招聘网站上找工作,发现多数c/c++开发职位都需要Linux开发经验,让我很苦恼,因为Linux我到目前为止知之甚少,知道Linux的概念,也在大学期间了解过一段时间 ...

  6. PostGIS之路——几何对象编辑(二)

    1.ST_Reverse 返回几何对象顶点顺序相反的几何对象. geometry ST_Reverse(geometry g1); 示例SQL: SELECT ST_AsText(the_geom) ...

  7. postgresql中装gis插件_Postgresql 空间扩展需要Postgis插件

    下载Postgis Postgresql扩展Postgis Windows: SQL Shell进入需要扩展Postgis的数据库. hngsmm=# CREATE EXTENSION postgis ...

  8. PostGIS官方教程汇总目录

    新增文章:Linux(centos)中使用源码安装PostGIS 一.PostGIS介绍 二.PostGIS安装 三.创建空间数据库 四.加载空间数据 五.数据 六.简单的SQL语句 七.几何图形(G ...

  9. PostgreSQL+PostGIS的使用

    一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...

最新文章

  1. 【C++】google gflags详解
  2. 分布式技术追踪 2017年第十二期
  3. RealPlayer 15正式发布 简体中文版下载
  4. 快速掌握一个语言最常用的50%
  5. vxworks操作系统_【7.10开播】最新自主研发工业操作系统发布会行业top来助阵,邀您共同见证(附报名)...
  6. iOS开发简单高效的数据存储
  7. MSP430F5529 DriverLib 库函数学习笔记(十六)比较器B Comp_B
  8. 关于Redis缓存,这三个问题一定要知道!
  9. atom python教程_对于新手来说 如何用atom搭建python的ide?
  10. 我们是这样写升级日志的,处处可以体现人文情怀
  11. ASP.NET生成Excel并下载
  12. 怎么在电脑上进行屏幕录像?电脑录屏的方法
  13. 9.3 匿名性和隐私性
  14. H5网站接入微信支付(H5支付+JSAPI支付)
  15. 我复盘了自己的工作,总结了这个跨境支付产品经理的成长经验给你
  16. Jsp jsp实现原理
  17. bzoj5470 / P4578 [FJOI2018]所罗门王的宝藏//(尚未修正)
  18. 【蓝桥杯备战】Day03
  19. “撒旦”勒索病毒再曝4.2变种 腾讯电脑管家文档守护者可一招解密
  20. 【深度思考,极客大学Java进阶训练营

热门文章

  1. C++求n个字符的长度为m的组合
  2. 谁说子网掩码的1必须连续?关于像255.255.0.255这样的非连续子网掩码
  3. pytorch 保存网络的时候值得注意的事情
  4. Educational Codeforces Round 66 (Rated for Div. 2) B. Catch Overflow!
  5. 利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
  6. 观点 | 有区块链就一定能创新吗?区块链改变了什么、改变不了什么?
  7. 图(1)——图的定义和基本概念
  8. Google的Java开发规范
  9. SqlDataReader执行带输出参数存储过程 错误分析
  10. Linux的cat、more、less有什么区别