Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Draw a terrain with python?

I have a numpy 2d-array representing the geometrical height of a specific area where a street will be build. I can visualize this using scipy.misc.toimage. However I would like to get a simple 3D view of the area. Is there a simple way to plot or render this data as an 3d-image?

like image 616
AME Avatar asked Apr 27 '13 11:04

AME


1 Answers

Perhaps use matplotlib's plot_surface or plot_wireframe:

import matplotlib.pyplot as plt
import numpy as np
import mpl_toolkits.mplot3d.axes3d as axes3d

np.random.seed(1)
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
N = 100
X, Y = np.meshgrid(np.arange(N), np.arange(N))
heights = np.sin(2*np.pi*np.sqrt(X**2+Y**2)/N)
ax.plot_surface(X, Y, heights, cmap=plt.get_cmap('jet'))
plt.show()

enter image description here

These functions require three 2D-arrays: X, Y, Z. You have the heights, Z. To generate the standard X and Y locations associated with those Zs, you could use np.meshgrid.

like image 56
unutbu Avatar answered Oct 13 '22 15:10

unutbu