【问题标题】:How do I sort points by their x and y coordinates so that they are ordered from top to bottom, left to right?如何按 x 和 y 坐标对点进行排序,以便它们从上到下、从左到右排序?
【发布时间】:2022-01-23 01:50:40
【问题描述】:

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

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

1  2  3   4    5 6
7      8   9  10 11   
12  13       14  15

我可以按 x 值排序和按 y 值排序,但我不知道如何将 x 再 y 排序,以便类似于上面的示例。

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 输出示例如下所示:

{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)>,

【问题讨论】:

  • 看起来你不需要按第二个轴(比如说y)排序,因为在任何给定的(比如说x)轴上看起来都不可能有相同的值。

标签: python sorting coordinates qgis


【解决方案1】:

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

只要做到这一点(后者使用reverse=True)。

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 2015-06-20
    • 2016-12-03
    • 2023-04-10
    • 1970-01-01
    • 2020-06-14
    • 2019-09-27
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多