Пример #1
0
    function db_GetValues_OneSeriesWML2($siteID, $siteCode, $state, $variableCode, $variableID, $methodID, $sourceID, $qcID, $beginTime, $endTime)
    {
        $ci =& get_instance();
        $beginDT = date("Y-m-d", strtotime($beginTime));
        $endDT = date("Y-m-d", strtotime($endTime));
        //generate the URL:
        if (!isset($beginTime) || $beginTime == "" || !isset($endTime) || $endTime == "") {
            $beginDT = 'POR_BEGIN';
            $endDT = 'POR_END';
        }
        $base_url = "http://www.wcc.nrcs.usda.gov/reportGenerator/view_csv/customSingleStationReport/daily/";
        $url = $base_url . $siteCode . ":" . $state . ':SNTL%7Cid=%22%22%7Cname/' . $beginDT . ',' . $endDT . '/' . $variableCode . '::value';
        $retVal = '<om:result><wml2:MeasurementTimeseries gml:id="HIS.TS.1">';
        $beginDateTimeOP = date_create_from_format('Y-m-d H:i:s', $beginTime)->format('c');
        $endDateTimeOP = date_create_from_format('Y-m-d H:i:s', $endTime)->format('c');
        $retVal .= '<wml2:metadata>
					<wml2:MeasurementTimeseriesMetadata>
					  <wml2:temporalExtent>
						  <gml:TimePeriod gml:id="time-period.1">
							  <gml:beginPosition>' . $beginDateTimeOP . '</gml:beginPosition>
							  <gml:endPosition>' . $endDateTimeOP . '</gml:endPosition>
						  </gml:TimePeriod>
					  </wml2:temporalExtent>
				  </wml2:MeasurementTimeseriesMetadata>
				  </wml2:metadata>';
        $methodInfo = db_GetMethodByIDWML2($methodID);
        $variableInfo = db_GetVariableByCodeWML2($variableID, $methodID, 1);
        //Genertaing ISO Time period from HIS Parameters
        $timeInterval = "P";
        if ($variableInfo['TimeUnitsType'] == "Time") {
            $timeInterval .= "T";
        }
        $unitISO = strtoupper($variableInfo['TimeUnitsAbbreviation']);
        $timeInterval .= $variableInfo['TimeSupport'] . $unitISO[0];
        //Define Default Point Metadata
        $retVal .= '<wml2:defaultPointMetadata>
						<wml2:DefaultTVPMeasurementMetadata>
						<wml2:quality xlink:href="http://www.opengis.net/def/waterml/2.0/quality/good" xlink:title="not censored"/>' . '<wml2:qualifier>
							<swe:Text definition="#methodCode--' . $methodID . '">
								<swe:value>
								' . $methodInfo['MethodDescription'] . '
								</swe:value>
							</swe:Text>
						</wml2:qualifier>' . db_GetQualityControlLevelByIDWML2($qcID) . '<wml2:source xlink:href="#' . $sourceID . '"/>' . '<wml2:uom code="' . $variableInfo['VariableUnitsAbbreviation'] . '"/>
						<wml2:interpolationType xlink:href="http://his.cuahsi.org/cv/dataType/' . $variableInfo['DataType'] . '" xlink:title="' . $variableInfo['DataType'] . '"/>
						<wml2:aggregationDuration>' . $timeInterval . '</wml2:aggregationDuration>' . '</wml2:DefaultTVPMeasurementMetadata>
					</wml2:defaultPointMetadata>';
        //Adding censor code data to dictionary
        $dictEntry = '
		<gml:dictionaryEntry>
		<gml:Definition gml:id="censorCode-nc">
		<gml:identifier codeSpace="http://hiscentral.cuahsi.org/wml/censored">nc</gml:identifier>
		<gml:name codeSpace="http://hiscentral.cuahsi.org/wml/censored">not censored</gml:name>
		</gml:Definition>
		</gml:dictionaryEntry>';
        addToLocalDictionaryWML2("censorCode", $dictEntry);
        //Printing Values
        $txt_file = file_get_contents($url);
        $rows = explode("\n", $txt_file);
        array_shift($rows);
        $nr = 0;
        $retVal = '<om:result><wml2:MeasurementTimeseries>';
        $nr = 0;
        foreach ($rows as $row => $data) {
            $nr++;
            if ($nr > 7) {
                $row_data = explode(',', $data);
                if (count($row_data) > 1) {
                    $dat = $row_data[0];
                    $dateOP = date_create_from_format('Y-m-d', $dat)->setTimezone(new DateTimeZone('UTC'))->format('c');
                    $retVal .= '<wml2:point>
							<wml2:MeasurementTVP>
								<wml2:time>' . $dateOP . '</wml2:time>
								<wml2:value>' . to_metric($row_data[1], $variableCode) . '</wml2:value>
						</wml2:MeasurementTVP>
				    </wml2:point>
				    ';
                }
            }
        }
        $retVal .= '</wml2:MeasurementTimeseries></om:result>';
        return $retVal;
    }
