前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么在线上取起始点/中点/任意点?

怎么在线上取起始点/中点/任意点?

作者头像
数据处理与分析
发布2022-11-18 15:05:44
9350
发布2022-11-18 15:05:44
举报

前言

有时候,需要在线上的指定位置取点。完全没经验的人,可能会手足无措,不知道该怎么取。今天就来分享一下,怎么使用不同的方式来在线上取点。

简介

今天选用的几种方式,各有优点。但需要说明的是:平台之间无优劣,合适自己的,就是最好的。今天要展示的三种方式分别是:FME方式、Python方式、ArcPY方式。

FME方式

这个之前就写过类似的了:【FME】使用FME沿线生成点(一)【FME】使用FME沿线生成点(二) 对于起始点和终止点,今天来介绍另一种方式:转换器VertexRemover 生成起终点的设置如下图所示:

起点设置

终点设置

中间点的生成,见之前的沿线生成点1、2。 VertexRemover不像转换器名字一样,只能用来移除节点。其实它还有一种如上图所示的keep模式,这种模式下的转换器就保留指定索引的节点,而不是移除。如上图起终点截图所示,0,-1就是起终点的节点索引。 转换器参数一调整,用起来也是非常灵活的!

纯py方式

Python非常强,有很多gis相关的库,这里我使用的是shapely。

纯Py实现方式:

代码语言:javascript
复制
from shapely.geometry import LineString

#初始化一条线
line = LineString([(0,0),(0,1)])
#生成并打印出中点坐标
mid_point = line.interpolate(0.5)
print(mid_point.x,mid_point.y)
#起点
start_point = line.interpolate(0)
print(start_point.x,start_point.y)
#终点
end_point = line.interpolate(1)
print(end_point.x,end_point.y)

可以看到,纯Python获取起点终点及中点,每种都只需要一行代码,非常简单。

ArcPY方式

ArcPY也是PY,Python能做的,这么优秀的商业库也必须可以,这里要推荐一下虾神最近在更新的ArcPY相关推送,感兴趣的可以点击这个超链接去瞅瞅

ArcPY实现方式:

代码语言:javascript
复制

import arcpy
#初始化一条线
coods = [(0,0),(0,1)]
line  = arcpy.Polyline(arcpy.Array([arcpy.Point(i[0],i[1])for i in coods]))
#生成并打印出中点坐标
mid_point = line.positionAlongLine(0.5,True).firstPoint
print(mid_point.x,mid_point.y)
#起点
start_point = line.positionAlongLine(0,True).firstPoint
print(start_point.x,start_point.y)
#终点
end_point = line.positionAlongLine(1,True).firstPoint
print(end_point.x,end_point.y)

瞅瞅,跟纯Python不能说完全一样,但简直一模一样啊有没有?

ArcPY,其实就是Python的一个库啊!

既然都一样,那也就没啥好说的了,你说是不?

总结

在线上取点的方法很多,我就不一一列举了。本文取了三种点,只要掌握了上面说的方法,基本上也就会了在任意处取点了。

三种方式,其实原理都差不多:都是在线段的一半处生成一个点,以此来作为中点。相比中点,起终点显然更好生成,不论是Python还是FME,生成中点都有很多种方式。

以上展示了三种取线段节点的方式,我觉得都挺好用的,你呢?

小调查

最后做一个小的调查。

从我学习技术的经验来说,光看不练学不会技术。真正的技术,还是要上手练的。

我的QQ和微信交流群里,经常会有一些朋友问一些有意思的问题,这些问题有适合探索的、有适合研究的、也有一些初学者经常遇到的非常典型的……

比如:如何找到并去除上图中的狭长面?

有时候看到这些问题,我就在想:可不可以把这些问题中比较有代表性的一部分,拿来做成题目。然后把题目发出来让大家可以一起做,一起思考,一起学习呢?

如果我发出类似的题目,并组织收取作品,解答题目,你会参与吗?

题目发布、解答的详细方案,将在调查结束后给出,谢谢支持!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 简介
  • FME方式
  • 纯py方式
  • ArcPY方式
  • 总结
  • 小调查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档