Created
September 1, 2022 21:06
-
-
Save adamml/577c48a142f14d4e3f88e3c1f7e327b9 to your computer and use it in GitHub Desktop.
Render wave time series from Erddap in Blender
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import bmesh | |
import urllib.request | |
import datetime | |
import math | |
def drawpolygon(xdata, ydata, | |
xnorm = None, ynorm=None, zscale=None, colour=(1, 1, 1, 1)): | |
if xnorm is not None: | |
xdata = list(map(lambda x, seriesmax=max(xdata), seriesmin=min(xdata), norm=xnorm: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], xdata)) | |
if ynorm is not None: | |
ydata = list(map(lambda x, seriesmax=max(ydata), seriesmin=min(ydata), norm=ynorm: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], ydata)) | |
verts = list(map(lambda x, y, z: (x, y, z), xdata, ydata, [0] * len(xdata))) | |
if zscale is not None: | |
verts += list(map(lambda x, y, z: (x, y, z), xdata, ydata, [zscale] * len(xdata))) | |
edges = [] | |
faces = [tuple(range(0, len(xdata) - 1))] | |
if zscale is not None: | |
faces += [tuple(range(len(xdata), (len(xdata)*2) - 1))] | |
faces += list(map(lambda x: (x, x+1, x+1+len(xdata), x+len(xdata)), range(0, len(xdata)-2))) | |
__mesh = bpy.data.meshes.new('foo') | |
__mesh.from_pydata(verts, edges, faces) | |
__material = bpy.data.materials.new("MaterialName") | |
__material.diffuse_color = colour | |
__mesh.materials.append(__material) | |
__mesh.update() | |
__object = bpy.data.objects.new('boo', __mesh) | |
__collection = bpy.data.collections.new('baz') | |
bpy.context.scene.collection.children.link(__collection) | |
__collection.objects.link(__object) | |
def blenderplot(xdata, ydata, zdata, xnorm=None, ynorm=None, znorm=None, | |
penwidth=0.05, penheight=0.05, colour=(1, 1, 1, 1), name='Foo'): | |
""" Creates an x,y,z line plot in Blender | |
:param xdata: | |
:type xdata: list | |
:param ydata: | |
:type ydata: list | |
:param zdata: | |
:type zdata: list | |
:param xnorm: | |
:type xnorm: list, defaults to None | |
:param ynorm: | |
:type ynorm: list, defaults to None | |
:param znorm: | |
:type znorm: list, defaults to None | |
:param penwidth: | |
:type penwidth: float, defaults to 0.1 | |
:param penheight: | |
:type penheight: float, defaults to 0.1 | |
:raises AttributeError: | |
:return: None | |
:rtype: None | |
""" | |
if len(xdata) != len(ydata): | |
raise AttributeError('xdata and ydata must be of equal length') | |
if len(ydata) != len(zdata): | |
raise AttributeError('ydata and zdata must be of equal length') | |
if xnorm is not None and len(xnorm) != 2: | |
raise AttributeError('xnorm must be None or length 2') | |
if ynorm is not None and len(ynorm) != 2: | |
raise AttributeError('ynorm must be None or length 2') | |
if znorm is not None and len(znorm) != 2: | |
raise AttributeError('znorm must be None or length 2') | |
if xnorm is not None: | |
xdata = list(map(lambda x, seriesmax=max(xdata), seriesmin=min(xdata), norm=xnorm: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], xdata)) | |
if ynorm is not None: | |
ydata = list(map(lambda x, seriesmax=max(ydata), seriesmin=min(ydata), norm=ynorm: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], ydata)) | |
if znorm is not None: | |
zdata = list(map(lambda x, seriesmax=max(zdata), seriesmin=min(zdata), norm=znorm: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], zdata)) | |
verts = list(map(lambda x, y, z: (x, y-(penwidth/2), z-(penheight/2)), xdata, ydata, zdata)) | |
verts += list(map(lambda x, y, z: (x, y+(penwidth/2), z-(penheight/2)), xdata, ydata, zdata)) | |
verts += list(map(lambda x, y, z: (x, y-(penwidth/2), z+(penheight/2)), xdata, ydata, zdata)) | |
verts += list(map(lambda x, y, z: (x, y+(penwidth/2), z+(penheight/2)), xdata, ydata, zdata)) | |
edges = [] | |
faces = list(map(lambda x, sizex=len(xdata): [x, x+1, x+sizex+1, x+sizex,], range(0, len(xdata)-1))) | |
faces += list(map(lambda x, sizex=len(xdata): [x+(sizex*2), x+(sizex*2)+1, x+(sizex*3)+1, x+(sizex*3)], range(0, len(xdata)-1))) | |
faces += [[1, len(xdata), len(xdata)*3, len(xdata)*2]] | |
faces += [[len(xdata)-1, (len(xdata)*2)-1, (len(xdata)*4)-1, (len(xdata)*3)-1]] | |
faces += list(map(lambda x, sizex=len(xdata): [x, x+1, x+(sizex*2)+1, x+(sizex*2)], range(0, len(xdata)-1))) | |
faces += list(map(lambda x, sizex=len(xdata): [x+(sizex), x+(sizex)+1,x+(sizex*3)+1, x+(sizex*3)], range(0, len(xdata)-1))) | |
__mesh = bpy.data.meshes.new(name) | |
__mesh.from_pydata(verts, edges, faces) | |
__material = bpy.data.materials.new("MaterialName") | |
__material.diffuse_color = colour | |
__mesh.materials.append(__material) | |
__mesh.update() | |
__object = bpy.data.objects.new(name, __mesh) | |
__collection = bpy.data.collections.new(name) | |
bpy.context.scene.collection.children.link(__collection) | |
__collection.objects.link(__object) | |
with open('counties.geojson', | |
encoding='utf-8', errors='replace') as data: | |
dat = json.load(data) | |
for row in dat['features']: | |
if row['geometry']['type'] == 'Polygon': | |
x = list(map(lambda x: x[0], row['geometry']['coordinates'][0])) | |
y = list(map(lambda x: x[1], row['geometry']['coordinates'][0])) | |
drawpolygon(x, y, zscale=0.1, colour=(0.0157, 0.3882, 0.0275, 1)) | |
elif row['geometry']['type'] == 'MultiPolygon': | |
print('MultiPolygon', len(row['geometry']['coordinates'])) | |
for poly in row['geometry']['coordinates']: | |
x = list(map(lambda x: x[0], poly[0])) | |
y = list(map(lambda x: x[1], poly[0])) | |
drawpolygon(x, y, zscale=0.1, colour=(0.0157, 0.3882, 0.0275, 1)) | |
# | |
# Add a white base for rendering | |
# | |
vertices = [(-20,-40,0), (20, -40, 0), (20,70,0), (-20, 70, 0)] | |
faces=[[0, 1, 2, 3]] | |
__mesh = bpy.data.meshes.new('base_mesh') | |
__mesh.from_pydata(vertices, [], faces) | |
__material = bpy.data.materials.new("BaseMAterial") | |
__material.diffuse_color = (1.0, 1.0, 1.0, 1.0) | |
__mesh.materials.append(__material) | |
__mesh.update() | |
__object = bpy.data.objects.new('base_object', __mesh) | |
__collection = bpy.data.collections.new('base') | |
bpy.context.scene.collection.children.link(__collection) | |
__collection.objects.link(__object) | |
with urllib.request.urlopen('https://erddap.marine.ie/erddap/tabledap/IWBNetwork.json?station_id%2Clongitude%2Clatitude%2Ctime%2CHmax&time%3E=2021-11-01T00%3A00%3A00Z&time%3C2021-11-30T23%3A59%3A59Z') as resp: | |
__json = json.loads(resp.read()) | |
m1 = {'latitude': None, 'longitude': None, 'waveheight': []} | |
m2 = {'latitude': None, 'longitude': None, 'waveheight': []} | |
m3 = {'latitude': None, 'longitude': None, 'waveheight': []} | |
m4 = {'latitude': None, 'longitude': None, 'waveheight': []} | |
m5 = {'latitude': None, 'longitude': None, 'waveheight': []} | |
m6 = {'latitude': None, 'longitude': None, 'waveheight': []} | |
ametsa = {'latitude': None, 'longitude': None, 'waveheight': []} | |
smartbay = {'latitude': None, 'longitude': None, 'waveheight': []} | |
brandon = {'latitude': None, 'longitude': None, 'waveheight': []} | |
bantry = {'latitude': None, 'longitude': None, 'waveheight': []} | |
clew = {'latitude': None, 'longitude': None, 'waveheight': []} | |
times_weather = list(map(lambda x: datetime.datetime.timestamp(datetime.datetime(2021, 11, 1, 0, 0, 0)) + (x * 3600), range(0, 30 * 24))) | |
times_wave = list(map(lambda x: datetime.datetime.timestamp(datetime.datetime(2021, 11, 1, 0, 0, 0)) + (x * 1800), range(0, 30 * 48))) | |
for row in __json['table']['rows']: | |
if row[0] == 'M1': | |
if m1['latitude'] == None: | |
m1['latitude'] = row[2] | |
if m1['longitude'] == None: | |
m1['longitude'] = row[1] | |
if not len(m1['waveheight']): | |
m1['waveheight'] = [0] * len(times_weather) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[3], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_weather)) | |
m1['waveheight'][__timediff.index(min(__timediff))] = row[4] | |
if row[0] == 'M2': | |
if m2['latitude'] == None: | |
m2['latitude'] = row[2] | |
if m2['longitude'] == None: | |
m2['longitude'] = row[1] | |
if not len(m2['waveheight']): | |
m2['waveheight'] = [0] * len(times_weather) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[3], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_weather)) | |
m2['waveheight'][__timediff.index(min(__timediff))] = row[4] | |
if row[0] == 'M3': | |
if m3['latitude'] == None: | |
m3['latitude'] = row[2] | |
if m3['longitude'] == None: | |
m3['longitude'] = row[1] | |
if not len(m3['waveheight']): | |
m3['waveheight'] = [0] * len(times_weather) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[3], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_weather)) | |
m3['waveheight'][__timediff.index(min(__timediff))] = row[4] | |
if row[0] == 'M4': | |
if m4['latitude'] == None: | |
m4['latitude'] = row[2] | |
if m4['longitude'] == None: | |
m4['longitude'] = row[1] | |
if not len(m4['waveheight']): | |
m4['waveheight'] = [0] * len(times_weather) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[3], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_weather)) | |
m4['waveheight'][__timediff.index(min(__timediff))] = row[4] | |
if row[0] == 'M5': | |
if m5['latitude'] == None: | |
m5['latitude'] = row[2] | |
if m5['longitude'] == None: | |
m5['longitude'] = row[1] | |
if not len(m5['waveheight']): | |
m5['waveheight'] = [0] * len(times_weather) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[3], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_weather)) | |
m5['waveheight'][__timediff.index(min(__timediff))] = row[4] | |
if row[0] == 'M6': | |
if m6['latitude'] == None: | |
m6['latitude'] = row[2] | |
if m6['longitude'] == None: | |
m6['longitude'] = row[1] | |
if not len(m6['waveheight']): | |
m6['waveheight'] = [0] * len(times_weather) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[3], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_weather)) | |
m6['waveheight'][__timediff.index(min(__timediff))] = row[4] | |
with urllib.request.urlopen('https://erddap.marine.ie/erddap/tabledap/IWaveBNetwork30Min.json?longitude%2Clatitude%2Ctime%2Cstation_id%2CHmax&time%3E=2021-11-01T00%3A00%3A00Z&time%3C2021-11-30T23%3A59%3A59Z') as resp: | |
__json = json.loads(resp.read()) | |
for row in __json['table']['rows']: | |
if(row[4] is not None): | |
if row[3] == 'AMETS Berth A Wave Buoy': | |
if ametsa['latitude'] == None: | |
ametsa['latitude'] = row[1] | |
if ametsa['longitude'] == None: | |
ametsa['longitude'] = row[0] | |
if not len(ametsa['waveheight']): | |
ametsa['waveheight'] = [0] * len(times_wave) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[2], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_wave)) | |
ametsa['waveheight'][__timediff.index(min(__timediff))] = (row[4]/100) | |
if row[3] == 'SmartBay Wave Buoy': | |
if smartbay['latitude'] == None: | |
smartbay['latitude'] = row[1] | |
if smartbay['longitude'] == None: | |
smartbay['longitude'] = row[0] | |
if not len(smartbay['waveheight']): | |
smartbay['waveheight'] = [0] * len(times_wave) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[2], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_wave)) | |
smartbay['waveheight'][__timediff.index(min(__timediff))] = (row[4]/100) | |
if row[3] == 'Brandon Bay': | |
if brandon['latitude'] == None: | |
brandon['latitude'] = row[1] | |
if brandon['longitude'] == None: | |
brandon['longitude'] = row[0] | |
if not len(brandon['waveheight']): | |
brandon['waveheight'] = [0] * len(times_wave) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[2], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_wave)) | |
brandon['waveheight'][__timediff.index(min(__timediff))] = (row[4]/100) | |
if row[3] == 'Clew Bay': | |
if clew['latitude'] == None: | |
clew['latitude'] = row[1] | |
if clew['longitude'] == None: | |
clew['longitude'] = row[0] | |
if not len(clew['waveheight']): | |
clew['waveheight'] = [0] * len(times_wave) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[2], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_wave)) | |
clew['waveheight'][__timediff.index(min(__timediff))] = (row[4]/100) | |
if row[3] == 'Bantry Bay': | |
if bantry['latitude'] == None: | |
bantry['latitude'] = row[1] | |
if bantry['longitude'] == None: | |
bantry['longitude'] = row[0] | |
if not len(bantry['waveheight']): | |
bantry['waveheight'] = [0] * len(times_wave) | |
__timestamp = datetime.datetime.timestamp(datetime.datetime.strptime(row[2], '%Y-%m-%dT%H:%M:%S%z')) | |
__timediff = list(map(lambda x: abs(x - __timestamp), times_wave)) | |
bantry['waveheight'][__timediff.index(min(__timediff))] = (row[4]/100) | |
maxwh = (max(m1['waveheight']+m2['waveheight']+m3['waveheight']+m4['waveheight']+m5['waveheight']+m6['waveheight']+ametsa['waveheight']+brandon['waveheight']+bantry['waveheight']+clew['waveheight']+smartbay['waveheight'])) | |
m1['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], m1['waveheight'])) | |
m2['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], m2['waveheight'])) | |
m3['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], m3['waveheight'])) | |
m4['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], m4['waveheight'])) | |
m5['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], m5['waveheight'])) | |
m6['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], m6['waveheight'])) | |
smartbay['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], smartbay['waveheight'])) | |
ametsa['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], ametsa['waveheight'])) | |
brandon['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], brandon['waveheight'])) | |
bantry['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], bantry['waveheight'])) | |
clew['waveheight'] = list(map(lambda x, seriesmax=maxwh, seriesmin=0, norm=[0, maxwh]: (((x - seriesmin)/(seriesmax - seriesmin)) * (norm[1]-norm[0])) + norm[0], clew['waveheight'])) | |
i = 0 | |
m1plot = [0] * 24 | |
m2plot = [0] * 24 | |
m3plot = [0] * 24 | |
m4plot = [0] * 24 | |
m5plot = [0] * 24 | |
m6plot = [0] * 24 | |
ametsplot = [0] * 48 | |
bantryplot = [0] * 48 | |
brandonplot = [0] * 48 | |
clewplot = [0] * 48 | |
smartbayplot = [0] * 48 | |
print(m2['waveheight']) | |
frame = 0 | |
for scene in times_wave: | |
bpy.context.scene.frame_set(frame) | |
if i == 0 or i % 2 == 0: | |
if i / 2 < 24: | |
if len(m1['waveheight']): | |
m1plot[int(i/2)] = m1['waveheight'][int(i/2)] | |
if len(m2['waveheight']): | |
m2plot[int(i/2)] = m2['waveheight'][int(i/2)] | |
if len(m3['waveheight']): | |
m3plot[int(i/2)] = m3['waveheight'][int(i/2)] | |
if len(m4['waveheight']): | |
m4plot[int(i/2)] = m4['waveheight'][int(i/2)] | |
if len(m5['waveheight']): | |
m5plot[int(i/2)] = m5['waveheight'][int(i/2)] | |
if len(m6['waveheight']): | |
m6plot[int(i/2)] = m6['waveheight'][int(i/2)] | |
else: | |
if len(m1['waveheight']): | |
del m1plot[0] | |
m1plot.append(m1['waveheight'][int(i/2)]) | |
if len(m2['waveheight']): | |
del m2plot[0] | |
m2plot.append(m2['waveheight'][int(i/2)]) | |
if len(m3['waveheight']): | |
del m3plot[0] | |
m3plot.append(m3['waveheight'][int(i/2)]) | |
if len(m4['waveheight']): | |
del m4plot[0] | |
m4plot.append(m4['waveheight'][int(i/2)]) | |
if len(m5['waveheight']): | |
del m5plot[0] | |
m5plot.append(m5['waveheight'][int(i/2)]) | |
if len(m6['waveheight']): | |
del m6plot[0] | |
m6plot.append(m6['waveheight'][int(i/2)]) | |
if i < 48: | |
if len(ametsa['waveheight']): | |
ametsplot[i] = ametsa['waveheight'][i] | |
if len(bantry['waveheight']): | |
bantryplot[i] = bantry['waveheight'][i] | |
if len(brandon['waveheight']): | |
brandonplot[i] = brandon['waveheight'][i] | |
if len(clew['waveheight']): | |
clewplot[i] = clew['waveheight'][i] | |
if len(smartbay['waveheight']): | |
smartbayplot[i] = smartbay['waveheight'][i] | |
else: | |
if len(ametsa['waveheight']): | |
del ametsplot[0] | |
ametsplot.append(ametsa['waveheight'][i]) | |
if len(bantry['waveheight']): | |
del bantryplot[0] | |
bantryplot.append(bantry['waveheight'][i]) | |
if len(brandon['waveheight']): | |
del brandonplot[0] | |
brandonplot.append(brandon['waveheight'][i]) | |
if len(clew['waveheight']): | |
del clewplot[0] | |
clewplot.append(clew['waveheight'][i]) | |
if len(smartbay['waveheight']): | |
del smartbayplot[0] | |
smartbayplot.append(smartbay['waveheight'][i]) | |
for obj in bpy.context.scene.objects: | |
if obj.name in ['m1', 'm2', 'm3', 'm4', 'm5', 'm6', 'ametsa', 'bantry', 'brandon', 'clew', 'smartbay']: | |
obj.select_set(True) | |
else: | |
obj.select_set(False) | |
bpy.ops.object.delete() | |
i += 1 | |
if len(m1['waveheight']): | |
blenderplot(range(0,len(m1plot),1), m1plot, xnorm=[m1['longitude']-0.3, m1['longitude']+0.3], ynorm=[m1['latitude']-0.1, m1['latitude']+0.1], name='m1') | |
if len(m2['waveheight']): | |
blenderplot(range(0,len(m2plot),1), m2plot,[0.15]*len(m2plot), xnorm=[m2['longitude']-0.3, m2['longitude']+0.3], ynorm=[m2['latitude']-0.1, m2['latitude']+0.1], name='m2') | |
if len(m3['waveheight']): | |
blenderplot(range(0,len(m3plot),1), m3plot,[0.15]*len(m3plot), xnorm=[m3['longitude']-0.3, m3['longitude']+0.3], ynorm=[m3['latitude']-0.1, m3['latitude']+0.1], name='m3') | |
if len(m4['waveheight']): | |
blenderplot(range(0,len(m4plot),1), m4plot,[0.15]*len(m4plot), xnorm=[m4['longitude']-0.3, m4['longitude']+0.3], ynorm=[m4['latitude']-0.1, m4['latitude']+0.1], name='m4') | |
if len(m5['waveheight']): | |
blenderplot(range(0,len(m5plot),1), m5plot,[0.15]*len(m5plot), xnorm=[m5['longitude']-0.3, m5['longitude']+0.3], ynorm=[m5['latitude']-0.1, m5['latitude']+0.1], name='m5') | |
if len(m6['waveheight']): | |
blenderplot(range(0,len(m6plot),1), m6plot,[0.15]*len(m6plot), xnorm=[m6['longitude']-0.3, m6['longitude']+0.3], ynorm=[m6['latitude']-0.1, m6['latitude']+0.1], name='m6') | |
if len(smartbay['waveheight']): | |
blenderplot(range(0,len(smartbayplot),1), smartbayplot,[0.15]*len(smartbayplot), xnorm=[smartbay['longitude']-0.3, smartbay['longitude']+0.3], ynorm=[smartbay['latitude']-0.1, smartbay['latitude']+0.1], name='smartbay') | |
if len(brandon['waveheight']): | |
blenderplot(range(0,len(brandonplot),1), brandonplot,[0.15]*len(brandonplot), xnorm=[brandon['longitude']-0.3, brandon['longitude']+0.3], ynorm=[brandon['latitude']-0.1, brandon['latitude']+0.1], name='brandon') | |
if len(bantry['waveheight']): | |
blenderplot(range(0,len(bantryplot),1), bantryplot,[0.15]*len(bantryplot), xnorm=[bantry['longitude']-0.3, bantry['longitude']+0.3], ynorm=[bantry['latitude']-0.1, bantry['latitude']+0.1], name='bantry') | |
if len(clew['waveheight']): | |
blenderplot(range(0,len(clewplot),1), clewplot,[0.15]*len(clewplot), xnorm=[clew['longitude']-0.3, clew['longitude']+0.3], ynorm=[clew['latitude']-0.1, clew['latitude']+0.1], name='clew') | |
if len(ametsa['waveheight']): | |
blenderplot(range(0,len(ametsplot),1), ametsplot,[0.15]*len(ametsplot), xnorm=[ametsa['longitude']-0.3, ametsa['longitude']+0.3], ynorm=[ametsa['latitude']-0.1, ametsa['latitude']+0.1], name='amets') | |
frame += math.floor((140 / len(times_wave)) * 24) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment