PostGIS学习教程十七:线性参考

PostGIS学习教程十七:线性参考

线性参考是一种表示要素的方法,这些要素可以通过引用一个基本的线性要素来描述。使用线性参照建模的常见示例包括:

公路资产,这些资产使用公路网络沿线的英里来表示。
道路养护作业,指在一对英里测量之间沿着公路网发生的作业。
水产库存,其中鱼的存在位置被记录为距离上游的一段位置之间。
河流的水文特征,以河流的某一个点到另一个点作为参考。
线性参考模型的优点是,从属空间观测信息不需要与基准空间观测信息分开记录,对基础观测信息进行更新时,从属观测信息将自动更新从而追踪新几何图形。

注意:ESRI的线性参照约定是有一个线性空间要素的基表和一个非空间的事件表,其中非空间的事件表包括对空间要素的外键引用和沿参照要素的测量值。我们将使用术语"事件表(event table)"来表示我们构建的非空间表。

文章目录

  • PostGIS学习教程十七:线性参考
  • 一、创建线性参考
  • 二、相关函数列表


一、创建线性参考

如果有一个要引用到线性网络的现有点表,要计算各点的线性参考比例,请使用ST_LineLocatePoint函数,该函数接受线串和点,并返回该点沿线串的线性参考比例。

-- Simple example of locating a point half-way along a line
SELECT ST_LineLocatePoint('LINESTRING(0 0, 2 2)', 'POINT(1 1)');
-- Answer 0.5
 
-- What if the point is not on the line? It projects to closest point
-- 即做(0, 2)点到线串(0 0, 2 2)的垂线,使用对应的垂足点来求线性参考比例
SELECT ST_LineLocatePoint('LINESTRING(0 0, 2 2)', 'POINT(0 2)');
-- Answer 0.5

我们可以使用ST_LineLocatePoint函数根据nyc_subway_stations创建相对于街道的"事件表"。
– 下面所有的SQL都是用来创建新的事件表的

CREATE TABLE nyc_subway_station_events AS
-- 我们首先需要找到一组可能最接近的候选者
-- streets, 按id和distance排列...
WITH ordered_nearest AS (
SELECT
  ST_GeometryN(streets.geom,1) AS streets_geom,
  streets.gid AS streets_gid,
  subways.geom AS subways_geom,
  subways.gid AS subways_gid,
  ST_Distance(streets.geom, subways.geom) AS distance
FROM nyc_streets streets
  JOIN nyc_subway_stations subways
  ON ST_DWithin(streets.geom, subways.geom, 200)
ORDER BY subways_gid, distance ASC
)
-- 我们使用'distinct on'使每个地铁站信息只出现一次。
-- 然后,我们可以将这条街道信息置入ST_LinLocatePoint函数,使其沿着它的候选地铁站来计算
SELECT
  DISTINCT ON (subways_gid)
  subways_gid,
  streets_gid,
  ST_LineLocatePoint(streets_geom, subways_geom) AS measure,
  distance
FROM ordered_nearest;
 
-- 主码对于可视化软件很有用
ALTER TABLE nyc_subway_station_events ADD PRIMARY KEY (subways_gid);

在这里插入图片描述
一旦我们有了一个事件表,将其转换回一个空间视图是很有趣的,这样我们就可以将事件相对于派生出它们的原始点进行可视化。

要从线性参考比例值得到位于线段上的对应点,我们可以使用ST_LineInterpolatePoint函数,下面是关于我们前面的简单例子的逆过程:

-- Simple example of locating a point half-way along a line
SELECT ST_AsText(ST_LineInterpolatePoint('LINESTRING(0 0, 2 2)', 0.5));
 
-- Answer POINT(1 1)

在这里插入图片描述
我们可以将nyc_subway_station_events表连接回nyc_streets表,并使用measure属性生成空间事件点(这个示例中是地铁站点),而无需引用原始nyc_subway_stations表。

