Calculate the distance to land for each element in mesh and save to dfsu file
import numpy as np
import matplotlib.pyplot as plt
import mikeio
msh = mikeio.Mesh("../tests/testdata/odense_rough.mesh")
msh
Flexible Mesh number of elements: 654 number of nodes: 399 projection: UTM-33
msh.plot();
msh.geometry.plot.outline();
ncland = msh.node_coordinates[msh.codes==1]
plt.scatter(ncland[:,0], ncland[:,1]);
ec = msh.element_coordinates
i = 0
ne = ec.shape[0]
d = np.zeros(ne)
for i in range(ne):
d[i] = np.min(np.sqrt((ec[i,0] - ncland[:,0])**2 + (ec[i,1] -ncland[:,1])**2))
da = mikeio.DataArray(data=d,
geometry=msh.geometry,
item=mikeio.ItemInfo("Distance to land", mikeio.EUMType.Distance, mikeio.EUMUnit.meter))
da
<mikeio.DataArray> name: Distance to land dims: (element:654) time: 2018-01-01 00:00:00 (time-invariant) geometry: Dfsu2D (654 elements, 399 nodes) values: [1697, 435, ..., 1194]
da.plot();
da.to_dfs("distance.dfsu")
import os
os.remove("distance.dfsu")