pgsql GIS 将线段等分,均分,为点 st_lineinterpolatepoint

1. ST_LineInterpolatePoint 取一条线段(第一个参数)所在比例(第二个参数)的一个插入点

geometry ST_LineInterpolatePoint(geometry a_linestring, float8 a_fraction);


###2. ST_DISTANCE(ST_TRANSFORM(geometry g1,900913),ST_TRANSFORM(geometry g2,900913)) 计算两个点之间的距离(单位米)
ST_Distance
ST_Transform


###3.st_length(ST_Transform(geometry g1,900913)) 计算长度,单位米
ST_Length


###4.如果想把线段均分为n份(不考虑长度),则可以直接迭代使用ST_LineInterpolatePoint取n个点(1/n,2/n,3/n,1)或(0,1/n,2/n,n-1/n);如果等距离均分,比如m米 (m小于n),则分为(n/m )+1 个点(因为起始点为0,1),然后在使用ST_LineInterpolatePoint迭代(n/m )+1次。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用pgsql gis函数进行查询时,可以通过以下步骤来获取最近的10个或者20个小区: 1. 首先,确保你已经创建了包含小区信息的表,其中包括小区的几何信息字(geom)和其他相关字。 2. 使用ST_GeomFromText函数将目标点的经纬度坐标转换为几何点对象,并插入到表中。例如,使用以下语句将一个点插入到test_gis表中: ``` insert into test_gis(id,geom) values('100',ST_GeomFromText('POINT(122.2380909116 40.6651056878)',4326)); ``` 3. 使用ST_Distance函数结合ST_OrderBy函数来计算目标点与所有小区之间的距离,并按照距离进行排序。例如,使用以下语句获取最近的10个小区: ``` SELECT * FROM your_table ORDER BY ST_Distance(geom, ST_GeomFromText('POINT(122.2380909116 40.6651056878)',4326)) LIMIT 10; ``` 如果你想获取最近的20个小区,只需将LIMIT值改为20即可。 请注意,以上示例中的your_table应替换为你实际使用的表名,而ST_GeomFromText函数中的坐标值也应替换为你要查询的目标点的经纬度坐标。此外,你还可以根据需要添加其他条件或字来进一步筛选和显示查询结果。 #### 引用[.reference_title] - *1* *2* *3* [pgsql gis 一个点到多个点的距离, (经纬度)距离最近的10个点](https://blog.csdn.net/baidu_38550825/article/details/121252236)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值