-- New view that turns events back into spatial objects
CREATE OR REPLACE VIEW nyc_subway_stations_lrs AS
SELECT
  events.subways_gid,
  ST_LineInterpolatePoint(ST_GeometryN(streets.geom, 1), events.measure) AS geom,
  events.streets_gid
FROM nyc_subway_station_events events
JOIN nyc_streets streets
ON (streets.gid = events.streets_gid);

在这里插入图片描述
查看街道上的原始地铁站点(红星)和事件点(蓝色圆圈),你可以看到事件是如何被直接捕捉到最近的街道线的(事件点全部位于街道线上)。
在这里插入图片描述
注意:线性参考函数的一个令人惊讶的用法与线性参考模型无关。如上所示,可以使用这些函数将点捕捉到线性要素(即可以使用线性参考来实现捕捉功能)。对于像GPS轨迹或其他预期参考线性网络的输入这样的用例,捕捉是一个方便的功能。

二、相关函数列表

ST_LineInterpolatePoint(geometry A, double measure): Returns a point interpolated along a line.
ST_LineLocatePoint(geometry A, geometry B): Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point.
ST_Line_Substring(geometry A, double from, double to): Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d length.
ST_Locate_Along_Measure(geometry A, double measure): Return a derived geometry collection value with elements that match the specified measure.
ST_Locate_Between_Measures(geometry A, double from, double to): Return a derived geometry collection value with elements that match the specified range of measures inclusively.
ST_AddMeasure(geometry A, double from, double to): Return a derived geometry with measure elements linearly interpolated between the start and end points. If the geometry has no measure dimension, one is added.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/295323.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AOP(面向切面编程)基于XML方式配置

