python - 如何从 meshgrid 数组中导出 x、y、z 坐标?
问题描述
我正在尝试生成 x、y、z 坐标,以创建用于 GIS 软件和建模的理想化景观。我是 python 新手,它肯定会显示出来。
为此,我想以规则的网格间隔创建一个由 x、y、z 点组成的网格。x 代表纬度,y 代表经度,z 代表海拔。
我可以将风景分成几个部分,然后可以将它们缝合在一起:
- 等高矩形(z=常数)
- z 取决于 x 或 y 的矩形。例如斜率,其中 z 随着 x 的增加而增加。
我已经使用了meshgrid,它创建了一系列数组。我只需要一起提取每个相应的数组位置,以便导出 x、y、z 数据。
我最终将使用更大的数据集来执行此操作,但下面的代码是 16 点。
测试运行
import numpy as np
import matplotlib.pyplot as plt
创建间隔为 30 的坐标,从 x=313000,y=6220000 开始,z 恒定为 15
sp=(30)
x=np.arange(313000, 313120, sp)
y=np.arange(6220000,6220120, sp)
z=np.repeat(15,4)
x_mesh, y_mesh, z_mesh=np.meshgrid(x,y,z)
显示网格的散点图
plt.scatter(x_mesh, y_mesh, z_mesh)
plt.show
从网格网格创建坐标
coords=???
print(coords)
将坐标导出到 csv 文件
import csv
with open('coords.csv','w') as f:
out = csv.writer(f, delimiter=',')
out.writerows(zip(*coords))
f.close()
解决方案
你可以试试
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,))
或列表理解
coords = [(a2, b2, c2,) 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
取决于这里的数字z=np.repeat(15, x)
,它与Number of points * x
你的情节有关,也会用 x = 1 绘制 16 个点。
随着 x 的增加,每个点都会重复 x 次。
推荐阅读
- html - 将 css 应用于所有覆盖更高说明符的段落元素
- c# - 类型名称中的空格
- gcloud - 在 chrome book 上启动 gcloud 机器的快捷方式
- python - 实时更新 matplotlib Pie
- reactjs - 反应传单找不到'pathtofile'的路径
- html - 使用 Vue.js 从 Kendo Grid Column 中的 JSON 数据源渲染 HTML
- azure - Azure远程调试:调试服务部署到虚拟目录时未加载符号
- sql - 使用 ODBC 从 SQL 连接到 opensge 时收到错误消息
- javascript - 如何删除由 webpack4 创建的重复 JS 包?
- ruby-on-rails - Rails/Nginx/Passenger 错误:Phusion 乘客似乎没有运行