Changeset 6313
- Timestamp:
- 10/15/10 10:39:09 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/m/kml/kml_mesh_write.m
r6312 r6313 81 81 edata=data; 82 82 elseif (numel(data)==md.numberofgrids) 83 ndata=data; 83 84 display('Averaging nodal data to element data.'); 84 85 edata=zeros(1,md.numberofelements); 85 86 for i=1:size(md.elements,1) 86 87 for j=1:size(md.elements,2) 87 edata(i)=edata(i)+ data(md.elements(i,j));88 edata(i)=edata(i)+ndata(md.elements(i,j)); 88 89 end 89 90 edata(i)=edata(i)/size(md.elements,2); 90 91 end 91 92 else 92 error(['Data has incorrect number of ' num2str(numel(data)) ' elements.']);93 error(['Data has incorrect number of ' num2str(numel(data)) ' values.']); 93 94 end 94 95 end … … 335 336 % write folder for partitions 336 337 337 fprintf(fid,' <Folder>\n'); 338 fprintf(fid,' <name>Partitions</name>\n'); 339 fprintf(fid,' <visibility>1</visibility>\n'); 340 fprintf(fid,' <description>Partitions=%d, Nodes=%d</description>\n',... 341 md.npart,md.numberofgrids); 338 if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ... 339 md.npart 340 fprintf(fid,' <Folder>\n'); 341 fprintf(fid,' <name>Partitions</name>\n'); 342 fprintf(fid,' <visibility>1</visibility>\n'); 343 fprintf(fid,' <description>Partitions=%d, Nodes=%d</description>\n',... 344 md.npart,md.numberofgrids); 342 345 343 346 % write each partition loop as a polygon 344 347 345 disp(['Writing ' num2str(md.npart) ' partitions as KML polygons.']); 346 epart=md.part(md.elements)+1; 347 for k=1:md.npart 348 [icol,irow]=find(epart'==k); 349 irow=unique(irow); 350 elem=md.elements(irow,:); 351 nodecon=NodeConnectivity(elem,md.numberofgrids); 352 [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon); 353 iloop(end+1)=size(edgeper,1)+1; 354 for i=1:length(iloop)-1 355 fprintf(fid,' <Placemark>\n'); 356 if (length(iloop)-1 > 1) 357 fprintf(fid,' <name>Partition %d, Loop %d</name>\n',k,i); 358 else 359 fprintf(fid,' <name>Partition %d</name>\n',k); 360 end 361 fprintf(fid,' <visibility>1</visibility>\n'); 362 % if exist('edata','var') 363 % fprintf(fid,' <description>Element data: %g</description>\n',edata(i)); 364 % imap = fix((edata(i)-cmin)/(cmax-cmin)*size(cmap,1))+1; 365 % if (imap >= 1) && (imap <= size(cmap,1)) 366 % fprintf(fid,' <styleUrl>#MatlabColor%d</styleUrl>\n',imap); 367 % elseif (edata(i) == cmax) 368 % fprintf(fid,' <styleUrl>#MatlabColor%d</styleUrl>\n',size(cmap,1)); 369 % else 370 % fprintf(fid,' <styleUrl>#BlackLineEmptyPoly</styleUrl>\n'); 371 % end 372 % else 373 fprintf(fid,' <styleUrl>#BlackLineRandomPoly</styleUrl>\n'); 374 % end 375 fprintf(fid,' <Polygon>\n'); 376 fprintf(fid,' <extrude>1</extrude>\n'); 377 fprintf(fid,' <altitudeMode>relativeToGround</altitudeMode>\n'); 378 fprintf(fid,' <outerBoundaryIs>\n'); 379 fprintf(fid,' <LinearRing>\n'); 380 fprintf(fid,' <coordinates>\n'); 381 for j=iloop(i):iloop(i+1)-1 382 [lat(j),long(j)]=mapxy(md.x(edgeper(j,1)),md.y(edgeper(j,1)),'s'); 383 fprintf(fid,' %0.16g,%0.16g,%0.16g\n',long(j),lat(j),alt); 384 end 385 fprintf(fid,' %0.16g,%0.16g,%0.16g\n',long(iloop(i)),lat(iloop(i)),alt); 386 387 fprintf(fid,' </coordinates>\n'); 388 fprintf(fid,' </LinearRing>\n'); 389 fprintf(fid,' </outerBoundaryIs>\n'); 390 fprintf(fid,' </Polygon>\n'); 391 fprintf(fid,' </Placemark>\n'); 392 end 393 end 394 fprintf(fid,' </Folder>\n'); 348 disp(['Writing ' num2str(md.npart) ' partitions as KML polygons.']); 349 epart=md.part(md.elements)+1; 350 if exist('ndata','var') || exist('edata','var') 351 pdata=zeros(1,md.npart); 352 pdata(:)=NaN; 353 end 354 for k=1:md.npart 355 [icol,irow]=find(epart'==k); 356 irow=unique(irow); 357 elem=md.elements(irow,:); 358 nodecon=NodeConnectivity(elem,md.numberofgrids); 359 [edgeper,elemper,iloop]=edgeperimeter(elem,nodecon); 360 iloop(end+1)=size(edgeper,1)+1; 361 if exist('ndata','var') 362 pdata(k)=ndata(find(md.part+1==k,1)); 363 elseif exist('edata','var') 364 for i=1:size(epart,1) 365 if isempty(find(epart(i,:)~=k,1)) 366 pdata(k)=edata(i); 367 break 368 end 369 end 370 if isnan(pdata(k)) 371 warning('Data for Partition %d is not defined.\n',k) 372 end 373 end 374 for i=1:length(iloop)-1 375 fprintf(fid,' <Placemark>\n'); 376 if (length(iloop)-1 > 1) 377 fprintf(fid,' <name>Partition %d, Loop %d</name>\n',k,i); 378 else 379 fprintf(fid,' <name>Partition %d</name>\n',k); 380 end 381 fprintf(fid,' <visibility>1</visibility>\n'); 382 if exist('pdata','var') 383 fprintf(fid,' <description>Partition data: %g</description>\n',pdata(k)); 384 imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1; 385 if (imap >= 1) && (imap <= size(cmap,1)) 386 fprintf(fid,' <styleUrl>#MatlabColor%d</styleUrl>\n',imap); 387 elseif (pdata(k) == cmax) 388 fprintf(fid,' <styleUrl>#MatlabColor%d</styleUrl>\n',size(cmap,1)); 389 else 390 fprintf(fid,' <styleUrl>#BlackLineEmptyPoly</styleUrl>\n'); 391 end 392 else 393 fprintf(fid,' <styleUrl>#BlackLineRandomPoly</styleUrl>\n'); 394 end 395 fprintf(fid,' <Polygon>\n'); 396 fprintf(fid,' <extrude>1</extrude>\n'); 397 fprintf(fid,' <altitudeMode>relativeToGround</altitudeMode>\n'); 398 fprintf(fid,' <outerBoundaryIs>\n'); 399 fprintf(fid,' <LinearRing>\n'); 400 fprintf(fid,' <coordinates>\n'); 401 for j=iloop(i):iloop(i+1)-1 402 [lat(j),long(j)]=mapxy(md.x(edgeper(j,1)),md.y(edgeper(j,1)),'s'); 403 fprintf(fid,' %0.16g,%0.16g,%0.16g\n',long(j),lat(j),alt); 404 end 405 fprintf(fid,' %0.16g,%0.16g,%0.16g\n',long(iloop(i)),lat(iloop(i)),alt); 406 407 fprintf(fid,' </coordinates>\n'); 408 fprintf(fid,' </LinearRing>\n'); 409 fprintf(fid,' </outerBoundaryIs>\n'); 410 fprintf(fid,' </Polygon>\n'); 411 fprintf(fid,' </Placemark>\n'); 412 end 413 end 414 fprintf(fid,' </Folder>\n'); 415 end 395 416 396 417 % write trailer data
Note:
See TracChangeset
for help on using the changeset viewer.