我正在尝试创建 x,y,z 坐标来生成高程数据集。我能够使用 meshgrid- 创建 x、y、z 数组,其中 z 是一个常数值。
(这是我上一个问题的后续,我是 python 新手)
我还想创建倾斜地形,其中 z 取决于 x。
我能够创建一个具有正确 z 值的数组。但是,当尝试使用 zip 工具将三个数组 (x,y,z) 组合成坐标时,出现此错误:
TypeError Traceback (most recent call last)
<ipython-input-81-6454cf2caa60> in <module>
3 for a, b, c in zip(x_mesh, y_mesh, z_int):
4 for a1, b1, c1 in zip(a, b, c):
----> 5 for a2, b2, c2 in zip(a1, b1, c1):
6 coords.append((a2, b2, c2,))
TypeError: zip argument #1 must support iteration
下面的代码适用于小区域,作为在更大区域上创建坡度的测试。
我认为最初可能是因为我的 z 数组是 float 而不是 int,所以我对其进行了转换,但没有任何区别。
我将 z 作为常数的代码将 z 合并到 meshgrid 中,并且 coords[] 代码在该实例中运行良好。
sp=(10)
x=np.arange(313000, 333000, sp)
y=np.arange(6220000,6227000, sp)
z=15
x_mesh, y_mesh, z_mesh=np.meshgrid(x,y,z)
coords = []
for a, b, c in zip(x_mesh, y_mesh, z_mesh):
for a1, b1, c1 in zip(a, b, c):
for a2, b2, c2 in zip(a1, b1, c1):
coords.append((a2, b2, c2,))
但是,当我尝试使 z 依赖于 x 并且不将其包含在 meshgrid 进程中时,“coords=[]”部分返回了错误:TypeError: zip argument #1 must support iteration
import numpy as np
sp=10
svx=313000
evx=313040
x=np.arange(svx,evx,sp)
y=np.arange(6220000,6220040,sp)
x_mesh, y_mesh =np.meshgrid(x,y)
evz=-30
totalnosteps=((evx-svx)/sp)-1
nosteps=((x_mesh-svx)/sp)
dedep=(evz/totalnosteps)
z=nosteps*dedep
z_int=z.astype(int)
coords = []
for a, b, c in zip(x_mesh, y_mesh, z_int):
for a1, b1, c1 in zip(a, b, c):
for a2, b2, c2 in zip(a1, b1, c1):
coords.append((a2, b2, c2,))
我在 (x,y,z) 得到最终结果