Ignore:
Timestamp:
11/01/10 15:54:12 (14 years ago)
Author:
jschierm
Message:

Implementation of kml class hierarchy in kml plotting drivers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk/src/m/kml/kml_part_elems.m

    r6417 r6461  
    22%  create kml polygons for the partition elements.
    33%
    4 %  []=kml_part_elems(fid,md,params)
     4%  [kfold]=kml_part_elems(md,params)
    55%
    66%  where the required input is:
    7 %    fid           (char, file ID of .kml file)
    87%    md            (model, model class object)
    98%
     
    1918%    prtplt        (char, 'off'/'no' for partition segment plot)
    2019%
    21 function []=kml_part_elems(varargin)
     20%  and the required output is:
     21%    kfold         (kml_folder, folder of polygon placemarks)
     22%
     23function [kfold]=kml_part_elems(varargin)
    2224
    2325if ~nargin
     
    3032iarg=1;
    3133if (nargin >= 1)
    32     fid=varargin{1};
    33 end
    34 if ~exist('fid','var') || isempty(fid) || (fid < 0)
    35     error('File ID ''%d'' must be open.',fid);
    36 end
    37 
    38 iarg=iarg+1;
    39 if (nargin >= 2)
    40     md=varargin{2};
     34    md=varargin{1};
    4135end
    4236if ~exist('md','var') || isempty(md) || ~isa(md,'model')
     
    109103if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ...
    110104    md.npart
    111     fprintf(fid,'    <Folder>\n');
    112     fprintf(fid,'      <name>Partition Elements</name>\n');
    113     fprintf(fid,'      <visibility>1</visibility>\n');
    114     fprintf(fid,'      <description>Partitions=%d, Nodes=%d</description>\n',...
     105    kfold=kml_folder();
     106    kfold.name      ='Partition Elements';
     107    kfold.visibility=1;
     108    kfold.descript  =sprintf('Partitions=%d, Nodes=%d\n',...
    115109        md.npart,md.numberofgrids);
     110    kfold.feature   ={repmat(kml_placemark(),0,0)};
    116111
    117 %  write each partition loop as a polygon
     112%  write each partition loop as a polygon placemark
    118113
    119114    disp(['Writing ' num2str(md.npart) ' partitions as KML polygons.']);
     
    144139        end
    145140        for i=1:length(iloop)-1
    146             fprintf(fid,'      <Placemark>\n');
     141            kplace=kml_placemark();
    147142            if (length(iloop)-1 > 1)
    148                 fprintf(fid,'        <name>Partition %d, Loop %d</name>\n',k,i);
     143                kplace.name      =sprintf('Partition %d, Loop %d',k,i);
    149144            else
    150                 fprintf(fid,'        <name>Partition %d</name>\n',k);
     145                kplace.name      =sprintf('Partition %d',k);
    151146            end
    152             fprintf(fid,'        <visibility>1</visibility>\n');
     147            kplace.visibility=1;
    153148            if exist('pdata','var')
    154                 fprintf(fid,'        <description>Partition data: %g</description>\n',pdata(k));
     149                kplace.descript  =sprintf('Partition data: %g',pdata(k));
    155150                imap = fix((pdata(k)-cmin)/(cmax-cmin)*size(cmap,1))+1;
    156151                if     (imap >= 1) && (imap <= size(cmap,1))
    157                     fprintf(fid,'        <styleUrl>#MatlabColor%d</styleUrl>\n',imap);
     152                    kplace.styleurl  =sprintf('#MatlabColor%d',imap);
    158153                elseif (pdata(k) == cmax)
    159                     fprintf(fid,'        <styleUrl>#MatlabColor%d</styleUrl>\n',size(cmap,1));
     154                    kplace.styleurl  =sprintf('#MatlabColor%d',size(cmap,1));
    160155                else
    161                     fprintf(fid,'        <styleUrl>#BlackLineEmptyPoly</styleUrl>\n');
     156                    kplace.styleurl  =sprintf('#BlackLineEmptyPoly');
    162157                end
    163158            else
    164                 fprintf(fid,'        <styleUrl>#BlackLineRandomPoly</styleUrl>\n');
     159                kplace.styleurl  =sprintf('#BlackLineRandomPoly');
    165160            end
    166             fprintf(fid,'        <Polygon>\n');
    167             fprintf(fid,'          <extrude>1</extrude>\n');
    168             fprintf(fid,'          <altitudeMode>relativeToGround</altitudeMode>\n');
    169             fprintf(fid,'          <outerBoundaryIs>\n');
    170             fprintf(fid,'            <LinearRing>\n');
    171             fprintf(fid,'              <coordinates>\n');
     161
     162            kpoly=kml_polygon();
     163            kpoly.extrude   =1;
     164            kpoly.altmode   ='relativeToGround';
     165
     166            kring=kml_linearring();
     167            kring.coords    =zeros(iloop(i+1)-iloop(i)+1,3);
     168
    172169            for j=iloop(i):iloop(i+1)-1
    173                 [lat(j),long(j)]=mapxy(md.x(edgeper(j,1)),md.y(edgeper(j,1)),'s');
    174                 fprintf(fid,'                %0.16g,%0.16g,%0.16g\n',long(j),lat(j),alt);
     170                [lat,long]=mapxy(md.x(edgeper(j,1)),md.y(edgeper(j,1)),'s');
     171                kring.coords(j-iloop(i)+1,:)=[long lat alt];
    175172            end
    176             fprintf(fid,'                %0.16g,%0.16g,%0.16g\n',long(iloop(i)),lat(iloop(i)),alt);
     173            kring.coords(end,:)=kring.coords(1,:);
    177174
    178             fprintf(fid,'              </coordinates>\n');
    179             fprintf(fid,'            </LinearRing>\n');
    180             fprintf(fid,'          </outerBoundaryIs>\n');
    181             fprintf(fid,'        </Polygon>\n');
    182             fprintf(fid,'      </Placemark>\n');
     175            kpoly.outer=kring;
     176            kplace.geometry=kpoly;
     177            kfold.feature{1}(end+1)=kplace;
     178            clear kring kpoly kplace
    183179        end
    184180    end
    185     fprintf(fid,'    </Folder>\n');
    186181end
    187182
Note: See TracChangeset for help on using the changeset viewer.