postgis百分比分割线段

主要思路来自于这篇文章

https://www.jianshu.com/p/4916b85bea65

但主要的问题在于,文中说的线性参考,没有理解。

通俗的意思就是说,你要把你的整条线段看做多少份,这直接影响到后续动态分割的数值输入

ST_AddMeasure(geom,0,1)   --将整条线段看做1,那么再做分割时,参数就是0和1之间

ST_AddMeasure(geom,0,100)   --将整条线段看做100,那么再做分割时,参数就是0和100之间

ST_AddMeasure(geom,40,50)   --将整条线段看做10,那么再做分割时,参数就是40和50之间

 

完成的分割语句,即取线段的前十分之一

SELECT st_asgeojson(ST_LocateBetween(ST_AddMeasure(geom,0,1),0,0.1)) FROM "classifer_line_viewdata";

此外一个点是,分割的大小顺序不影响输出的结果,pg会自动调整,图中两句话的输出结果是一致的。

 

 

 

### 如何在PostGIS中处理和分析轨迹线 #### 利用PostGIS修复无序的轨迹数据 对于存在大量共享单车的数据集,其中轨迹数据呈现无序状态的情况,在PostgreSQL数据库环境中借助PostGIS扩展能够有效地解决这一问题。考虑到效率以及操作简便性的需求,可以采用特定算法来重新排列中间节点坐标,确保最终形成的路径是从起点至终点连续且合理的[^1]。 ```sql WITH ordered_points AS ( SELECT id, geom, ROW_NUMBER() OVER (PARTITION BY track_id ORDER BY timestamp) AS seq FROM trajectory_data ) SELECT st_makeline(geom ORDER BY seq) AS fixed_trajectory FROM ordered_points GROUP BY track_id; ``` 这段SQL语句展示了如何创建有序的轨迹线条。它首先给定时间内按顺序编号所有属于同一track ID下的点,接着按照这些序列号构建一条或多条完整的线路。 #### 高效的空间查询与计算 当涉及到大规模地理空间数据分析时,比如判断某个位置是否位于某一区域内(即点对面的关系),使用ST_Contains函数可以在极短时间内得出结论。相比于传统方法耗时长达数小时的操作而言,这种方法仅需几分钟就能完成相同任务,并保持较高的准确性[^2]。 #### 海量数据环境中的优化策略 为了应对更大规模的数据集并提高性能表现,建议采取以下措施: - **建立适当的空间索引**:这有助于加速涉及地理位置属性的各种检索过程。 - **充分利用内建的功能库**:如`st_makevalid()`用于修正几何图形的有效性;`st_simplifyPreserveTopology()`可在保留拓扑结构的前提下简化复杂形状等[^3]。 - **去除异常记录**:通过定义合理的时间窗口或其他条件筛选掉不符合逻辑的数据点,从而改善整体质量[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值