我有一个充满地址点的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)>,
发布于 2021-12-21 16:57:54
i可以按x值排序,也可以按y值排序
只需准确地这样做(使用reverse=True
的后一类)。
https://stackoverflow.com/questions/70438869
复制相似问题