Changeset 18323
- Timestamp:
- 08/03/14 18:32:10 (11 years ago)
- Location:
- issm/branches/trunk-jpl-ad2/src/m/plot
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/branches/trunk-jpl-ad2/src/m/plot/plot_gl.m
r18307 r18323 21 21 copyfile([scriptsdir '/generic/editables.js'],'./generic/editables.js'); 22 22 23 %scaling factor: 24 scaling_factor=getfieldvalue(options,'scaling_factor',50); 25 23 26 %Deal with title: 24 27 if exist(options,'title') … … 34 37 %size of frame: 35 38 replacestringinfile('./css/mystyle.css','height: 55%; /*editable*/',['height: ' num2str(getfieldvalue(options,'frame_height',55)) '%; /*editable*/']); 39 36 40 37 41 %high resolution: … … 50 54 fid=fopen([database 'model_coords.js'],'w'); 51 55 56 lat=md.mesh.lat; 57 long=md.mesh.long; 58 surface=md.geometry.surface; 59 numberofelements=md.mesh.numberofelements; 60 numberofvertices=md.mesh.numberofvertices; 61 62 R=6371000*ones(numberofvertices,1)+scaling_factor*surface; 63 64 x = R .* cosd(lat) .* cosd(long); 65 y = R .* cosd(lat) .* sind(long); 66 z = R .* sind(lat); 67 68 52 69 %write index: 53 70 fprintf(fid,'<!-- index{{{-->\n'); … … 58 75 fprintf(fid,'[%i, %i, %i]];\n',md.mesh.elements(end,1),md.mesh.elements(end,2),md.mesh.elements(end,3)); 59 76 fprintf(fid,'<!--}}}-->\n'); 60 writejsfield(fid,'x',md.mesh.x,md.mesh.numberofvertices); 61 writejsfield(fid,'y',md.mesh.y,md.mesh.numberofvertices); 62 writejsfield(fid,'surface',md.geometry.surface,md.mesh.numberofvertices); 77 writejsfield(fid,'x',x,numberofvertices); 78 writejsfield(fid,'y',y,numberofvertices); 79 writejsfield(fid,'z',z,numberofvertices); 80 writejsfield(fid,'surface',surface,numberofvertices); 63 81 64 82 %Deal with data: … … 101 119 replacestringinfile('./generic/editables.js','"V"',labelstring); 102 120 replacestringinfile('./generic/editables.js','"velocity"',datastring); 103 replacestringinfile('./generic/editables.js','var data_min_array = [ -9999',['var data_min_array = [' caxis1string]);104 replacestringinfile('./generic/editables.js','var data_max_array = [ 9999',['var data_max_array = [' caxis2string]);121 replacestringinfile('./generic/editables.js','var data_min_array = [0',['var data_min_array = [' caxis1string]); 122 replacestringinfile('./generic/editables.js','var data_max_array = [3500',['var data_max_array = [' caxis2string]); 105 123 replacestringinfile('./generic/editables.js','"m/yr"',unitstring); 106 124 replacestringinfile('./generic/editables.js','initialZoomFactor = -.20;',['initialZoomFactor = ' num2str(zoom) ';']); -
issm/branches/trunk-jpl-ad2/src/m/plot/prepare_gl.m
r18307 r18323 1 1 function prepare_gl(md,options) 2 3 scaling_factor=getfieldvalue(options,'scaling_factor',50); 2 4 3 5 %scripts to be picked up from directory: 4 6 scriptsdir=['~/issm-projects/visl/externalicelab/fem']; 7 8 %some checks: 9 if isempty(md.mesh.lat) | isnan(md.mesh.lat) | isempty(md.mesh.long) | isnan(md.mesh.long), 10 error('prepare_gl error message: need lat and long in md.mesh to be filled up!'); 11 end 12 13 %database: {{{ 5 14 if strcmpi(md.mesh.hemisphere','s'), 6 triangulation='/Users/larour/ModelData/BamberDEMAntarctica1km/triangulated/triangulation_2.mat'; 7 radar_image='/Users/larour/ModelData/BamberDEMAntarctica1km/triangulated/radar.png'; 8 triangulation_hd='/Users/larour/ModelData/BamberDEMAntarctica1km/triangulated/triangulation_2.mat'; 9 geotiff_name_hd=['/u/astrid-r1b/ModelData/MosaicTiffRsat/amm125m_v2_200m.tif']; 15 geotiff_name_earth=['/u/astrid-r1b/ModelData/MosaicTiffRsat/amm125m_v2_200m.wgs84.tif']; 16 radar_image_earth='/Users/larour/ModelData/TrueMarble_GeoTIFF/radar_no_antarctica.png'; 17 triangulation_earth='/Users/larour/ModelData/DEM_geotiff/processed/triangulation.mat'; 18 triangulation='/Users/larour/ModelData/BamberDEMAntarctica1km/triangulated/triangulation_15.mat'; 19 radar_image='/Users/larour/ModelData/BamberDEMAntarctica1km/triangulated/radar.latlong.png'; 20 10 21 elseif strcmpi(md.mesh.hemisphere','n'), 22 geotiff_name_earth=['/u/astrid-r1b/ModelData/MosaicTiffRsat/amm125m_v2_200m.wgs84.tif']; 23 radar_image_earth='/Users/larour/ModelData/TrueMarble_GeoTIFF/radar_no_greenland.png'; 11 24 triangulation='/u/astrid-r1b/ModelData/HowatDEMGreenland2012/triangulated/triangulation_15.mat'; 12 25 radar_image='/u/astrid-r1b/ModelData/HowatDEMGreenland2012/triangulated/radar.png'; … … 15 28 error('prepare_gl error usage: ''hemisphere'' should be set to ''s'' or ''n'''); 16 29 end 30 %}}} 17 31 18 32 %keep present directory: … … 34 48 copyfile([scriptsdir '/generic.html'],'.'); 35 49 36 37 50 database=['./generic/']; 38 51 39 %Write triangulation to disk {{{ 40 tr=load(triangulation); 52 %handle rendering of the whole planet: {{{ 53 tr=load(triangulation_earth); 54 index=tr.index; lat=tr.lat; long=tr.long; surface=tr.surface; 55 56 %we get index, lat long and surface, make this into a planet sphere: 57 58 R=6371000*ones(length(surface),1)+scaling_factor*surface; 59 60 x = R .* cosd(lat) .* cosd(long); 61 y = R .* cosd(lat) .* sind(long); 62 z = R .* sind(lat); 63 41 64 42 65 %write x0, x1, y0 and y1 43 66 fid=fopen([database '/image_coords.js'],'w'); 44 fprintf(fid,'var x0=%g;\n',tr.x0); 45 fprintf(fid,'var x1=%g;\n',tr.x1); 46 fprintf(fid,'var y0=%g;\n',tr.y0); 47 fprintf(fid,'var y1=%g;\n',tr.y1); 48 fclose(fid); 49 50 %copy image locally: 51 system(['cp ' radar_image ' ' database '/radar.png']); 52 67 fprintf(fid,'var x0=%g;\n',min(x)); 68 fprintf(fid,'var x1=%g;\n',max(x)); 69 fprintf(fid,'var y0=%g;\n',min(y)); 70 fprintf(fid,'var y1=%g;\n',max(y)); 71 fprintf(fid,'var z0=%g;\n',min(z)); 72 fprintf(fid,'var z1=%g;\n',max(z)); 73 fprintf(fid,'var lat0=%g;\n',min(lat)); 74 fprintf(fid,'var lat1=%g;\n',max(lat)); 75 fprintf(fid,'var long0=%g;\n',min(long)); 76 fprintf(fid,'var long1=%g;\n',max(long)); 77 fclose(fid); 78 79 system(['cp ' radar_image_earth ' ' database '/radar.png']); 80 81 numberofvertices=length(x); 82 numberofelements=length(index); 83 53 84 %write triangulation and surface to disk: 54 85 fid=fopen([database '/surface_triangulation.js'],'w'); … … 57 88 fprintf(fid,'<!-- index_surface{{{-->\n'); 58 89 fprintf(fid,'var index_surface=['); 59 for i=1:length(tr.index)-1, 60 fprintf(fid,'[%i, %i, %i],',tr.index(i,1),tr.index(i,2),tr.index(i,3)); 61 end 62 fprintf(fid,'[%i, %i, %i]];\n',tr.index(end,1),tr.index(end,2),tr.index(end,3)); 63 fprintf(fid,'<!--}}}-->\n'); 90 for i=1:numberofelements-1, 91 fprintf(fid,'[%i, %i, %i],',index(i,1),index(i,2),index(i,3)); 92 end 93 fprintf(fid,'[%i, %i, %i]];\n',index(end,1),index(end,2),index(end,3)); 94 fprintf(fid,'<!--}}}-->\n'); 95 64 96 %write x: 65 97 fprintf(fid,'<!-- x_surface{{{-->\n'); 66 98 fprintf(fid,'var x_surface=['); 67 for i=1: length(tr.x)-1,68 fprintf(fid,'%g,', tr.x(i,1));69 end 70 fprintf(fid,'%g];\n', tr.x(end,1));99 for i=1:numberofvertices-1, 100 fprintf(fid,'%g,',x(i,1)); 101 end 102 fprintf(fid,'%g];\n',x(end,1)); 71 103 fprintf(fid,'<!--}}}-->\n'); 72 104 … … 74 106 fprintf(fid,'<!-- y_surface{{{-->\n'); 75 107 fprintf(fid,'var y_surface=['); 76 for i=1: length(tr.y)-1,77 fprintf(fid,'%g,', tr.y(i,1));78 end 79 fprintf(fid,'%g];\n', tr.y(end,1));80 fprintf(fid,'<!--}}}-->\n'); 81 82 %write surface:83 fprintf(fid,'<!-- surface_surface{{{-->\n');84 fprintf(fid,'var surface_surface=[');85 for i=1: length(tr.surface)-1,86 fprintf(fid,'%g,', tr.surface(i));87 end 88 fprintf(fid,'%g];\n', tr.surface(end));89 fprintf(fid,'<!--}}}-->\n'); 90 91 fclose(fid); 92 %}}} 93 %Write high-res triangulation to disk {{{ 94 if getfieldvalue(options,'highres',0); 95 96 x0=min(md.mesh.x); 97 x1=max(md.mesh.x);98 y0=min(md.mesh.y);99 y1=max(md.mesh.y); 100 dx=x1-x0; 101 dy=y1-y0;102 factor=.25;103 104 x0=x0-factor*dx;105 x1=x1+factor*dx; 106 y1=y1+factor*dy;107 y0=y0-factor*dy;108 109 %write x0, x1, y0 and y1 110 fid=fopen([database '/image_coords_highdef.js'],'w'); 111 fprintf(fid,'var x0_hd=%g;\n',x0); 112 fprintf(fid,'var x1_hd=%g;\n',x1); 113 fprintf(fid,'var y0_hd=%g;\n',y0);114 fprintf(fid,'var y1_hd=%g;\n',y1); 115 fclose(fid);116 117 118 %extract image 119 eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' geotiff_name_hd ' radar_hd.tif']);120 121 %convert to png: 122 system('convert radar_hd.tif radar_hd.png && rm -rf radar_hd.tif'); 123 124 %get width: 125 [status,width]=system(['convert radar_hd.png -format %w info:']); width=str2num(width);126 127 %get height: 128 [status,height]=system(['convert radar_hd.png -format %h info:']); height=str2num(height); 129 130 %get these a power of 2: 131 width=2^(nextpow2(width)); 132 height=2^(nextpow2(height));133 134 %change size of image: 135 system(['convert -geometry ' num2str(width) 'x' num2str(height) '! radar_hd.png radar_hd.png']);136 137 system(['mv radar_hd.png ' database '/radar_hd.png']);138 139 %now, extract higher resolution triangulation: 140 trhd=load(triangulation_hd); a=trhd;141 trhd.xelem=trhd.x(trhd.index)*[1;1;1]/3;142 trhd.yelem=trhd.y(trhd.index)*[1;1;1]/3;143 144 pos_elem=find(x0<=trhd.xelem & trhd.xelem<=x1 & y0<=trhd.yelem & trhd.yelem<=y1); 145 pos_node=sort(unique(trhd.index(pos_elem,:))); 146 147 %keep track of some fields 148 numberofvertices1=length(trhd.x);149 numberofelements1=length(trhd.index);150 numberofvertices2=length(pos_node); 151 numberofelements2=length(pos_elem); 152 flag_node=zeros(numberofvertices1,1);153 flag_node(pos_node)=1; 154 155 %Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements) 156 Pelem=zeros(numberofelements1,1);157 Pelem(pos_elem)=[1:numberofelements2]'; 158 Pnode=zeros(numberofvertices1,1);159 Pnode(pos_node)=[1:numberofvertices2]'; 160 161 %renumber the elements (some nodes won't exist anymore) 162 index2=trhd.index(pos_elem,:); 163 index2(:,1)=Pnode(index2(:,1)); 164 index2(:,2)=Pnode(index2(:,2));165 index2(:,3)=Pnode(index2(:,3));166 167 trhd.index=index2;168 trhd.x=trhd.x(pos_node); 169 trhd.y=trhd.y(pos_node);170 trhd.surface=trhd.surface(pos_node);171 172 %write triangulation and surface to disk: 173 fid=fopen([database '/surface_triangulation_hd.js'],'w');174 175 %write index: 176 fprintf(fid,' <!-- index_surface_hd{{{-->\n');177 fprintf(fid,'var index_surface_hd=['); 178 for i=1:length(trhd.index)-1, 179 fprintf(fid,'[%i, %i, %i],',trhd.index(i,1),trhd.index(i,2),trhd.index(i,3));180 end 181 fprintf(fid,'[%i, %i, %i]];\n',trhd.index(end,1),trhd.index(end,2),trhd.index(end,3)); 182 fprintf(fid,'<!--}}}-->\n');183 %write x: 184 fprintf(fid,'<!-- x_surface_hd{{{-->\n'); 185 fprintf(fid,' var x_surface_hd=[');186 for i=1:length(trhd.x)-1, 187 fprintf(fid,'%g,',trhd.x(i,1));188 end 189 fprintf(fid,'%g];\n',trhd.x(end,1)); 190 fprintf(fid,'<!--}}}-->\n'); 191 192 %write y: 193 fprintf(fid,'<!-- y_surface_hd{{{-->\n'); 194 fprintf(fid,' var y_surface_hd=[');195 for i=1:length(trhd.y)-1, 196 fprintf(fid,'%g,',trhd.y(i,1));197 end 198 fprintf(fid,'%g];\n',trhd.y(end,1)); 199 fprintf(fid,'<!--}}}-->\n'); 200 201 %write surface: 202 fprintf(fid,'<!-- surface_surface_hd{{{-->\n'); 203 fprintf(fid,' var surface_surface_hd=[');204 for i=1:length(trhd.surface)-1, 205 fprintf(fid,'%g,',trhd.surface(i));206 end 207 fprintf(fid,'%g];\n',trhd.surface(end)); 208 fprintf(fid,'<!--}}}-->\n');209 210 fclose(fid); 211 a2=trhd; 212 save temp2 a2 a 213 else 214 delete([database '/radar_hd.png']); 215 delete([database '/image_coords_highdef.js']);216 delete([database '/surface_triangulation_hd.js']); 217 218 end 219 % }}} 220 %Deal with contour {{{ 221 222 fid=fopen([database '/contour_coords.js'],'w'); 223 224 contour_x=md.mesh.x(md.mesh.segments(:,1));225 contour_y=md.mesh.y(md.mesh.segments(:,1));226 contour_surface=md.geometry.surface(md.mesh.segments(:,1)); 227 228 %write contour_x: 229 fprintf(fid,'<!-- contour_x{{{-->\n');230 fprintf(fid,'var contour_x=['); 231 f or i=1:length(contour_x)-1,232 fprintf(fid,'%g,',contour_x(i)); 233 end 234 fprintf(fid,'%g];\n',contour_x(end));235 fprintf(fid,'<!--}}}-->\n'); 236 237 %write contour_y: 238 fprintf(fid,'<!-- contour_y{{{-->\n');239 fprintf(fid,'var contour_y=['); 240 f or i=1:length(contour_y)-1,241 fprintf(fid,'%g,',contour_y(i)); 242 end 243 fprintf(fid,'%g];\n',contour_y(end));244 fprintf(fid,'<!--}}}-->\n'); 245 246 %write contour_surface: 247 fprintf(fid,'<!-- contour_surface{{{-->\n');248 fprintf(fid,'var contour_surface=['); 249 f or i=1:length(contour_surface)-1,250 fprintf(fid,'%g,',contour_surface(i)); 251 end 252 fprintf(fid,'%g];\n',contour_surface(end));253 fprintf(fid,'<!--}}}-->\n'); 254 255 fclose(fid); 256 % 108 for i=1:numberofvertices-1, 109 fprintf(fid,'%g,',y(i,1)); 110 end 111 fprintf(fid,'%g];\n',y(end,1)); 112 fprintf(fid,'<!--}}}-->\n'); 113 114 %write z: 115 fprintf(fid,'<!-- z_surface{{{-->\n'); 116 fprintf(fid,'var z_surface=['); 117 for i=1:numberofvertices-1, 118 fprintf(fid,'%g,',z(i,1)); 119 end 120 fprintf(fid,'%g];\n',z(end,1)); 121 fprintf(fid,'<!--}}}-->\n'); 122 123 %write lat: 124 fprintf(fid,'<!-- lat_surface{{{-->\n'); 125 fprintf(fid,'var lat_surface=['); 126 for i=1:numberofvertices-1, 127 fprintf(fid,'%g,',lat(i,1)); 128 end 129 fprintf(fid,'%g];\n',lat(end,1)); 130 fprintf(fid,'<!--}}}-->\n'); 131 132 %write long: 133 fprintf(fid,'<!-- long_surface{{{-->\n'); 134 fprintf(fid,'var long_surface=['); 135 for i=1:numberofvertices-1, 136 fprintf(fid,'%g,',long(i,1)); 137 end 138 fprintf(fid,'%g];\n',long(end,1)); 139 fprintf(fid,'<!--}}}-->\n'); 140 141 fclose(fid); 142 %}}} 143 %handle rendering of Antarctica and Greenland wholy{{{ 144 145 load(triangulation); 146 147 R=6371000*ones(length(x),1)+scaling_factor*surface; 148 149 [lat,long]=xy2ll(x,y,-1); 150 151 x = R .* cosd(lat) .* cosd(long); 152 y = R .* cosd(lat) .* sind(long); 153 z = R .* sind(lat); 154 155 x0=min(x); x1=max(x); 156 y0=min(y); y1=max(y); 157 z0=min(z); z1=max(z); 158 lat0=min(lat); lat1=max(lat);long0=min(long);long1=max(long); 159 160 161 %write x0, x1, y0 and y1 162 fid=fopen([database '/image_coords_highdef.js'],'w'); 163 164 fprintf(fid,'var x0_hd=%g;\n',x0); 165 fprintf(fid,'var x1_hd=%g;\n',x1); 166 fprintf(fid,'var y0_hd=%g;\n',y0); 167 fprintf(fid,'var y1_hd=%g;\n',y1); 168 fprintf(fid,'var z0_hd=%g;\n',z0); 169 fprintf(fid,'var z1_hd=%g;\n',z1); 170 fprintf(fid,'var lat0_hd=%g;\n',lat0); 171 fprintf(fid,'var lat1_hd=%g;\n',lat1); 172 fprintf(fid,'var long0_hd=%g;\n',long0); 173 fprintf(fid,'var long1_hd=%g;\n',long1); 174 fclose(fid); 175 176 177 %copy corresponding image: 178 system(['cp ' radar_image ' ' database '/radar_hd.png']); 179 180 numberofvertices=length(x); 181 numberofelements=length(index); 182 183 %write triangulation and surface to disk: 184 fid=fopen([database '/surface_triangulation_hd.js'],'w'); 185 186 %write index: 187 fprintf(fid,'<!-- index_surface_hd{{{-->\n'); 188 fprintf(fid,'var index_surface_hd=['); 189 for i=1:numberofelements-1, 190 fprintf(fid,'[%i, %i, %i],',index(i,1),index(i,2),index(i,3)); 191 end 192 fprintf(fid,'[%i, %i, %i]];\n',index(end,1),index(end,2),index(end,3)); 193 fprintf(fid,'<!--}}}-->\n'); 194 195 %write x: 196 fprintf(fid,'<!-- x_surface_hd{{{-->\n'); 197 fprintf(fid,'var x_surface_hd=['); 198 for i=1:numberofvertices-1, 199 fprintf(fid,'%g,',x(i,1)); 200 end 201 fprintf(fid,'%g];\n',x(end,1)); 202 fprintf(fid,'<!--}}}-->\n'); 203 204 %write y: 205 fprintf(fid,'<!-- y_surface_hd{{{-->\n'); 206 fprintf(fid,'var y_surface_hd=['); 207 for i=1:numberofvertices-1, 208 fprintf(fid,'%g,',y(i,1)); 209 end 210 fprintf(fid,'%g];\n',y(end,1)); 211 fprintf(fid,'<!--}}}-->\n'); 212 213 %write z: 214 fprintf(fid,'<!-- z_surface_hd{{{-->\n'); 215 fprintf(fid,'var z_surface_hd=['); 216 for i=1:numberofvertices-1, 217 fprintf(fid,'%g,',z(i,1)); 218 end 219 fprintf(fid,'%g];\n',z(end,1)); 220 fprintf(fid,'<!--}}}-->\n'); 221 222 %write lat: 223 fprintf(fid,'<!-- lat_surface_hd{{{-->\n'); 224 fprintf(fid,'var lat_surface_hd=['); 225 for i=1:numberofvertices-1, 226 fprintf(fid,'%g,',lat(i,1)); 227 end 228 fprintf(fid,'%g];\n',lat(end,1)); 229 fprintf(fid,'<!--}}}-->\n'); 230 231 %write long: 232 fprintf(fid,'<!-- long_surface_hd{{{-->\n'); 233 fprintf(fid,'var long_surface_hd=['); 234 for i=1:numberofvertices-1, 235 fprintf(fid,'%g,',long(i,1)); 236 end 237 fprintf(fid,'%g];\n',long(end,1)); 238 fprintf(fid,'<!--}}}-->\n'); 239 240 fclose(fid); 241 242 243 %}}} 244 %handle rendering of contour {{{ 245 246 247 fid=fopen([database '/contour_coords.js'],'w'); 248 249 contour_lat=md.mesh.lat(md.mesh.segments(:,1)); 250 contour_long=md.mesh.long(md.mesh.segments(:,1)); 251 contour_surface=md.geometry.surface(md.mesh.segments(:,1)); 252 253 R=6371000*ones(length(contour_surface),1)+scaling_factor*contour_surface; 254 255 contour_x = R .* cosd(contour_lat) .* cosd(contour_long); 256 contour_y = R .* cosd(contour_lat) .* sind(contour_long); 257 contour_z = R .* sind(contour_lat); 258 259 %write contour_x: 260 fprintf(fid,'<!-- contour_x{{{-->\n'); 261 fprintf(fid,'var contour_x=['); 262 for i=1:length(contour_x)-1, 263 fprintf(fid,'%g,',contour_x(i)); 264 end 265 fprintf(fid,'%g];\n',contour_x(end)); 266 fprintf(fid,'<!--}}}-->\n'); 267 268 %write contour_y: 269 fprintf(fid,'<!-- contour_y{{{-->\n'); 270 fprintf(fid,'var contour_y=['); 271 for i=1:length(contour_y)-1, 272 fprintf(fid,'%g,',contour_y(i)); 273 end 274 fprintf(fid,'%g];\n',contour_y(end)); 275 fprintf(fid,'<!--}}}-->\n'); 276 277 %write contour_surface: 278 fprintf(fid,'<!-- contour_z{{{-->\n'); 279 fprintf(fid,'var contour_z=['); 280 for i=1:length(contour_z)-1, 281 fprintf(fid,'%g,',contour_z(i)); 282 end 283 fprintf(fid,'%g];\n',contour_z(end)); 284 fprintf(fid,'<!--}}}-->\n'); 285 286 fclose(fid); 287 288 %}}} 257 289 258 290 %Come back to present directory:
Note:
See TracChangeset
for help on using the changeset viewer.