Пример #2
0
    function db_GetValues_OneSeriesWML2($siteID, $variableID, $methodID, $sourceID, $qcID, $beginTime, $endTime)
    {
        $ci =& get_instance();
        $data_values_table = get_table_name('DataValues');
        $samples_table = get_table_name('Samples');
        $ci->db->select("d.LocalDateTime, d.UTCOffset, d.DateTimeUTC, d.DataValue, s.LabSampleCode");
        $ci->db->join($samples_table . " s", "d.SampleID = s.SampleID", "LEFT");
        $ci->db->where("d.SiteID", $siteID);
        $ci->db->where("d.VariableID", $variableID);
        $ci->db->where("d.MethodID", $methodID);
        $ci->db->where("d.SourceID", $sourceID);
        $ci->db->where("d.QualityControlLevelID", $qcID);
        $ci->db->order_by("d.LocalDateTime");
        if (isset($beginTime) && $beginTime != "" && (isset($endTime) && $endTime != "")) {
            $ci->db->where("d.LocalDateTime >=", $beginTime);
            $ci->db->where("d.LocalDateTime <=", $endTime);
        }
        $result = $ci->db->get($data_values_table . " d");
        if (!$result) {
            die("<p>Error in executing the SQL query " . $ci->db->last_query() . ": " . $ci->db->_error_message() . "</p>");
        }
        $retVal = '<om:result><wml2:MeasurementTimeseries gml:id="HIS.TS.1">';
        $beginDateTimeOP = date_create_from_format('Y-m-d H:i:s', $beginTime)->format('c');
        $endDateTimeOP = date_create_from_format('Y-m-d H:i:s', $endTime)->format('c');
        $retVal .= '<wml2:metadata>
					<wml2:MeasurementTimeseriesMetadata>
					  <wml2:temporalExtent>
						  <gml:TimePeriod gml:id="time-period.1">
							  <gml:beginPosition>' . $beginDateTimeOP . '</gml:beginPosition>
							  <gml:endPosition>' . $endDateTimeOP . '</gml:endPosition>
						  </gml:TimePeriod>
					  </wml2:temporalExtent>
				  </wml2:MeasurementTimeseriesMetadata>
				  </wml2:metadata>';
        $methodInfo = db_GetMethodByIDWML2($methodID);
        $variableInfo = db_GetVariableByCodeWML2($variableID, $methodID, 1);
        //Genertaing ISO Time period from HIS Parameters
        $timeInterval = "P";
        if ($variableInfo['TimeUnitsType'] == "Time") {
            $timeInterval .= "T";
        }
        $unitISO = strtoupper($variableInfo['TimeUnitsAbbreviation']);
        $timeInterval .= $variableInfo['TimeSupport'] . $unitISO[0];
        //Define Default Point Metadata
        $retVal .= '<wml2:defaultPointMetadata>
						<wml2:DefaultTVPMeasurementMetadata>
						<wml2:quality xlink:href="http://www.opengis.net/def/waterml/2.0/quality/good" xlink:title="not censored"/>' . '<wml2:qualifier>
							<swe:Text definition="#methodCode--' . $methodID . '">
								<swe:value>
								' . $methodInfo['MethodDescription'] . '
								</swe:value>
							</swe:Text>
						</wml2:qualifier>' . db_GetQualityControlLevelByIDWML2($qcID) . '<wml2:source xlink:href="#' . $sourceID . '"/>' . '<wml2:uom code="' . $variableInfo['VariableUnitsAbbreviation'] . '"/>
						<wml2:interpolationType xlink:href="http://his.cuahsi.org/cv/dataType/' . $variableInfo['DataType'] . '" xlink:title="' . $variableInfo['DataType'] . '"/>
						<wml2:aggregationDuration>' . $timeInterval . '</wml2:aggregationDuration>' . '</wml2:DefaultTVPMeasurementMetadata>
					</wml2:defaultPointMetadata>';
        //Adding censor code data to dictionary
        $dictEntry = '
		<gml:dictionaryEntry>
		<gml:Definition gml:id="censorCode-nc">
		<gml:identifier codeSpace="http://hiscentral.cuahsi.org/wml/censored">nc</gml:identifier>
		<gml:name codeSpace="http://hiscentral.cuahsi.org/wml/censored">not censored</gml:name>
		</gml:Definition>
		</gml:dictionaryEntry>';
        addToLocalDictionaryWML2("censorCode", $dictEntry);
        //Printing Values
        foreach ($result->result_array() as $row) {
            $dateOP = date_create_from_format('Y-m-d H:i:s', $row['DateTimeUTC'])->setTimezone(new DateTimeZone('UTC'))->format('c');
            $retVal .= '<wml2:point>
							<wml2:MeasurementTVP>
								<wml2:time>' . $dateOP . '</wml2:time>
								<wml2:value>' . $row['DataValue'] . '</wml2:value>
						</wml2:MeasurementTVP>
				</wml2:point>
				';
        }
        $retVal .= '</wml2:MeasurementTimeseries></om:result>';
        return $retVal;
    }