You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I want to get the history tide signals at specific location.
like bellow code: but get some errors.
`import numpy as np
import matplotlib.pyplot as plt
import pyTMD.io
import pyTMD.predict
import pyTMD.tools
import timescale.time
import datetime
Set parameters
latitude = 30 # Latitude
longitude = 18 # Longitude
time = np.arange('2017-01-01', '2022-10-01', dtype='datetime64[h]') # Time series
data = 2.0 * np.sin(2 * np.pi * time.astype('float') / 24.0) + 1.0 + np.random.normal(size=len(time)) # Simulated data with tidal signal and noise
hey @GEOSCIENCELXG,
Thanks for all the info! I believe what's going on is that TPXO9-atlas-v5-nc is a netCDF4 model and the OTIS reader wants binary files. So in this case I think you should be using io.ATLAS instead of io.OTIS. If you're using the latest version of the software, I've simplified the io functionality to add an accessor to io.model.
model = pyTMD.io.model(model_dir).elevation(model_name)
amp, ph, c = model.extract_constants(longitude, latitude)
Dear pyTMDers,
I want to get the history tide signals at specific location.
like bellow code: but get some errors.
`import numpy as np
import matplotlib.pyplot as plt
import pyTMD.io
import pyTMD.predict
import pyTMD.tools
import timescale.time
import datetime
Set parameters
latitude = 30 # Latitude
longitude = 18 # Longitude
time = np.arange('2017-01-01', '2022-10-01', dtype='datetime64[h]') # Time series
data = 2.0 * np.sin(2 * np.pi * time.astype('float') / 24.0) + 1.0 + np.random.normal(size=len(time)) # Simulated data with tidal signal and noise
Set tide model parameters
model_dir = '/data1/NorthIceland/tidemodels'
model_name = 'TPXO9-atlas-v5-nc'
Get tide model
model = pyTMD.io.model(model_dir).elevation(model_name)
Extract tidal constants
amp, ph, D, c = pyTMD.io.OTIS.extract_constants([longitude], [latitude], model.grid_file,
model.model_file, model.projection, type=model.type,
crop=True, method='spline', grid=model.file_format)
DELTAT = np.zeros_like(time)
Compute solid and ocean tidal disturbances
cph = -1j * ph * np.pi / 180.0 # Compute complex phase
hc = amp * np.exp(cph) # Compute tidal amplitude
Use pyTMD for tide prediction
tidal_signal = np.zeros_like(time)
for i, t in enumerate(time):
ts_current = timescale.time.Timescale().from_datetime(t)
TIDE = pyTMD.predict.map(ts_current.tide[0], hc, c, deltat=DELTAT[i], corrections=model.corrections)
tidal_signal[i] = np.mean(TIDE) * 100 # In centimeters
Remove tidal signal from original data
data_corrected = data - tidal_signal
Plot the results
plt.figure(figsize=(10, 6))
plt.plot(time, data, label='Original Data')
plt.plot(time, tidal_signal, label='Tidal Signal')
plt.plot(time, data_corrected, label='Data After Removing Tidal Signal')
plt.xlabel('Time')
plt.ylabel('Height (m)')
plt.legend()
plt.show()
`
Traceback (most recent call last):
amp, ph, D, c = pyTMD.io.OTIS.extract_constants([longitude], [latitude], model.grid_file,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "miniforge3/envs/disstans/lib/python3.12/site-packages/pyTMD/io/OTIS.py", line 276, in extract_constants
xi,yi,hz,mz,iob,dt = read_otis_grid(grid_file)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "miniforge3/envs/disstans/lib/python3.12/site-packages/pyTMD/io/OTIS.py", line 954, in read_otis_grid
iob=np.fromfile(fid, dtype=np.dtype('>i4'), count=2*nob).reshape(nob, 2)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: cannot reshape array of size 175089973 into shape (1853423616,2)
anyone can help solve this problem?
The text was updated successfully, but these errors were encountered: