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 (
SELECTST_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 streetsJOIN nyc_subway_stations subwaysON ST_DWithin(streets.geom, subways.geom, 200)
ORDER BY subways_gid, distance ASC
)
-- 我们使用'distinct on'使每个地铁站信息只出现一次。
-- 然后,我们可以将这条街道信息置入ST_LinLocatePoint函数,使其沿着它的候选地铁站来计算
SELECTDISTINCT 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
SELECTevents.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.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java大数据hadoop2.92安装伪分布式文件系统

Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster. 1、解压缩到某个路径 /usr/local/hadoop 2、修改配置文件 /usr/local/hadoop/etc/hadoop/hadoop-env.sh export JAVA_HOME/usr/local/javajdk 3、修改配置文件 /usr/local/hadoop/etc/hadoop/core-sit…

(八)矩阵按键

文章目录 本章学习类比独立按键矩阵按键原理图三行代码法简单概述代码书写键码推算如何使用短按键长按键不松手长按键松手长按键 状态机法简单概述代码书写键码推算如何使用短按键长按键不松手长按键松手长按键 部分代码展示现象演示 本章学习类比独立按键 矩阵按键原理图 三行…

Swagger Editor 教程:从入门到精通编写 API 文档

在 API 开发的领域中,Swagger 以其卓越的使用效率与便捷性,备受开发者欢迎。它是一个强大的接口设计工具,允许开发人员对 RESTful API 进行高效的设计、构建及测试工作。本文旨在深入探讨其中一个子工具——Swagger Editor的使用介绍及它的有…

《知识扫盲》ROS和ROS2对比

文章摘选自:ROS与ROS2对比 1.ROS问题举例 ROS的设计目标是简化机器人的开发,如何简化呢?ROS为此设计了一整套通信机制(话题、服务、参数、动作)。 通过这些通信机制,ROS实现了将机器人的各个组件给的连接…

如何用自助法或刀切法来估计偏差、方差?

自助法和刀切法(也叫水手刀法)为计算标准误差和置信区间的非参数方法。刀切法耗费较少计算机资源,但自助法有某些统计优势。 1. 刀切法 由Quenouille(1949)提出的刀切法是用来对估计的偏差和方差进行近似的一个简单方法。 符号说明&#x…

VMware--安装CentOS系统

在虚拟机安装CentOS系统 1 下载CentOS镜像 方式一:可以到官网下载,下载速度较慢。 https://vault.centos.org/7.6.1810/isos/x86_64/ (最后的 / 不要漏掉) 方式二:可以到国内的镜像网站下载。 阿里开源镜像站&…

线性代数_逆矩阵性质

逆矩阵是线性代数中一个非常重要的概念,它具有以下几个基本性质: 1. 可逆矩阵一定是方阵:一个矩阵若要可逆,必须是方阵,即它的行数和列数相等。 2. 逆矩阵的唯一性:如果矩阵\( A \)是可逆的,那么…

sun.misc.BASE64Encoder() 找不到jar包

import sun.misc.BASE64Decoder;新下载的项目,在配置好maven之后,也更新完了Maven文件,还是发现有部分jar没有导入,报红信息如上所示。 其实这个是 Sun 的专用 API , rt.jar 是jre 中自带的 jar 包,所以就可…

ubuntu18.04+realsenseD455制作TUM数据集

教程目录 一、本机环境二、安装RealSense SDK三、录制rosbag四、制作数据集四、安装ROS-RealSense五、测试数据集一、本机环境 Ubuntu系统ROS系统RealSense18.04melodicD455二、安装RealSense SDK 1、首先注册服务器的公钥 sudo apt-key adv --keyserver keyserver.ubuntu.co…

全网最全fiddler使用教程和fiddler如何抓包(fiddler手机抓包)-笔者亲测

一、前言 抓包工具有很多,比如常用的抓包工具Httpwatch,通用的强大的抓包工具Wireshark.为什么使用fiddler?原因如下: 1.Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎…

Linux操作系统基础(09):Linux的文件权限

1. 文件权限是什么 在Linux系统中,文件权限是指对文件或目录的访问权限控制,它由三个部分组成:所有者权限、组权限和其他用户权限。文件权限和用户权限之间有密切的关系,文件权限规定了用户对文件的操作权限,而用户权…

CSIG青年科学家会议圆满举行,合合信息打造智能文档处理融合研究新范式

近期,第十九届中国图象图形学学会青年科学家会议(简称“会议”)在广州召开。会议由中国图象图形学学会(CSIG)主办,琶洲实验室、华南理工大学、中山大学、中国图象图形学学会青年工作委员会承办。会议面向国…

基于入侵杂草算法优化的Elman神经网络数据预测 - 附代码

基于入侵杂草算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于入侵杂草算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于入侵杂草优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

APP端网络测试与弱网模拟!

当前APP网络环境比较复杂,网络制式有2G、3G、4G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。另外,当前app使用场景多变,如进地铁、上公交、进电梯等,使…

Ribbon客户端负载均衡

简介 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等…

【操作系统】输入/输出系统

目录 l/O系统的功能、模型和接口 l/O设备和设备控制器 中断和中断处理程序 设备驱动程序 与设备无关的I/O 用户层的I/O软件 缓冲区管理 磁盘性能概述和磁盘调度 l/O系统的功能、模型和接口 I/O系统管理 1)主要对象: I/O设备和对应的设备控制器 …

IP代理测试:关于Ping测试你需要知道的一切干货

您在访问互联网时是否遇到过持续滞后或花费很长时间等待网站加载的情况?为了避免这种情况,您可以测试 ping 以查看连接速度。如果您使用代理,此 ping 测试还会显示代理服务器的响应速度。 ping 测试是一个很有价值的工具,可以帮助…

C++ 释放指针

在C中,释放指针通常使用delete或delete[]操作符; 如果指针指向的是单个对象,可以使用delete操作符进行释放; 在释放完内存后,最好将指针置为nullptr,以避免出现悬空指针(dangling pointer&#…

【Linux Shell】4. 数组

文章目录 【 1. 数组的定义 】【 2. 读取数组 】【 3. 关联数组 】3.1 关联数组的定义3.2 关联数组元素的调用 【 4. 获取数组中的所有元素 】【 5. 获取数组的长度 】 数组中可以存放多个值。 Bash Shell 只支持一维数组(不支持多维数组),初…

算法训练第五十九天|503. 下一个更大元素 II、42. 接雨水

503. 下一个更大元素 II: 题目链接 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之…