Changeset 19044 for issm/trunk-jpl/src/m/plot/export_gl.py
- Timestamp:
- 01/28/15 12:21:22 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/plot/export_gl.py
r19039 r19044 1 def export_gl(md,varargin): 2 return; 3 templist=plotoptions(varargin[:]); 1 from plotoptions import plotoptions 2 from checkplotoptions import checkplotoptions 3 from model import model 4 import numpy as np 5 import math 6 from writejsfile import writejsfile 7 8 def export_gl(md,*varargin): 9 class ResultObj(object): 10 def __getattr__(self, attr): 11 return self.__dict__.get(attr) 12 print ('getting options') 13 templist=plotoptions(varargin); 4 14 optionslist=templist.list; 5 15 options=optionslist[1]; 6 16 options=checkplotoptions(md,options); 7 17 8 18 #Setup unique directory in present dir: 9 directory=getfieldvalue(options,'directory','./'); 10 databasename=getfieldvalue(options,'database','webgl'); 11 19 print ('setting directory') 20 directory=options.getfieldvalue('directory','./'); 21 databasename=options.getfieldvalue('database','Pig'); 22 print(directory +databasename) 12 23 #scaling factor: 13 scaling_factor=getfieldvalue(options,'scaling_factor',50); 24 print ('setting scaling factor') 25 scaling_factor=options.getfieldvalue('scaling_factor',50); 14 26 15 27 #Deal with title: 16 if options['title']: 17 title=getfieldvalue(options,'title'); 28 print ('setting title') 29 if options.exist('title'): 30 title=options.getfieldvalue('title'); 18 31 else: 19 32 title=''; 20 33 21 34 #initialize model: 35 print ('initializing model') 22 36 model.title=title; 23 model.initialZoomFactor= getfieldvalue(options,'zoom',-.25);37 model.initialZoomFactor=options.getfieldvalue('zoom',-.25); 24 38 25 39 #Deal with contour {{{ 26 contour_lat1=md.mesh.lat(md.mesh.segments[:,1]); 27 contour_lat2=md.mesh.lat(md.mesh.segments[:,2]); 28 contour_long1=md.mesh.long(md.mesh.segments[:,1]); 29 contour_long2=md.mesh.long(md.mesh.segments[:,2]); 30 contour_surface1=md.geometry.surface(md.mesh.segments[:,1]); 31 contour_surface2=md.geometry.surface(md.mesh.segments[:,2]); 40 print ('getting contour') 41 contour_lat1=md.mesh.lat.take(md.mesh.segments[:,0]) 42 contour_lat2=md.mesh.lat.take(md.mesh.segments[:,1]); 43 contour_long1=md.mesh.long.take(md.mesh.segments[:,0]); 44 contour_long2=md.mesh.long.take(md.mesh.segments[:,1]); 45 contour_surface1=md.geometry.surface.take(md.mesh.segments[:,0]); 46 contour_surface2=md.geometry.surface.take(md.mesh.segments[:,1]); 32 47 33 R1=6371000* ones(len(contour_surface1),1)+scaling_factor*contour_surface1;34 R2=6371000* ones(len(contour_surface2),1)+scaling_factor*contour_surface2;48 R1=6371000*np.ones(len(contour_surface1))+scaling_factor*contour_surface1; 49 R2=6371000*np.ones(len(contour_surface2))+scaling_factor*contour_surface2; 35 50 36 contourx1 = R1 * cosd(contour_lat1) * cosd(contour_long1);37 contoury1 = R1 * cosd(contour_lat1) * sind(contour_long1);38 contourz1 = R1 * sind(contour_lat1);51 contourx1 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.cos(math.radians(long)), R1, contour_lat1, contour_long1); 52 contoury1 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.sin(math.radians(long)), R1, contour_lat1, contour_long1); 53 contourz1 = map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1); 39 54 40 contourx2 = R2 * cosd(contour_lat2) * cosd(contour_long2); 41 contoury2 = R2 * cosd(contour_lat2) * sind(contour_long2); 42 contourz2 = R2 * sind(contour_lat2); 43 55 contourx2 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.cos(math.radians(long)), R2, contour_lat2, contour_long2); 56 contoury2 = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.sin(math.radians(long)), R2, contour_lat2, contour_long2); 57 contourz2 = map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2); 44 58 45 59 model.contourx1=contourx1; … … 52 66 53 67 #}}} 54 #Deal with mesh and results {{{ 55 56 57 lat=md.mesh.lat; 58 long=md.mesh.long; 68 #Deal with mesh and results {{{ 69 print ('getting mesh') 59 70 surface=md.geometry.surface; 60 71 numberofelements=md.mesh.numberofelements; 61 72 numberofvertices=md.mesh.numberofvertices; 62 63 R=6371000*ones(numberofvertices,1)+scaling_factor*surface; 64 65 x = R * cosd(lat) * cosd(long); 66 y = R * cosd(lat) * sind(long); 67 z = R * sind(lat); 68 69 73 R=6371000*np.ones(len(md.mesh.lat))+scaling_factor*surface.flatten(); 74 75 x = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.cos(math.radians(long)), R, md.mesh.lat,md.mesh.long); 76 y = map(lambda r, lat, long: r * math.cos(math.radians(lat)) * math.sin(math.radians(long)), R, md.mesh.lat,md.mesh.long); 77 z = map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat); 78 70 79 #Deal with triangulation: 80 print('getting triangulation') 71 81 model.index=md.mesh.elements; 72 82 model.x=x; … … 75 85 model.surface=surface; 76 86 87 results = [""] 88 77 89 #Deal with data: 78 results=struct([]);90 print('getting data') 79 91 for i in xrange(1,len(optionslist)): 80 92 options=optionslist[i]; 81 93 options=checkplotoptions(md,options); 82 data=getfieldvalue(options,'data'); 94 data=options.getfieldvalue('data'); 95 results.append(ResultObj()) 83 96 results[i].data=data; 84 results[i].caxis= getfieldvalue(options,'caxis',[min(data), max(data)]);97 results[i].caxis=options.getfieldvalue('caxis',[min(data), max(data)]); 85 98 86 label= getfieldvalue(options,'label','');87 if strcmpi(label,''):99 label=options.getfieldvalue('label',''); 100 if label=='': 88 101 #create generic label: 89 label=['data', num2str(i)];102 label=['data', str(i)]; 90 103 results[i].label=label; 91 104 92 shortlabel= getfieldvalue(options,'shortlabel','');93 if s trcmpi(shortlabel,''):105 shortlabel=options.getfieldvalue('shortlabel',''); 106 if shortlabel=='': 94 107 #create generic short label: 95 shortlabel=['data', num2str(i)];108 shortlabel=['data', str(i)]; 96 109 results[i].shortlabel=shortlabel; 97 110 98 111 if len(data[2])>1: 99 time_range= getfieldvalue(options,'time_range',[0, 100]);112 time_range=options.getfieldvalue('time_range',[0, 100]); 100 113 results[i].time_range=time_range; 101 114 102 unit= getfieldvalue(options,'unit','');103 if strcmpi(unit,''):115 unit=options.getfieldvalue('unit',''); 116 if unit=='': 104 117 #create generic unit: 105 118 unit='SI'; … … 108 121 109 122 #Write model to javascript database file: 123 print('writing to file') 110 124 writejsfile(directory + databasename + '.js',model,databasename); 111 125 #}}}
Note:
See TracChangeset
for help on using the changeset viewer.