%let name=jordan_lake_marina_flooding; /* Set your current-working-directory (to read/write files), if you need to ... %let rc=%sysfunc(dlgcdir('c:\someplace\public_html')); */ filename odsout '.'; %let udate1=1983-01-01; /* %let udate2=2019-03-19; */ data foo; date=today(); run; proc sql noprint; select unique date format=yymmdd10. into :udate2 separated by '' from foo; quit; run; /* https://nwis.waterdata.usgs.gov/nc/nwis/uv/?cb_00065=on&format=rdb&site_no=02098197&period=&begin_date=1983-01-01&end_date=2019-03-13 */ /* filename temp_url url "https://nwis.waterdata.usgs.gov/nc/nwis/uv/?cb_00065=on&format=rdb&site_no=02098197&period=&begin_date=&udate1&end_date=&udate2"; */ filename temp_url "jordan_lake_marina_flooding.txt"; /* */ data my_data (drop = whole_line); infile temp_url lrecl=100 pad; input whole_line $ 1-100; if scan(whole_line,1,'09'x)='USGS' then do; agency_cd=scan(whole_line,1,'09'x); site_no=scan(whole_line,2,'09'x); format datetime datetime.; datetime=input(scan(whole_line,3,'09'x),anydtdtm.); tz_cd=scan(whole_line,4,'09'x); water_level=.; water_level=scan(whole_line,5,'09'x); output; end; run; data my_data; set my_data (where=(datetime>='01jan2010:00:00:00'dt)); bottom=200; run; proc sql noprint; select max(datetime) format=datetime20. into :max separated by ' ' from my_data; quit; run; /* Since ods graphics title2 does not support url links yet, annotate the title2 (annotated text supports url links). */ data anno_title2; length label $100 anchor x1space y1space function $50 textcolor $12; function='text'; x1=50; y1=90; x1space='wallpercent'; y1space='graphpercent'; anchor='center'; textcolor="gray33"; textsize=11; textweight='normal'; width=100; widthunit='percent'; url="https://nwis.waterdata.usgs.gov/nc/nwis/uv/?cb_00065=on&format=rdb&site_no=02098197&period=&begin_date=&udate1&end_date=&udate2"; label="Data source: nwis.waterdata.usgs.gov (&max snapshot)"; run; ODS LISTING CLOSE; ODS HTML path=odsout body="&name..htm" (title="Jordan Lake Marina Flooding") style=htmlblue; ods graphics / imagemap tipmax=200 imagefmt=png imagename="&name" antialias=off width=1000px height=500px noborder; title1 c=gray33 h=15pt "Jordan Lake Water Level (ft above sea level) @ Crosswinds Boating Center"; title2 h=13pt c=white ' '; proc sgplot data=my_data noautolegend noborder sganno=anno_title2; band x=datetime lower=bottom upper=water_level / fillattrs=(color=cxddf3ff) transparency=.3; /* use scatter instead of series, since there are so many points */ scatter x=datetime y=water_level / y2axis tip=none markerattrs=(symbol=circlefilled size=1px color=cx1C86EE); yaxis values=(200 to 235 by 5) display=(nolabel noticks) valueattrs=(color=gray55 size=10pt) offsetmin=0 offsetmax=0 grid gridattrs=(pattern=dot color=gray77) ; y2axis values=(200 to 235 by 5) display=(nolabel noticks) valueattrs=(color=gray55 size=10pt) offsetmin=0 offsetmax=0; xaxis display=(nolabel noticks noline) offsetmin=0 offsetmax=0 valueattrs=(color=gray55 size=11pt) grid gridattrs=(pattern=dot color=gray77) min='01jan2010:00:00:00'dt max='01jan2020:00:00:00'dt interval=year ; refline 216 / axis=y lineattrs=(color=red pattern=solid) labelloc=inside labelpos=max splitchar=' ' label="Normal Level" labelattrs=(color=red); refline 229 / axis=y lineattrs=(color=red pattern=solid) labelloc=inside labelpos=max splitchar=' ' label="Marina Flooding" labelattrs=(color=red); refline 200 / axis=y lineattrs=(color=red pattern=solid) labelloc=inside labelpos=max splitchar=' ' label="Lake Bottom" labelattrs=(color=red); run; quit; ODS HTML CLOSE; ODS LISTING;