40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import rasterio
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from scipy.stats import norm
|
|
|
|
def read_raster_data(raster_path):
|
|
with rasterio.open(raster_path) as raster:
|
|
data = raster.read(1, masked=True)
|
|
if raster.nodata is not None:
|
|
data = data.filled(np.nan)
|
|
return data
|
|
|
|
def flatten_data(data):
|
|
return data.flatten()
|
|
|
|
# Replace 'traveltime.tif' with the path to your actual raster file
|
|
x_axis = flatten_data(read_raster_data('traveltime.tif'))
|
|
|
|
# Filter out NaN values
|
|
x_axis = x_axis[~np.isnan(x_axis)]
|
|
|
|
mean = np.mean(x_axis)
|
|
sd = np.std(x_axis)
|
|
|
|
# Plot histogram
|
|
plt.hist(x_axis, bins=50, density=True, alpha=0.6, color='g', range=(mean-3*sd, mean+3*sd))
|
|
xmin, xmax = plt.xlim()
|
|
plt.xlim(0,5)
|
|
plt.xlabel("Travel time in [h]")
|
|
plt.ylabel("Quantaty in percentage")
|
|
x = np.linspace(xmin, xmax, 100)
|
|
|
|
|
|
# Calculate and plot the 0.85 quantile
|
|
quantile_90 = np.quantile(x_axis, 0.90)
|
|
plt.axvline(x=quantile_90, color='r', linestyle='--', label='90%')
|
|
plt.legend()
|
|
|
|
plt.savefig("traveltimedistribution.png", dpi=300) # Save the plot
|