Hmmm... hadn't seen that one before.
Lines 600-602 are if (isset($FCSTJSON['geometry']) and
strlen($FCSTJSON['geometry']) > 6 and
strpos($FCSTJSON['geometry'], 'POINT') !== false) { // got a point forecast
Your cache file for that forecast shows {
"@context": {
"wx": "https://api.weather.gov/ontology#",
"geo": "http://www.opengis.net/ont/geosparql#",
"unit": "http://codes.wmo.int/common/unit/",
"@vocab": "https://api.weather.gov/ontology#"
},
"geometry": {},
"updated": "2018-05-25T03:30:17+00:00",
"units": "us",
"forecastGenerator": "BaselineForecastGenerator",
"generatedAt": "2018-05-25T04:57:46+00:00",
"updateTime": "2018-05-25T03:30:17+00:00",
"validTimes": "2018-05-24T21:00:00+00:00/P7DT17H",
"elevation": {
"value": 9.1440000000000001,
"unitCode": "unit:m"
},
"periods": [
so the "geometry" entry is an empty array. I also note that your point-forecast is not currently available, and you're getting a zone forecast instead. I'd never seen an empty "geometry" entry in the zone forecast.. A normal one looks like "geometry": "GEOMETRYCOLLECTION (POINT (-93.337348681493 45.019380528644), POLYGON ((-93.352280551998 45.030196194185, -93.352647981926 45.008824953451, -93.322420181345 45.008562878332, -93.32204601069 45.029934099997, -93.352280551998 45.030196194185)))",
Maybe it's a new wrinkle to have an empty "geometry" be an empty array...
Try changing those three lines to be if (isset($FCSTJSON['geometry']) and !is_array($FCSTJSON['geometry']) and
strlen($FCSTJSON['geometry']) > 6 and
strpos($FCSTJSON['geometry'], 'POINT') !== false) { // got a point forecast
since we are really expecting a string from the JSON.
Let me know how that works out...