1 | function segmentstobasin(basin,varargin)
|
---|
2 | %SEGMENTSTOBASIN - read exp or shp files corresponding to the boundaries of a basin, and assemble
|
---|
3 | % a basin file accordingly (by concatenating the segments). The segments might not be oriented
|
---|
4 | % the right way, so the list of exp segment files given goes along booleans that determined whether
|
---|
5 | % each segment should be inverted or not.
|
---|
6 | %
|
---|
7 | % Usage:
|
---|
8 | % segmentstobasin(basinname,basin1,invert1,basin2,invert2,...)
|
---|
9 | %
|
---|
10 | % Example:
|
---|
11 | % segmentstobasin('Antarctica.exp','Antarctica1.exp',0,'Antarctica2.shp',1); %we inverte the segments in Antarctica2.shp
|
---|
12 | %
|
---|
13 | % See also EXPREAD
|
---|
14 |
|
---|
15 | %some checks
|
---|
16 | if exist(basin),
|
---|
17 | %choice=input(['A file ' basin ' already exists, do you want to modify it? (y/n)'],'s');
|
---|
18 | %if ~strcmpi(choice,'y'),
|
---|
19 | % disp('no modification done ... exiting');
|
---|
20 | % return;
|
---|
21 | %end
|
---|
22 | end
|
---|
23 |
|
---|
24 | %go through the list of basins
|
---|
25 | if mod(length(varargin),2)~=0,
|
---|
26 | error('an even number of arguments should be provided after the basin name');
|
---|
27 | end
|
---|
28 |
|
---|
29 | domain.x=[]; domain.y=[]; domain.nods=1;
|
---|
30 | for i=1:nargin/2,
|
---|
31 | expfile=varargin{(i-1)*2+1};
|
---|
32 | invert=varargin{(i-1)*2+2};
|
---|
33 | if isexp(expfile),
|
---|
34 | expstruct=expread(expfile,'invert',invert);
|
---|
35 | else
|
---|
36 | expstruct=shpread(expfile,'invert',invert);
|
---|
37 | end
|
---|
38 | domain.x=[domain.x;expstruct.x];
|
---|
39 | domain.y=[domain.y;expstruct.y];
|
---|
40 | domain.nods=domain.nods+length(expstruct.x);
|
---|
41 | end
|
---|
42 |
|
---|
43 | domain.nods=domain.nods+1;
|
---|
44 | domain.x=[domain.x;domain.x(1)];
|
---|
45 | domain.y=[domain.y;domain.y(1)];
|
---|
46 | domain.Geometry='Polygon';
|
---|
47 |
|
---|
48 | if isexp(basin),
|
---|
49 | expwrite(domain,basin);
|
---|
50 | else
|
---|
51 | shpwrite(domain,basin);
|
---|
52 | end
|
---|