gpt4 book ai didi

python - 使用 pyshp 创建直线段的形状文件?

转载 作者:行者123 更新时间:2023-12-01 02:39:58 26 4
gpt4 key购买 nike

使用 Python 和 pyshp库中,我尝试从下面的数据创建一个 shapefile(存储在列表中):

edge_list = [
[-40.5, -20.666],
[-39.849998, -18.700001],
[-39.816002, -19.6],
[-40.071999, -19.391001],
[-40.150002, -19.933001],
[-39.733002, -18.533001],
[-39.833, -18.733],
[-39.708, -18.419001],
[-39.370998, -17.891001],
[-39.200001, -17.417],
[-39.216999, -17.299999],
[-39.167, -17.083],
[-39.049999, -16.433001],
[-38.932999, -13.967],
[-39.083, -16.583],
[-39.0, -13.916],
[-38.900002, -13.6],
]

这是我的代码片段(其中edge_list是上面的列表):

w = shapefile.Writer()
w.line(parts=[edge_list])
w.field("COMMON_ID", 'C')
w.save("test")

我明白了:

enter image description here

但我想得到这个:

enter image description here

有什么提示吗?

编辑:这是完整的测试代码,但没有太多内容。文件“temp.csv”仅包含上面显示的两列点,以逗号分隔,并带有额外的标题行(x,y)。

import csv
import shapefile

data = csv.reader(open("test.csv", "rb"), delimiter = ',')
data.next() # skip header line
edge_list = []
for row in data:
edge_list.append([float(row[0]), float(row[1])])

for e in range(len(edge_list)):
print "x=", edge_list[e][0], "y=", edge_list[e][1]

w = shapefile.Writer()
w.line(parts=[edge_list])
w.field("COMMON_ID", 'C')
w.save("test")

最佳答案

免责声明:我没有使用过 shapefile 或 pyshp。但我知道画线的方法。

我看到的是它按照您输入点的顺序绘制线条。它将点连接起来,这就是点的顺序。您需要做的是重新排序 edge_list 中的点。

就您而言,如果您的 y 变量是有序的,您的点看起来会很好。

所以,尝试替换这一行:

w.line(parts=[edge_list])

这样:

w.line(parts=sorted(edge_list, key=lambda point: point[1]))

这将按 y 变量对您的点进行排序,并应按照您想要的方式绘制线条。

关于python - 使用 pyshp 创建直线段的形状文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com