概念解释:(理解基本概念方可快速入手) 连接点(joinpoint) 被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法。 切入点(pointcut&#x…

主题-----读微信公众号

1.SOA 面向服务的架构(Service-Oriented Architecture,SOA)还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述,较为典型的有以下三个: (1)W3C 的定义:SOA 是…

MySQL-DCL

DCL是数据控制语言,用来管理数据库用户,控制数据库的访问权限。 管理用户:管理哪些用户可以访问哪些数据库 1.查询用户 USE mysql; SELECT * FROM user; 注意: MySQL中用户信息和用户的权限信息都是记录在mysql数据库的user表中的…

D-Link DES-108 交换机

D-Link DES-108 交换机 1. 百兆交换机 8 口References ​ D-Link Corporation is a Taiwanese multinational networking equipment manufacturing corporation headquartered in Taipei, Taiwan. Taiwanese:adj. 台湾的 n. 台湾人 headquarter [hedkwɔ:tə]&#…

深入理解Python中的二分查找与bisect模块

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

数据采集:获取有价值信息的关键步骤

在当今数据驱动的时代,数据已成为企业、组织和个人做出明智决策的重要依据。而数据采集作为数据分析和应用的第一步,其重要性不言而喻。本文将探讨数据采集的概念意义、方法工具、面临的挑战和应对策略以及注意事项。 一、数据采集的定义和重要性 &…

HTTP基础知识总结

目录 一、什么是HTTP? 二、与HTTP有关的协议 三、HTTP请求特征 四、HTTP组成格式 五、HTTP标头 1.通用标头 2.实体标头 3.请求标头 4.响应标头 六、HTTP状态码分类 我们在日常测试过程中,也可以通过浏览器F12简单定位是前端问题还是后端问题&a…

css学习之路:sass学习基础篇

SCSS 一、动态的样式语言 让CSS有变量的概念css有很多的缺点 语法不够强大,没有变量和合理的样式复用机制,导致难以维护,我们就可以使用动态样式语言,赋予CSS新的特性。常见的动态样式语言 scss/sass(scss兼容sass&am…

厚积薄发11年,鸿蒙究竟有多可怕

12月20日中国工程院等权威单位发布**《2023年全球十大工程成就》。本次发布的2023全球十大工程成就包括“鸿蒙操作系统”在内。入围的“全球十大工程成就”,主要指过去五年由世界各国工程科技工作者合作或单独完成且实践验证有效的,并且已经产生全球影响…

云尚办公项目学习

完整的笔记可以参考这个专栏,写的挺详细的:云尚办公课件笔记,come on boy form-create前端组件 formProps记录了表单有哪些表单项,分别是哪些类型(下拉,单选,输入框) formOptions记…

周鸿祎分享大模型十大趋势:2024将出现杀手级应用

1月5日,“2023年风马牛年终秀”上,三六零(601360.SH,下称“360”)集团创始人周鸿祎分享了对2024年大模型发展趋势的十大预测,呼吁企业树立AI信仰,All in AI。他认为,创新才能破局&am…

shell脚本实现九九乘法表

9*9乘法表 判断服务是否开启 1.查看80端口是否被监听 [rootlocalhost ~]# ss -an | grep 80 tcp LISTEN 0 128 *:80 *:* 2.查看80端口/httpd服务是否开启 [rootlocalhost ~]# n…

【Python学习】Python学习2

目录 【Python学习】Python学习2 1.前言2.基本语法2.1标识符2.2保留字2.3行和缩进2.4多行语句2.5 Python 引号2.6 Python注释2.7 Python空行2.8 等待用户输入2.9 print 输出2.10 多个语句构成代码组2.11 命令行参数 参考 文章所属专区 Python学习 1.前言 主要是Python基本语…

《Python自动化测试九章经》

Python是当前非常流行的一门编程语言,它除了在人工智能、数据处理、Web开发、网络爬虫等领域得到广泛使用之外,他也非常适合软件测试人员使用,但是,对于刚入行的测试小白来说,并不知道学习Python语言可以用来完成哪些测…

kali-Linux安装ARL灯塔教程以及timeout of 20000ms exceeded 的解决方法

FLAG:别和妈妈诉苦,她帮不上,也睡不着。 专研方向: docker,ARL资产灯塔系统 每日emo:天冷了,你还在坚持吗? 欢迎各位与我这个菜鸟交流学习 kali安装ARL灯塔教程 1.安装docker环境,…

使用爬虫爬取热门电影

文章目录 网站存储视频的原理M3U8文件解读网站分析代码实现 网站存储视频的原理 首先我们来了解一下网站存储视频的原理。 一般情况下&#xff0c;一个网页里想要显示出一个视频资源&#xff0c;必须有一个<video>标签&#xff0c; <video src"xxx.mp4"&…

win7系统报错msvcp140.dll丢失的多种解决方法分享

在Windows 7操作系统中&#xff0c;msvcp140.dll是一个非常重要的动态链接库文件&#xff0c;它负责许多应用程序的正常运行。然而&#xff0c;由于各种原因&#xff0c;我们可能会遇到丢失msvcp140.dll的问题。当msvcp140.dll文件丢失或损坏时&#xff0c;可能会导致程序无法启…

Go语言中的HTTP请求和响应处理

在Web开发中&#xff0c;HTTP请求和响应是核心的交互方式。Go语言&#xff0c;作为一种高效且现代的编程语言&#xff0c;为开发者提供了简洁、强大的工具来处理HTTP请求和响应。本文将简要介绍在Go语言中如何处理HTTP请求和响应。 在Go语言中&#xff0c;HTTP请求和响应的处理…

c语言-函数指针

目录 前言一、函数指针1.1 函数指针定义1.2 函数指针调用函数1.3 函数指针代码分析 总结 前言 本篇文章介绍c语言中的函数指针以及函数指针的应用。 一、函数指针 函数指针&#xff1a;指向函数的指针。 函数在编译时分配地址。 &函数名 和 函数名代表的意义相同&#xf…

Linux下从sqlite3源码编译出sqlite3库及相关可执行程序

目录 1. 下载sqlite3源码并编译 2. 下载Tcl库并编译 3. 再次编译sqlite源码 1. 下载sqlite3源码并编译 打开SQLite Download Page&#xff0c;滚动到页面的下面&#xff0c;找到源码量最大的那个&#xff08;其它的估计也行&#xff0c;但源码最大的本人感觉功能最全&#…