Changeset 6313


Ignore:
Timestamp:
10/15/10 10:39:09 (15 years ago)
Author:
jschierm
Message:

Color partitions according to data in kml_mesh_write.m.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/kml/kml_mesh_write.m

    r6312 r6313  
    8181        edata=data;
    8282    elseif (numel(data)==md.numberofgrids)
     83        ndata=data;
    8384        display('Averaging nodal data to element data.');
    8485        edata=zeros(1,md.numberofelements);
    8586        for i=1:size(md.elements,1)
    8687            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));
    8889            end
    8990            edata(i)=edata(i)/size(md.elements,2);
    9091        end
    9192    else
    92         error(['Data has incorrect number of ' num2str(numel(data)) ' elements.']);
     93        error(['Data has incorrect number of ' num2str(numel(data)) ' values.']);
    9394    end
    9495end
     
    335336%  write folder for partitions
    336337
    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);
     338if (~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);
    342345
    343346%  write each partition loop as a polygon
    344347
    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');
     415end
    395416
    396417%  write trailer data
Note: See TracChangeset for help on using the changeset viewer.