首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据x和y坐标对点进行排序,以便从上到下,从左到右排序?

如何根据x和y坐标对点进行排序,以便从上到下,从左到右排序?
EN

Stack Overflow用户
提问于 2021-12-21 16:47:01
回答 1查看 600关注 0票数 0

我有一个充满地址点的QGIS层,并希望对它们进行排序,以便从上到下、从左到右排序。

例如,如果数字表示地址点及其顺序:

代码语言:javascript
运行
复制
1  2  3   4    5 6
7      8   9  10 11   
12  13       14  15

我可以按x值排序,也可以按y值排序,但我不知道如何排序x然后y,使其类似于上面的例子。

代码语言:javascript
运行
复制
points_xy = {}

# get every address point as a point
for addr in repr_addresses.getFeatures():

    points_xy[addr.id()] = addr.geometry().asPoint()

# sort by the x value
points_x = {k:v for k,v in sorted(points_xy.items(), key=lambda item: item[1].x())}

# somehow sort the y values so that the largest y and smallest x value are paired etc.

points_x输出的示例如下:

代码语言:javascript
运行
复制
{106: <QgsPointXY: POINT(1509838.75678090960718691 7411881.06174680404365063)>,
 117: <QgsPointXY: POINT(1509843.64619539584964514 7411808.53339603915810585)>,
 19: <QgsPointXY: POINT(1509855.7753696299623698 7411741.06764426827430725)>,
 23: <QgsPointXY: POINT(1509856.84312249766662717 7411943.99649699591100216)>,
 97: <QgsPointXY: POINT(1509878.72972580068744719 7411674.63795705512166023)>,
 125: <QgsPointXY: POINT(1509885.47501007048413157 7412007.60445643309503794)>,
 119: <QgsPointXY: POINT(1509901.95971070020459592 7411607.84251245018094778)>,
 126: <QgsPointXY: POINT(1509930.84361596498638391 7411561.0557684525847435)>,
 100: <QgsPointXY: POINT(1509932.70123085496015847 7412072.57200376782566309)>,
EN

回答 1

Stack Overflow用户

发布于 2021-12-21 16:57:54

i可以按x值排序,也可以按y值排序

只需准确地这样做(使用reverse=True的后一类)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70438869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档