function result_status = getNDWI(JSONString,JSONCurDate,prox_host)

pkg load image
JSONDate = JSONString;
%Note: B4 is used as B3 for NDWI
B4URL = JSONCurDate.Band4URI;
B3URL = strrep(B4URL,"B04.jp2","B11.jp2");
B8URL = strrep(B4URL,"B04.jp2","B8A.jp2");
SensingDate = JSONCurDate.sensing_date;
%bandtag =strcat(band,".jp2")
%B3URL = strrep(B4URL,"B04.jp2",bandtag)

UID = JSONDate.UID;
%B3FileName = strcat("Tile",bandtag)
B4FileName = 'TileB11.jp2';
B8FileName = 'TileB8A.jp2';

%prox_https=strcat("https://",prox_host)

%putenv ('https_proxy', prox_https)

pause(5);
try
urlwrite(B3URL,B4FileName);
catch
result_status = strcat(UID,"failed0")
return
end

pause(5);
try
urlwrite(B8URL,B8FileName);
catch
result_status = strcat(UID,"failed0")
return
end

%pause(5);
%urlwrite(B3URL,B4FileName);
%pause(5);
%urlwrite(B8URL,B8FileName);
%urlwrite(TCIURL,TCIFileName);
try
B4 = imread('TileB8A.jp2');

B8 = imread('TileB11.jp2');

%urlwrite(B3URL,B3FileName);

%B3 = imread(B3FileName);
catch
result_status = strcat(UID,"failed1")
                result_status2 = 'Too much black in image'
        return
end
sizeB4 = size(B4);
format long;
red = 255;
green = 0;
stepsize = 25;
mat_step =1;
c_map = zeros(20,3);
while green<255
	green = green+stepsize
	if green > 255
		green = 255;
	end
	r_color = red/255;
	g_color = green/255;
	c_map(mat_step,1) = r_color;
	c_map(mat_step,2) = g_color;
	c_map(mat_step,3) = 0;
	mat_step = mat_step+1;
end
while red >0
	red = red-stepsize;
	if red<0
		red = 0;
	end
	r_color = red/255;
	g_color = green/255;
	c_map(mat_step,1) = r_color;
	c_map(mat_step,2) = g_color;
	c_map(mat_step,3) = 0;
	mat_step = mat_step+1;
end
%c_map

TileMaxLat =JSONCurDate.north_lat
TileMinLat =JSONCurDate.south_lat
TileMaxLong = JSONCurDate.east_lon
TileMinLong =JSONCurDate.west_lon


FieldMaxLat = JSONDate.FieldMaxLat
FieldMinLat = JSONDate.FieldMinLat
FieldMaxLong =JSONDate.FieldMaxLong
FieldMinLong =JSONDate.FieldMinLong

UID = JSONDate.UID;

LatsPerPixel = (TileMaxLat - TileMinLat)/sizeB4(1)
LongsPerPixel = (TileMaxLong - TileMinLong)/sizeB4(1)


    PixelsPerLat = abs(sizeB4(1)/(TileMaxLat - TileMinLat));
PixelsPerLong = abs(sizeB4(2)/(TileMaxLong - TileMinLong));

StartPixelLat = PixelsPerLat*(1-abs(FieldMaxLat-TileMinLat));
StartPixelLat = round(abs(StartPixelLat));

EndPixelLat = PixelsPerLat*(1-abs(TileMinLat- FieldMinLat));
EndPixelLat =  round(abs(EndPixelLat));

if StartPixelLat > EndPixelLat
        temp = EndPixelLat;
        EndPixelLat = StartPixelLat;
        StartPixelLat = temp;
end

if StartPixelLat > 100
        StartPixelLat = StartPixelLat - 100;
else
        StartPixelLat = 0;
end

if EndPixelLat <sizeB4(1)-100
        EndPixelLat = EndPixelLat + 100;
else
        EndPixelLat = sizeB4(1);
end

StartPixelLong = PixelsPerLong*(abs(TileMinLong - FieldMinLong));
StartPixelLong = round(abs(StartPixelLong));


EndPixelLong = PixelsPerLong*abs(TileMinLong - FieldMaxLong);
EndPixelLong = round(abs(EndPixelLong))

if StartPixelLong > EndPixelLong
        temp = EndPixelLong;
        EndPixelLong = StartPixelLong;
StartPixelLong = temp;
end
if StartPixelLong > 100
        StartPixelLong = StartPixelLong - 100;
else
        StartPixelLong = 0;
end
if EndPixelLong < sizeB4(1) - 100
        EndPixelLong = EndPixelLong+100;
else
        EndPixelLong = sizeB4(1);
end


LatLength = EndPixelLat - StartPixelLat
LongLength = EndPixelLong - StartPixelLong

if StartPixelLat > sizeB4(1) | EndPixelLat > sizeB4(1) | StartPixelLong > sizeB4(1) | EndPixelLong > sizeB4(1)
        result_status2 = 'failed due to unbound start end'
        result_status = strcat(UID,"failed0")
else


clip = [StartPixelLat EndPixelLat StartPixelLong EndPixelLong];

       % B3 = B3(clip(1):clip(2),clip(3):clip(4));
try
B4 = B4(clip(1):clip(2),clip(3):clip(4));
        B8 = B8(clip(1):clip(2),clip(3):clip(4));
       % TCI = TCI(clip(1):clip(2),clip(3):clip(4),:);
catch
result_status = strcat(UID,"failed1")
                result_status2 = 'Too much black in image'
return
end
        B4 = single(B4);
        B8 = single(B8);
,95);


        Numerator = (B4-B8);
        Denominator = (B4+B8);
        NDVI = Numerator./Denominator;
%	NDVI = NDVI/(max(max(NDVI)));
SizeNewB4 = size(B4);
        IsNaNMat = isnan(NDVI);
        IsNaNCount =sum(sum(IsNaNMat))
        if(IsNaNCount > SizeNewB4(1)*SizeNewB4(2)*0.5)
                result_status = strcat(UID,"failed1")
                result_status2 = 'Too much black in image'
        else
%NDVI_new = imcomplement(NDVI);
NDVI_new = NDVI;
colormap(c_map)

                %axis square tight, axis off
                imagename = strcat(SensingDate,UID);
                imagename = strcat(imagename,"NDWI.png");
                %saveas(1,imagename,'png')


NN =(1/ max(max(NDVI_new)))*NDVI_new;
NN = imcomplement(NN);
imagesc(NN, [0 1]);

axis square tight
axis off
               
                saveas(1,imagename,'png')

i_name=imagename;
aa = imread(i_name);

%aa = single(aa);
size_aa = size(aa)
sizeN = size(NDVI)
startaaheight=27;
endaaheight = 900-25;
startaawidth=182;
endaawidth=1200-188;
%if sizeN(1) > size_aa(1)
	aa = aa(startaaheight:endaaheight,startaawidth:endaawidth,:);
   
    aa = imresize(aa,[sizeN(1) sizeN(2)]);
    size_aa = size(aa)
%end
imwrite(aa,i_name);
                
result_status  = strcat(UID,"successful");
end

end

end
