示例#1
0
            public SiteInfoResponseType GetSitesInBox(
                float west, float south, float east, float north,
                Boolean IncludeSeries
                )
            {
                Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();

                box queryBox = new box(west, south, east, north);

                queryLog2.LogStart(CustomLogging.Methods.GetSitesInBoxObject, queryBox.ToString(),
                                   appContext.Request.UserHostName);

                SiteInfoResponseType resp = new SiteInfoResponseType();

                resp.site = WebServiceUtils.GetSitesByBox(queryBox, IncludeSeries);

                //set query info
                resp.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSitesInBox");
                NoteType note = CuahsiBuilder.createNote("box");

                resp.queryInfo.note = CuahsiBuilder.addNote(null, note);

                queryLog2.LogEnd(CustomLogging.Methods.GetSitesInBoxObject,
                                 queryBox.ToString(),
                                 timer.ElapsedMilliseconds.ToString(),
                                 resp.site.Length.ToString(),
                                 appContext.Request.UserHostName);
                return(resp);
            }
示例#2
0
            public SiteInfoResponseType GetSites(string[] locationParameters, Boolean includeSeries)
            {
                locationParameters = WSUtils.removeEmptyStrings(locationParameters);

                List <locationParam> siteCodes = new List <locationParam>(locationParameters.Length);

                foreach (String s in locationParameters)
                {
                    locationParam lp = new locationParam(s);
                    siteCodes.Add(lp);
                }
                SiteInfoType[]       sites  = ODSiteInfo.GetSitesByLocationParameters(siteCodes.ToArray());
                SiteInfoResponseType result = CreateSitesResponse(sites, includeSeries);

                if (locationParameters.Length == 0)
                {
                    result.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSites");
                    NoteType note = CuahsiBuilder.createNote("ALL Sites(empty request)");
                    result.queryInfo.note = CuahsiBuilder.addNote(null, note);
                }
                else
                {
                    result.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSites", locationParameters, null, null, null, null);
                }
                return(result);
            }
示例#3
0
            /// <summary>
            /// createSiteInfoResponse populates a SiteInfoResponseType.
            /// It is used the webmethod getSiteInfo.
            /// designed for multiple site codes
            /// This method will be slow if the information has never been cached.
            /// </summary>
            /// <param name="sites"></param>
            /// <param name="includeSeries"></param>
            private SiteInfoResponseType CreateSitesResponse(IEnumerable <SiteInfoType> sites, Boolean includeSeries)
            {
                /* for each site code, add a siteInfo type with a period of record
                 * // for each site
                 *     createSitInfoType
                 *     add to response
                 *     createPeriodOfRecord
                 *     add to response
                 * return response
                 * */
                SiteInfoResponseType response;

                response = CuahsiBuilder.CreateASetOfSiteResponses(1, 1);
                List <SiteInfoResponseTypeSite> sitesList =
                    new List <SiteInfoResponseTypeSite>();

                foreach (SiteInfoType site in sites)
                {
                    sitesList.Add(GetSiteInfoOD.CreateSite(site, includeSeries));
                }
                if (sitesList.Count > 0)
                {
                    response.site = sitesList.ToArray();
                }
                else
                {
                    throw new WaterOneFlowException("No Sites found in specified region: ");
                }

                return(response);
            }
        /// <summary>
        /// createSiteInfoResponse populates a SiteInfoResponseType.
        /// It is used the webmethod getSiteInfo.
        /// designed for multiple site codes
        /// This method will be slow if the information has never been cached.
        /// </summary>
        /// <param name="LocationParams"></param>
        private SiteInfoResponseType CreateSitesResponse(locationParam[] LocationParams)
        {
            /* for each site code, add a siteInfo type with a period of record
             * // for each site
             *     createSitInfoType
             *     add to response
             *     createPeriodOfRecord
             *     add to response
             * return response
             * */
            SiteInfoResponseType response;


            SiteInfoType[] sites = ODSiteInfo.GetSitesByLocationParameters(LocationParams);
            if (sites.Length == 0)
            {
                throw new WaterOneFlowException("No Sites found");
            }
            response = CuahsiBuilder.CreateASetOfSiteResponses(sites.Length, 1);
            for (int i = 0; i < sites.Length; i++)
            {
                response.site[i].siteInfo = sites[i];
                String aSiteID = response.site[i].siteInfo.siteCode[0].siteID;

                // no period of record
            }

            return(response);
        }
示例#5
0
            public SiteInfoResponseType GetSites(string[] locationIDs)
            {
                Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();

                queryLog2.LogStart(CustomLogging.Methods.GetSites, locationIDs.ToString(),
                                   appContext.Request.UserHostName);

                SiteInfoResponseType result = new SiteInfoResponseType();

                result.site = WebServiceUtils.GetSitesFromDb();

                //set query info
                result.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSites");
                NoteType note = CuahsiBuilder.createNote("ALL Sites(empty request)");

                result.queryInfo.note = CuahsiBuilder.addNote(null, note);

                queryLog2.LogEnd(CustomLogging.Methods.GetSites,
                                 locationIDs.ToString(),
                                 timer.ElapsedMilliseconds.ToString(),
                                 result.site.Length.ToString(),
                                 appContext.Request.UserHostName);

                return(result);
            }
        private static seriesCatalogType createSeriesCatalog(
            seriesCatalogDataSet ds,
            VariablesDataset vds)
        {
            if (ds.SeriesCatalog.Count > 0)
            {
                Boolean useOD;

                String siteServiceURL;
                String siteServiceName;
                try
                {
                    useOD = Boolean.Parse(ConfigurationManager.AppSettings["UseODForValues"]);

                    if (!useOD)
                    {
                        siteServiceURL  = ConfigurationManager.AppSettings["externalGetValuesService"];
                        siteServiceName = ConfigurationManager.AppSettings["externalGetValuesName"];
                    }
                    else
                    {
                        siteServiceURL  = "http://localhost/";
                        siteServiceName = "OD Web Services";
                    }
                }
                catch
                {
                    useOD = true; // should be caught earlier


                    siteServiceURL  = "http://locahost/";
                    siteServiceName = "Fix UseODForValues, externalGetValuesService, externalGetValuesName";
                }
                seriesCatalogType catalog = CuahsiBuilder.CreateSeriesCatalog(
                    ds.SeriesCatalog.Count,
                    siteServiceName, // menu name (aka OD name
                    siteServiceURL   // web service location
                    );
                List <seriesCatalogTypeSeries> seriesRecords = new List <seriesCatalogTypeSeries>();
                foreach (seriesCatalogDataSet.SeriesCatalogRow row in ds.SeriesCatalog.Rows)
                {
                    seriesCatalogTypeSeries aRecord = row2SeriesCatalogElement(
                        row, ds, vds);

                    seriesRecords.Add(aRecord);
                }
                catalog.series = seriesRecords.ToArray();
                return(catalog);
            }
            else
            {
                seriesCatalogType catalog = CuahsiBuilder.CreateSeriesCatalog(0,
                                                                              null,        // menu name (aka OD name
                                                                              String.Empty // web service location
                                                                              );
                return(catalog);
            }
        }
        private SiteInfoResponseType createSiteInfoResponse(locationParam[] LocationParameters)
        {
            /* for each site code, add a siteInfo type with a period of record
             * for each site
             *     createSitInfoType
             *     add to response
             *     createPeriodOfRecord
             *     add to response
             * return response
             * */
            SiteInfoResponseType response = CuahsiBuilder.CreateASetOfSiteResponses(LocationParameters.Length, 1);

            for (int i = 0; i < LocationParameters.Length; i++)
            {
                if (LocationParameters[i] == null)
                {
                    continue;
                }

                response.site[i].siteInfo = getSiteInfoType(LocationParameters[i]);
                if (response.site[i].siteInfo != null)
                {
                    String aSiteID = null;

                    Nullable <int> siteIDint = null;
                    try
                    {
                        aSiteID = response.site[i].siteInfo.siteCode[0].siteID;
                    }
                    catch (NullReferenceException e)
                    {
                        String error = " no site code returned for sitecode" + LocationParameters[i];
                        log.Warn(error);
                        response.site[i].seriesCatalog = CreateSeriesCatalogRecord(LocationParameters[i], null);
                    }

                    try
                    {
                        siteIDint = Convert.ToInt32(aSiteID);
                        response.site[i].seriesCatalog = CreateSeriesCatalogRecord(LocationParameters[i], siteIDint);
                    }
                    catch (InvalidCastException e)
                    {
                        String error = " siteID was not an integer" + LocationParameters[i];
                        log.Warn(error);
                        response.site[i].seriesCatalog = CreateSeriesCatalogRecord(LocationParameters[i], null);
                    }
                }
                else
                {
                    String error = " no site code returned for sitecode" + LocationParameters[i];
                    log.Warn(error);
                }
            }

            return(response);
        }
            public override object GetTimeSeries(
                locationParam lp,
                VariableParam vp,
                Nullable <W3CDateTime> startDate,
                Nullable <W3CDateTime> endDate)
            {
                if (lp.isGeometry)
                {
                    throw new WaterOneFlowException("Geometry not supported ");
                }

                TimeSeriesResponseType result = null;

                string[] StationsList = new string[] { lp.SiteCode };

                result = CuahsiBuilder.CreateTimeSeriesObject();

                result.queryInfo.criteria.locationParam = lp.ToString();
                result.queryInfo.criteria.variableParam = vp.ToString();

                result.timeSeries.sourceInfo = DataInfoService.GetSite(lp);

                // not fully correct, but just choose the first one.
                VariableInfoType[] vits = DataInfoService.GetVariableInfoObject(vp);
                result.timeSeries.variable = vits[0];
                string aURL = InstantaneousData(startDate, endDate,
                                                new string[] { vp.Code }, StationsList, USGSCommon.option2AgencyCode(lp));

                try
                {
                    result.timeSeries.values =
                        CreateWQTimeSeriesObject(vp, aURL);
                }
                catch (WaterOneFlowException e)
                {
                    throw;
                }
                catch (WaterOneFlowSourceException e)
                {
                    throw;
                }
                catch (Exception e)
                {
                    log.Error(e.Message + e.StackTrace);
                    throw new WaterOneFlowException("An External resource failed.", e);
                }

                List <NoteType> notes   = new List <NoteType>();
                NoteType        urlNote = new NoteType();

                urlNote.title = "USGS URL";
                urlNote.Value = aURL;
                notes.Add(urlNote);
                result.queryInfo.note = notes.ToArray();

                return(result);
            }
示例#9
0
            public SiteInfoResponseType GetSiteInfoResponse(locationParam[] LocationParameters, Boolean IncludeSeries)
            {
                SiteInfoResponseType result = createSiteInfoResponse(LocationParameters, IncludeSeries);

                string[] lps = Array.ConvertAll <locationParam, string>(LocationParameters, Convert.ToString);
                //result.queryInfo = CreateQueryInfo(lps);
                result.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSiteInfo", lps, null, null, null, null);

                return(result);
            }
示例#10
0
            public SiteInfoResponseType GetSiteInfo(string locationParameter)
            {
                string siteId = locationParameter.Substring(locationParameter.LastIndexOf(":") + 1);

                SiteInfoResponseType resp = new SiteInfoResponseType();

                resp.site    = new SiteInfoResponseTypeSite[1];
                resp.site[0] = new SiteInfoResponseTypeSite();
                resp.site[0] = WebServiceUtils.GetSiteFromDb(siteId, true);

                resp.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSiteInfo", new string[] { locationParameter }, null, null, null, null);

                return(resp);
            }
示例#11
0
            private static void AddQueryInfo(string StartDate, string EndDate, string Variable, string SiteNumber, TimeSeriesResponseType response)
            {
                response.queryInfo          = new QueryInfoType();
                response.queryInfo.criteria = new QueryInfoTypeCriteria();

                response.queryInfo.creationTime           = DateTime.UtcNow;
                response.queryInfo.creationTimeSpecified  = true;
                response.queryInfo.criteria.locationParam = SiteNumber;
                response.queryInfo.criteria.variableParam = Variable;
                response.queryInfo.criteria.timeParam     = CuahsiBuilder.createQueryInfoTimeCriteria(StartDate, EndDate);
                NoteType sourceNote = CuahsiBuilder.createNote("OD Web Service");

                response.queryInfo.note = CuahsiBuilder.addNote(response.queryInfo.note,
                                                                sourceNote);
            }
示例#12
0
            public TimeSeriesResponseType GetValuesForSiteVariable(string SiteNumber, string StartDate, string EndDate)
            {
                TimeSeriesResponseType response = new TimeSeriesResponseType();

                response.timeSeries = new List <TimeSeriesType>(
                    GetTimesSeriesTypeForSiteVariable(SiteNumber, StartDate, EndDate)).ToArray();


                response.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetValuesForASite", new string[] { SiteNumber },
                                                                       null, null, StartDate, EndDate);
                CuahsiBuilder.addNote(response.queryInfo.note,
                                      CuahsiBuilder.createNote("AllValuesForASite"));

                return(response);
            }
示例#13
0
            public SiteInfoResponseType GetSitesByBox(box queryBox, Boolean includeSeries)
            {
                IEnumerable <SiteInfoType> sites  = ODSiteInfo.GetSitesByBox(queryBox);
                SiteInfoResponseType       result = CreateSitesResponse(sites, includeSeries);

                // result.queryInfo = CreateQueryInfo(new string[] { queryBox.ToString() });
                result.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSitesByBox");
                CuahsiBuilder.AddQueryInfoParameter(result.queryInfo, "north", queryBox.North.ToString());
                CuahsiBuilder.AddQueryInfoParameter(result.queryInfo, "south", queryBox.South.ToString());
                CuahsiBuilder.AddQueryInfoParameter(result.queryInfo, "east", queryBox.East.ToString());
                CuahsiBuilder.AddQueryInfoParameter(result.queryInfo, "west", queryBox.West.ToString());
                CuahsiBuilder.AddQueryInfoParameter(result.queryInfo, "includeSeries", includeSeries.ToString());

                return(result);
            }
示例#14
0
            public TimeSeriesResponseType getValues(string SiteNumber, string Variable, string StartDate, string EndDate)
            {
                // convert dates
                // get site info
                // get site ID
                // return value dataset

                TimeSeriesResponseType response;
                W3CDateTime?           BeginDateTime;
                W3CDateTime?           EndDateTime;
                int?variableId = null;
                int?siteID;

                VariableInfoType varInfoType = null;
                SiteInfoType     siteType    = null;

                BeginDateTime = GetBeginDateTime(StartDate);

                EndDateTime = GetEndDateTime(EndDate);

                VariableParam vp = GetVariableParameter(Variable, ref variableId, ref varInfoType);
                locationParam sq = GetLocationParameter(SiteNumber);

                siteInfoDataSet sitDs = ODSiteInfo.GetSiteInfoDataSet(sq);

                response = CuahsiBuilder.CreateTimeSeriesObjectSingleValue(1);

                if (sitDs != null && sitDs.sites.Count > 0)
                {
                    siteID = sitDs.sites[0].SiteID;
                    ValuesDataSet valuesDs = getValuesDataset(siteID, variableId, BeginDateTime, EndDateTime);

                    response.timeSeries[0].values = getValues(valuesDs, vp, variableId);

                    // above is the values, add the site, and variables
                    response.timeSeries[0].variable = varInfoType;

                    response.timeSeries[0].sourceInfo = ODSiteInfo.row2SiteInfoElement(sitDs.sites[0], sitDs);
                }

                // AddQueryInfo(StartDate, EndDate, Variable, SiteNumber, response);

                response.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetValues",
                                                                       new string[] { SiteNumber }, null, new string[] { Variable }, StartDate, EndDate);

                return(response);
            }
        public VariablesResponseType GetVariableInfo(string Variable)
        {
            VariableInfoType[] variableList;
            if (String.IsNullOrEmpty(Variable))
            {
                variableList = ODvariables.getVariables(new VariableParam[0], Variables);
            }
            else
            {
                VariableParam vp;
                vp           = new VariableParam(Variable);
                variableList = ODvariables.getVariable(vp, Variables);
            }

            if (variableList == null)
            {
                throw new WaterOneFlowException("Variable Not Found");
            }
            VariablesResponseType Response = new VariablesResponseType();

            Response.variables = variableList;

            if (Response.queryInfo == null)
            {
                Response.queryInfo          = new QueryInfoType();
                Response.queryInfo.criteria = new QueryInfoTypeCriteria();
            }
            Response.queryInfo.creationTime          = DateTime.UtcNow;
            Response.queryInfo.creationTimeSpecified = true;
            if (String.IsNullOrEmpty(Variable))
            {
                Response.queryInfo.criteria.variableParam = "NULL (Request for all variables";
            }
            else
            {
                Response.queryInfo.criteria.variableParam = Variable;
            }

            NoteType sourceNote = CuahsiBuilder.createNote("OD Web Service");

            Response.queryInfo.note = CuahsiBuilder.addNote(Response.queryInfo.note,
                                                            sourceNote);
            return(Response);
        }
示例#16
0
        public static TimeSeriesResponseType getValues(ValuesDataSet ValuesDs, VariableParam variable)
        {
            TimeSeriesResponseType response = CuahsiBuilder.CreateTimeSeriesObjectSingleValue();

            // get siteInfo

            // get variable Info

            // get Values
            // reformats values dataset into a TimeSeriesResponseType
            List <ValueSingleVariable> valueList = ODValues.dataset2ValuesList(ValuesDs, variable);

            response.timeSeries.values.value = valueList.ToArray();
            response.timeSeries.values.count = valueList.Count.ToString();

            // add qualifiers
            List <qualifier> qualifers = ODValues.datasetQualifiers(ValuesDs);

            if (qualifers != null && qualifers.Count > 0)
            {
                response.timeSeries.values.qualifier = qualifers.ToArray();
            }
            // add methods
            List <MethodType> methods = ODValues.datasetMethods(ValuesDs);

            if (methods != null && methods.Count > 0)
            {
                response.timeSeries.values.method = methods.ToArray();
            }
            List <SourceType> sources = ODValues.datasetSources(ValuesDs);

            if (sources != null && sources.Count > 0)
            {
                response.timeSeries.values.source = sources.ToArray();
            }
            List <OffsetType> offsets = ODValues.datasetOffsetTypes(ValuesDs);

            if (offsets != null && offsets.Count > 0)
            {
                response.timeSeries.values.offset = offsets.ToArray();
            }
            return(response);
        }
        public static units getUnitsElement(string unitsID, unitsDataset ds)
        {
            DataRow[] dr = ds.Tables["units"].Select("unitID = " + unitsID);

            if (dr.Length > 0)
            {
                unitsDataset.UnitsRow row = (unitsDataset.UnitsRow)dr[0];
                string uID        = row.UnitsID.ToString();
                string unitType   = String.IsNullOrEmpty(row.UnitsType) ? null : row.UnitsType;
                string unitAbbrev = String.IsNullOrEmpty(row.UnitsAbbreviation) ? null : row.UnitsAbbreviation;
                string unitName   = String.IsNullOrEmpty(row.UnitsName) ? null : row.UnitsName;

                units u = CuahsiBuilder.CreateUnitsElement(null, uID, unitAbbrev, unitName);
                return(u);
            }
            else
            {
                return(null);
            }
        }
            public VariablesResponseType GetVariableInfo(string Variable)
            {
                VariableInfoType[] variableList;
                if (String.IsNullOrEmpty(Variable))
                {
                    variableList = ODvariables.getVariables(new VariableParam[0], Variables);
                }
                else
                {
                    VariableParam vp;
                    vp           = new VariableParam(Variable);
                    variableList = ODvariables.getVariable(vp, Variables);
                }

                if (variableList == null)
                {
                    throw new WaterOneFlowException("Variable Not Found");
                }
                VariablesResponseType Response = new VariablesResponseType();

                Response.variables = variableList;

                Response.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetVariableInfo", null, null,
                                                                       new string[] { Variable }, null, null);

                if (String.IsNullOrEmpty(Variable))
                {
                    CuahsiBuilder.addNote(Response.queryInfo.note,
                                          CuahsiBuilder.createNote("(Request for all variables"));
                }
                else
                {
                    Response.queryInfo.criteria.variableParam = Variable;
                }
                NoteType sourceNote = CuahsiBuilder.createNote("OD Web Service");

                Response.queryInfo.note = CuahsiBuilder.addNote(Response.queryInfo.note,
                                                                sourceNote);

                return(Response);
            }
示例#19
0
            public static UnitsType getUnitsElement(int unitsID, VariablesDataset ds)
            {
                DataRow[] dr = ds.Tables["units"].Select("unitsID = " + unitsID);

                if (dr.Length > 0)
                {
                    VariablesDataset.UnitsRow row = (VariablesDataset.UnitsRow)dr[0];
                    string uID        = row.UnitsID.ToString();
                    string unitType   = row.UnitsType;
                    string unitAbbrev = row.UnitsAbbreviation;
                    string unitName   = row.UnitsName;

                    UnitsType u = CuahsiBuilder.CreateUnitsElement(unitType, uID, unitAbbrev, unitName);

                    return(u);
                }
                else
                {
                    return(null);
                }
            }
示例#20
0
            /// <summary>
            /// GetVariableInfo
            /// </summary>
            /// <param name="VariableParameter">full variable code in format vocabulary:VariableCode</param>
            /// <returns>the VariableInfo object</returns>
            public VariablesResponseType GetVariableInfo(String VariableParameter)
            {
                Stopwatch timer = System.Diagnostics.Stopwatch.StartNew();


                queryLog2.LogStart(CustomLogging.Methods.GetVariables, VariableParameter,
                                   appContext.Request.UserHostName);

                VariablesResponseType resp;

                if (string.IsNullOrEmpty(VariableParameter))
                {
                    resp           = new VariablesResponseType();
                    resp.variables = WebServiceUtils.GetVariablesFromDb();

                    //setup query info
                    resp.queryInfo = CuahsiBuilder.CreateQueryInfoType
                                         ("GetVariableInfo", null, null, new string[] { string.Empty }, null, null);
                    CuahsiBuilder.addNote(resp.queryInfo.note,
                                          CuahsiBuilder.createNote("(Request for all variables"));
                }
                else
                {
                    resp              = new VariablesResponseType();
                    resp.variables    = new VariableInfoType[1];
                    resp.variables[0] = WebServiceUtils.GetVariableInfoFromDb(VariableParameter);
                    //setup query info
                    resp.queryInfo = CuahsiBuilder.CreateQueryInfoType
                                         ("GetVariableInfo", null, null, new string[] { VariableParameter }, null, null);
                }

                queryLog2.LogEnd(CustomLogging.Methods.GetVariables,
                                 VariableParameter,
                                 timer.ElapsedMilliseconds.ToString(),
                                 resp.variables.Length.ToString(),
                                 appContext.Request.UserHostName);


                return(resp);
            }
示例#21
0
            private SiteInfoResponseType createSiteInfoResponse(locationParam[] LocationParameters, Boolean IncludeSeries)
            {
                // WSUtils.removeEmptyStrings(LocationParameters);

                /* for each site code, add a siteInfo type with a period of record
                 * // for each site
                 *     createSitInfoType
                 *     add to response
                 *     createPeriodOfRecord
                 *     add to response
                 * return response
                 * */
                SiteInfoResponseType response = CuahsiBuilder.CreateASetOfSiteResponses(LocationParameters.Length, 1);
                List <locationParam> lpList   = new List <locationParam>(LocationParameters);

                foreach (locationParam lp in lpList)
                {
                    if (lp == null)
                    {
                        lpList.Remove(lp);
                    }
                }
                List <SiteInfoResponseTypeSite> sitesList = new List <SiteInfoResponseTypeSite>(lpList.Count);

                foreach (SiteInfoType sit in getSiteInfoType(lpList))
                {
                    SiteInfoResponseTypeSite site = CreateSite(sit, IncludeSeries);
                    if (site != null)
                    {
                        sitesList.Add(site);
                    }
                }

                response.site = sitesList.ToArray();

                return(response);
            }
示例#22
0
            public SiteInfoResponseType GetSiteInfoResponse(locationParam locationParameter)
            {
                string Network;
                string SiteCode;

                SiteInfoResponseType result = createSiteInfoResponse(new locationParam[] { locationParameter }, true);

                // put a no result check here

                //result.queryInfo.criteria.locationParam = locationParameter.ToString(); // to string returns orignal string
                result.queryInfo = CuahsiBuilder.CreateQueryInfoType("GetSiteInfo", new string[] { locationParameter.ToString() }, null, null, null, null);
                if (result.site[0].siteInfo != null)
                {
                    result.site[0].siteInfo.siteCode[0].network =
                        System.Configuration.ConfigurationManager.AppSettings["network"];
                }
                else
                {
                    // we only have one site... so throw the exception
                    //  result.queryInfo.note = CuahsiBuilder.addNote(result.queryInfo.note,CuahsiBuilder.createNote("Site not found"));
                    throw new WaterOneFlowException("Site '" + locationParameter.ToString() + "' Not Found");
                }
                return(result);
            }
示例#23
0
        /// <summary>
        /// Method to generate a list of offset (from OD OffsetTypes table) in a ValuesDataSet
        /// This is done as a separate method since Values can could contain other VariableValue Types
        ///
        /// </summary>
        /// <param name="ds">ValuesDataSet with the values used in the timeSeries</param>
        /// <returns></returns>
        public static List <OffsetType> datasetOffsetTypes(ValuesDataSet ds)
        {
            /* generate a list
             * create a distinct DataSet
             * - new data view
             * - set filter (no nulls)
             * - use toTable with unique to get unique list
             * foreach to generate qualifiers
             * */
            string            COLUMN    = "OffsetTypeID";
            string            TABLENAME = "offsetTypes";
            List <OffsetType> list      = new List <OffsetType>();

            try
            {
                DataView view = new DataView(ds.DataValues);
                view.RowFilter = COLUMN + " is not Null";
                DataTable ids = view.ToTable(TABLENAME, true, new string[] { COLUMN });

                foreach (DataRow r in ids.Rows)
                {
                    try
                    {
                        Object aId = r[COLUMN];
                        // edit here
                        ValuesDataSet.OffsetTypesRow offset = ds.OffsetTypes.FindByOffsetTypeID((int)aId);
                        if (offset != null)
                        {
                            OffsetType t = new OffsetType();
                            t.offsetTypeID          = offset.OffsetTypeID;
                            t.offsetTypeIDSpecified = true;

                            if (!String.IsNullOrEmpty(offset.OffsetDescription))
                            {
                                t.offsetDescription = offset.OffsetDescription;
                            }

                            ValuesDataSet.UnitsRow offUnit = ds.Units.FindByUnitsID(offset.OffsetUnitsID);
                            string offUnitsCode;
                            string offUnitsName         = null;
                            string offUnitsAbbreviation = null;
                            if (!String.IsNullOrEmpty(offUnit.UnitsAbbreviation))
                            {
                                offUnitsAbbreviation = offUnit.UnitsAbbreviation;
                            }
                            if (!String.IsNullOrEmpty(offUnit.UnitsName))
                            {
                                offUnitsName = offUnit.UnitsName;
                            }
                            if (offUnit != null)
                            {
                                t.units = CuahsiBuilder.CreateUnitsElement(
                                    null, offUnit.UnitsID.ToString(), offUnitsAbbreviation, offUnitsName);
                            }

                            list.Add(t);
                        }
                    }
                    catch (Exception e)
                    {
                        log.Error("Error generating a qualifier " + r.ToString() + e.Message);
                    }
                }
                return(list);
            }

            catch (Exception e)
            {
                log.Error("Error generating a qualifiers " + e.Message);
                // non fatal exceptions
                return(null);
            }
        }
            public static seriesCatalogTypeSeries row2SeriesCatalogElement(seriesCatalogDataSet.SeriesCatalogRow row, seriesCatalogDataSet ds, VariablesDataset vds, ControlledVocabularyDataset vocabularyDataset)
            {
                int variableID = row.VariableID;
                VariableInfoType       variable      = ODvariables.GetVariableByID(variableID, vds);
                Nullable <W3CDateTime> beginDateTime = null;

                if (!row.IsBeginDateTimeNull())
                {
                    TimeSpan timeSpan = row.BeginDateTime.Subtract(row.BeginDateTimeUTC);
                    beginDateTime = new W3CDateTime(row.BeginDateTime, timeSpan);
                }

                Nullable <W3CDateTime> endDateTime = null;

                if (!row.IsEndDateTimeNull())
                {
                    TimeSpan timeSpan = row.EndDateTime.Subtract(row.EndDateTimeUTC);
                    endDateTime = new W3CDateTime(row.EndDateTime, timeSpan);
                }

                Nullable <int> valueCount = null;

                if (!row.IsValueCountNull())
                {
                    valueCount = row.ValueCount;
                }

                string qualityControlLevelTerm = null;
                int?   QualityControlLevelid   = null;

                if (!row.IsQualityControlLevelIDNull())
                {
                    QualityControlLevelid = row.QualityControlLevelID;
                    ControlledVocabularyDataset.QualityControlLevelsRow qcRow =
                        vocabularyDataset.QualityControlLevels.FindByQualityControlLevelID(QualityControlLevelid.Value);
                    if (qcRow != null)
                    {
                        qualityControlLevelTerm = qcRow.Definition;
                    }
                }

                int?MethodID = null;

                if (!row.IsMethodIDNull())
                {
                    MethodID = row.MethodID;
                }

                int?SourceID = null;

                if (!row.IsSourceIDNull())
                {
                    SourceID = row.SourceID;
                }

                Nullable <Boolean> valueCountIsEstimated = false;

                /* public static seriesCatalogTypeSeries createSeriesCatalogRecord(
                 *      VariableInfoType variable,
                 *      string sampleMedium,
                 *      Nullable<W3CDateTime> beginDateTime,
                 *      Nullable<W3CDateTime> endDateTime,
                 *      Nullable<int> valueCount,
                 *       Nullable<Boolean> valueCountIsEstimated,
                 *      string dataType,
                 *      string valueType,
                 *      string generalCategory
                 *     )
                 */
                seriesCatalogTypeSeries record = CuahsiBuilder.CreateSeriesRecord(
                    variable,
                    variable.sampleMedium.ToString(),
                    beginDateTime,
                    endDateTime,
                    valueCount,
                    valueCountIsEstimated,
                    null,
                    null,
                    null,
                    false, // real time
                    null,  // string if real time
                    row.QualityControlLevelCode,
                    QualityControlLevelid,
                    row.MethodDescription,
                    MethodID, row.Organization,
                    row.SourceDescription,
                    SourceID,
                    row.Citation,
                    true, // include UTC Time
                    qualityControlLevelTerm
                    );

                return(record);
            }
示例#25
0
            public override object GetTimeSeries(
                locationParam lp,
                VariableParam vp,
                Nullable <W3CDateTime> startDate,
                Nullable <W3CDateTime> endDate)
            {
                if (lp.isGeometry)
                {
                    throw new WaterOneFlowException("Geometry not supported ");
                }

                TimeSeriesResponseType result = null;

                //string Network;
                //string SiteCode;
                ////WSUtils.ParseSiteId(siteId, out Network, out SiteCode);
                //try
                //{
                //    locationParam sq = new locationParam(siteNumber);
                //    Network = sq.Network;
                //    SiteCode = sq.SiteCode;
                //    if (sq.isGeometry)
                //    {
                //        throw new WaterOneFlowException("Location by Geometry not accepted: " + siteNumber);
                //    }
                //}
                //catch (WaterOneFlowException we)
                //{
                //    log.Info("Bad SiteID:" + siteNumber);
                //    throw;
                //}
                //catch (Exception e)
                //{
                //    log.Error("Uncaught exception:" + e.Message);
                //    throw new WaterOneFlowException("Sorry. Your submitted site ID for this getSiteInfo request caused an problem that we failed to catch programmatically: " + e.Message);
                //}

                //// string WaterQualityList = "&parameter_cd=" + variable;
                //string[] StationsList = new string[] { SiteCode };
                string[] StationsList = new string[] { lp.SiteCode };

                //VariableParam vp;
                //try
                //{
                //    vp = new VariableParam(variable);

                //}
                //catch (WaterOneFlowException we)
                //{
                //    log.Info("Bad Variable Request '" + variable + "'");
                //    throw;
                //}
                //catch (Exception e)
                //{
                //    log.Error("uncaught exception duing Variable Request '" + variable + "'");
                //    throw new WaterOneFlowException("Sorry. Your variable parameter caused an exception that we failed to catch:" + e.Message);

                //}

                result = CuahsiBuilder.CreateTimeSeriesObject();

                //// all data are provisional
                //List<note> notes = new List<note>();
                //note urlNote = new note();
                //urlNote.title = "USGS Data Provisional";
                //urlNote.href = "http://waterdata.usgs.gov/nwis/help/?provisional";
                //urlNote.Value = "All data are provisional, and subject to revision";
                //notes.Add(urlNote);
                //result.queryInfo.note = notes.ToArray();

                result.queryInfo.criteria.locationParam = lp.ToString();
                result.queryInfo.criteria.variableParam = vp.ToString();


                // result.queryInfo.criteria.timeParam  = CuahsiBuilder.createQueryInfoTimeCriteria(startDate, endDate);

                // look for siteInfoType in cache, and use if it is there

                /* SiteInfoType sit = (SiteInfoType)appCache[sitCache + SiteCode];
                 * if (sit == null)
                 * {
                 *   // just use the values for now.
                 *   ((SiteInfoType)result.timeSeries.sourceInfo).siteCode[0].Value = SiteCode;
                 *   ((SiteInfoType)result.timeSeries.sourceInfo).siteCode[0].network = "NWIS";
                 *
                 * }
                 * else
                 * {
                 *   // in the cache, use it
                 *   result.timeSeries.sourceInfo = sit;
                 * }
                 * */
                result.timeSeries.sourceInfo = DataInfoService.GetSite(lp);


                // vaiable info
                // result.timeSeries.variable = vp.getVariableSchemaType();
                //result.timeSeries.variable = NwisVariableCatalog.getVariable(vp.Code, variableDataSet);
                //result.timeSeries.variable = ODvariables.getVariable(vp.Code, variableDataSet)[0];

                // not fully correct, but just choose the first one.
                VariableInfoType[] vits = DataInfoService.GetVariableInfoObject(vp);
                result.timeSeries.variable = vits[0];
                string aURL = GroundWater(startDate, endDate,
                                          StationsList, USGSCommon.option2AgencyCode(lp));

                try
                {
                    // refactor too much abstraction
                    //CreateRealTimeSeriesObject(result, RealTime(StationsList));
                    result.timeSeries.values =
                        CreateGWTimeSeriesObject(vp, aURL);
                }
                catch (WaterOneFlowException e)
                {
                    //log.Error(e.Message + e.StackTrace);
                    throw;
                }
                catch (WaterOneFlowSourceException e)
                {
                    //log.Error(e.Message + e.StackTrace);
                    throw;
                }
                catch (WebException e)
                {
                    log.Error(e.Message + e.StackTrace);
                    throw new WaterOneFlowException("Connecting to External resource failed.", e);
                }
                catch (Exception e)
                {
                    log.Error(e.Message + e.StackTrace);
                    throw new WaterOneFlowException("An External resource failed.", e);
                }

                result.timeSeries.sourceInfo = DataInfoService.GetSite(lp);

                List <NoteType> notes   = new List <NoteType>();
                NoteType        urlNote = new NoteType();

                urlNote.title = "USGS URL";
                urlNote.Value = aURL;
                notes.Add(urlNote);
                result.queryInfo.note = notes.ToArray();

                return(result);
            }
        public override object  GetTimeSeries(
            locationParam lp,
            variableParamVersion vp,
            W3CDateTime?startDate,
            W3CDateTime?endDate)
        {
            if ((endDate.HasValue && startDate.HasValue) && endDate.Value.DateTime < startDate.Value.DateTime)
            {
                throw new WaterOneFlowException("No Data. End Date must be greater than Start Date");
            }

            TimeSeriesResponseType result = null;


            result = CuahsiBuilder.CreateTimeSeriesObject();

            string[] StationsList = new string[] { lp.SiteCode };

            SiteInfoType sit = null;

            try
            {
                sit = DataInfoService.GetSite(lp);
                result.timeSeries.sourceInfo = sit;
            }
            catch (WaterOneFlowException ex)
            {
                log.Info("EPA Bad Site Request" + vp.ToString());
                throw ex;
            }
            catch (WaterOneFlowServerException ex)
            {
                log.Error("EPA  server issued  with Site Request" + vp.ToString());
                throw ex;
            }
            catch (WaterOneFlowSourceException ex)
            {
                log.Error("EPA  source issued  with Site Request" + vp.ToString());
                throw ex;
            }
            catch (Exception ex)
            {
                log.Error("EPA  source issued  with Site Request" + vp.ToString());
                throw new WaterOneFlowServerException("Uncaught Exception in EPA Time series site reuqest", ex);
            }



            result.queryInfo.criteria.locationParam = lp.ToString();
            result.queryInfo.criteria.variableParam = vp.ToString();

            // not fully correct, but just choose the first one.
            VariableInfoType[] vits = null;
            try {
                vits = DataInfoService.GetVariableInfoObject(vp);
                result.timeSeries.variable = vits[0];
            } catch (WaterOneFlowException ex)
            {
                log.Info("EPA Bad variable Request" + vp.ToString());
                throw ex;
            }
            catch (WaterOneFlowServerException ex)
            {
                log.Error("EPA  server issued  with variable Request" + vp.ToString());
                throw ex;
            } catch (WaterOneFlowSourceException ex)
            {
                log.Error("EPA  source issued  with variable Request" + vp.ToString());
                throw ex;
            } catch (Exception ex)
            {
                log.Error("EPA  source issued  with variable Request" + vp.ToString());
                throw new WaterOneFlowServerException("Uncaught Exception in EPA Time series site reuqest", ex);
            }

            String variableName = result.timeSeries.variable.variableName;

            string agency   = GetAgencyEpaSiteCode(lp);
            string siteCode = GetSiteIDEpaSiteCode(lp);

            EPAResults.StoretResultFlatDataTable table =
                WqxResultsToDataset.GetStationResults(
                    agency, siteCode,
                    variableName, startDate, endDate);
            if (table.Rows.Count == 0)
            {  // no retults, just go back
                result.timeSeries.values       = new TsValuesSingleVariableType();
                result.timeSeries.values.count = "0";
                return(result);
            }
            DataRowCollection unitNameRows = EPAResponseUnits(table);

            // for now
            if (unitNameRows.Count > 1)
            {
                //throw new WaterOneFlowSourceException(
                //    " EPA Returned more than one unit for request."
                //    + " This is not supported at the present time" );
                // no longer want an error. return data
                log.Info("EPA STATION WITH MORE THAN ONE UNIT: '" + lp.ToString());
            }

            /* Logic neded for multiple units
             * select one with max count or latest one?
             * if max get count for each unit
             * For the selected unit,
             * * create a subtable,
             * * populate values
             *
             * Future:
             * for each unit
             * *collect a subtable, populate values
             * */

            /* need to creat a units element
             * The units returned, are not necessarily the ones in the series catalog
             */
            //string unitName = unitNameRows[0].ItemArray[0].ToString().Trim();
            //result.timeSeries.variable.units =  CuahsiBuilder.CreateUnitsElement(null, null, unitName, unitName);

            foreach (DataRow row in unitNameRows)
            {
                string unitName = row.ItemArray[0].ToString().Trim();
                result.timeSeries.variable.units = CuahsiBuilder.CreateUnitsElement(null, null, unitName, unitName);

                StringBuilder select = new StringBuilder();
                select.AppendFormat("[VariableUnitsAbbreviation]='{0}'", WaterOneFlowImpl.WSUtils.SqlEncode(unitName));
                if (startDate.HasValue)
                {
                    select.AppendFormat(" AND  [localDateTime] > '{0}' ", startDate.Value.DateTime.ToString("s"));
                }
                if (endDate.HasValue)
                {
                    select.AppendFormat(" AND  [localDateTime] < '{0}' ", endDate.Value.DateTime.AddDays(1).ToString("s"));
                }
                EPAResults.StoretResultFlatRow[] rowsWithUnit = (EPAResults.StoretResultFlatRow[])table.Select(select.ToString());
                result.timeSeries.values = DataValuesBuilder.CreateValuesElement(rowsWithUnit);

                result.timeSeries.values.unitsAbbreviation = unitName; // abbreviated name is presently returned
            }

            /* for now, just adding the methods, without the reference to the
             * value they came from. That will take a bit of work.
             * need to generate unique methodID's for distinct methods
             * then populate the methodID in the table,
             * then send to the value generator
             * */
            /***** This can cause more method, if nore than one parameter is returned
             * eg pH presently returns phosphorous
             * */

            DataRowCollection methodNameRows = EPAResponseMethods(table);

            if (methodNameRows != null && methodNameRows.Count > 0)
            {
                List <MethodType> methods;
                if (result.timeSeries.values.method == null)
                {
                    methods = new List <MethodType>();
                }
                else
                {
                    methods = new List <MethodType>(result.timeSeries.values.method);
                }
                foreach (DataRow row in methodNameRows)
                {
                    MethodType method = new MethodType();
                    method.MethodDescription = row.ItemArray[0].ToString();
                    methods.Add(method);
                }
                result.timeSeries.values.method = methods.ToArray();
            }


            return(result);
        }
示例#27
0
        private VariableInfoType RowToVariable(UsgsDbDailyValues.VariablesRow vRow)
        {
            VariableInfoType vit;
            String           vCode = vRow.IsVariableCodeNull() ? null : vRow.VariableCode;
            String           vName = vRow.IsVariableNameNull() ? null : vRow.VariableName;
            //String vDescr =
            String uName   = vRow.IsUnitsNull() ? null : vRow.Units;
            String uAbbrev = vRow.IsUnitAbbreviationNull() ? null : vRow.UnitAbbreviation;
            String uType   = vRow.IsUnitTypeNull() ? null : vRow.UnitType;
            String uCode   = null; // ID is code

            if (!vRow.IsVariableUnitsIDNull())
            {
                uCode = vRow.VariableUnitsID.ToString();
            }

            UnitsTypeEnum uTypeEnum = (UnitsTypeEnum)CoreBuilder.GetTextAsEnum(uType, typeof(UnitsTypeEnum));

            units vUnit = CuahsiBuilder.CreateUnitsElement(
                uTypeEnum,
                uCode, uAbbrev, uName);

            /* this needs to be fixed to accept value type and data type
             *  and time options
             */
            vit = CuahsiBuilder.CreateVariableInfoType(
                null,   // don't want variable ID exposed in the NWIS service
                "NWIS",
                vRow.VariableCode,
                vRow.VariableName,
                null,
                vUnit // units
                );

            CoreBuilder.SetEnumFromText(vit, vRow, "valueType", typeof(valueTypeEnum));
            CoreBuilder.SetEnumFromText(vit, vRow, "dataType", typeof(dataTypeEnum));

            // add usgs statistic code options
            if (!vRow.Isstat_cdNull())
            {
                List <option> opts = new List <option>(1);
                option        opt  = new option();
                opt.name       = "statistic";
                opt.optionCode = vRow.stat_cd;
                opts.Add(opt);
                vit.options = opts.ToArray();
            }

            if (!vRow.IsisRegularNull() && vRow.isRegular)
            {
                vit.timeSupport                    = new VariableInfoTypeTimeSupport();
                vit.timeSupport.isRegular          = vRow.isRegular;
                vit.timeSupport.isRegularSpecified = true;

                // add time support

                // check to be sure we've got some vaild stuff
                if (!vRow.IsTimeSupportNull())
                {
                    int timeInterval;
                    if (Int32.TryParse(vRow.TimeSupport, out timeInterval))
                    {
                        vit.timeSupport.timeInterval          = timeInterval;
                        vit.timeSupport.timeIntervalSpecified = true;
                    }
                }
                if (!vRow.IsTimeUnitsIDNull())
                {
                    vit.timeSupport.unit                  = new UnitsType();
                    vit.timeSupport.unit.UnitID           = 104;
                    vit.timeSupport.unit.UnitIDSpecified  = true;
                    vit.timeSupport.unit.UnitDescription  = "day";
                    vit.timeSupport.unit.UnitAbbreviation = "d";
                    vit.timeSupport.unit.UnitType         = (UnitsTypeEnum)CoreBuilder.GetTextAsEnum("Time", typeof(UnitsTypeEnum));;
                }
            }

            return(vit);
        }
示例#28
0
            /*
             * public  TimeSeriesResponseType GetValues(
             *  locationParam Location,
             *   VariableParam Variable,
             *   W3CDateTime? BeginDateTime, W3CDateTime? EndDateTime)
             */



            public override WaterOneFlow.Service.Response.v1_1.TimeSeriesResponseType GetTimeSeries(
                locationParam lp,
                VariableParam vp,
                Nullable <W3CDateTime> startDate,
                Nullable <W3CDateTime> endDate)
            {
                // put the date check up front.
                // a start date can be older than 31 days, as long as the endDate is not older than 31 days.

                if (endDate.HasValue && endDate.Value.DateTime < DateTime.Today.AddDays(-31))
                {
                    throw new WaterOneFlowException("No Data. EndDate must be less than that 31 days from present.");
                }

                TimeSeriesResponseType result = null;

                string[] StationsList = new string[] { lp.SiteCode };

                result = CuahsiBuilder.CreateTimeSeriesObject();


                result.queryInfo.criteria.locationParam = lp.ToString();
                result.queryInfo.criteria.variableParam = vp.ToString();

                // not fully correct, but just choose the first one.
                VariableInfoType[] vits = DataInfoService.GetVariableInfoObject(vp);
                result.timeSeries.variable = vits[0];

                string aUrl = UnitValues(startDate, endDate,
                                         new string[] { vp.Code }, StationsList);

                try
                {
                    // refactor too much abstraction
                    //CreateRealTimeSeriesObject(result, RealTime(StationsList));
                    result.timeSeries.values    = new TsValuesSingleVariableType[1];
                    result.timeSeries.values[0] =
                        USGSCommon.CreateTimeSeriesValuesElement(vp,
                                                                 aUrl,
                                                                 true // add provisional flag
                                                                 );
                }
                catch (Exception e)
                {
                    log.Error(e.Message + e.StackTrace);
                    throw new WaterOneFlowException("An External resource failed.", e);
                }


                // all data are provisional
                List <NoteType> notes = new List <NoteType>();
                NoteType        pNote = new NoteType();

                pNote.title = "USGS Data Provisional";
                pNote.href  = "http://waterdata.usgs.gov/nwis/help/?provisional";
                pNote.Value = "All data are provisional, and subject to revision";
                notes.Add(pNote);

                NoteType urlNote = new NoteType();

                urlNote.title = "USGS URL";
                urlNote.Value = aUrl;
                notes.Add(urlNote);

                result.queryInfo.note = notes.ToArray();

                return(new WaterOneFlow.Service.v1_1.xsd.TimeSeriesResponse(result));
            }
示例#29
0
        public static SiteInfoType row2SiteInfoElement(siteInfoDataSet.sitesRow row, siteInfoDataSet ds)
        {
            SiteInfoType sit = CuahsiBuilder.CreateASiteInfoTypeWithLatLongPoint();

            sit.siteName = !String.IsNullOrEmpty(row.SiteName) ? row.SiteName : null;

            // sit created with a single siteCode
            sit.siteCode[0].siteID = row.SiteID.ToString();
            sit.siteCode[0].Value  = !String.IsNullOrEmpty(row.SiteCode) ? row.SiteCode : null;
            string siteNetwork = System.Configuration.ConfigurationManager.AppSettings["network"];

            sit.siteCode[0].network = siteNetwork;

            // we have a point
            ((LatLonPointType)sit.geoLocation.geogLocation).latitude  = row.Latitude;
            ((LatLonPointType)sit.geoLocation.geogLocation).longitude = row.Longitude;
            if (row.LatLongDatumID == 0)
            {
                ((LatLonPointType)sit.geoLocation.geogLocation).srs =
                    ConfigurationManager.AppSettings["defaultSpatialReferenceSystemSRS"];
            }
            else
            {
                siteInfoDataSet.SpatialReferencesRow[] datum =
                    (siteInfoDataSet.SpatialReferencesRow[])ds.SpatialReferences.Select("SpatialReferenceID = " + row.LatLongDatumID);
                if (datum.Length > 0 && !datum[0].IsSRSIDNull())
                {
                    ((LatLonPointType)sit.geoLocation.geogLocation).srs =
                        ConfigurationManager.AppSettings["SRSPrefix"] + datum[0].SRSID;
                }
            }

            if (!row.IsElevation_mNull())
            {
                sit.elevation_m          = row.Elevation_m;
                sit.elevation_mSpecified = true;

                if (!row.IsVerticalDatumNull())
                {
                    sit.verticalDatum = row.VerticalDatum;
                }
            }


            if (!row.IsLocalXNull() && !row.IsLocalYNull() && !row.IsLocalProjectionIDNull())
            {
                sit.geoLocation.localSiteXY = new SiteInfoTypeGeoLocationLocalSiteXY[1];
                SiteInfoTypeGeoLocationLocalSiteXY xy = new SiteInfoTypeGeoLocationLocalSiteXY();
                xy.X = row.LocalX;
                xy.Y = row.LocalY;
                //@TODO local XY
                siteInfoDataSet.SpatialReferencesRow[] datum =
                    (siteInfoDataSet.SpatialReferencesRow[])ds.SpatialReferences.Select("SpatialReferenceID = " + row.LocalProjectionID);
                if (datum.Length > 0)
                {
                    if (!String.IsNullOrEmpty(datum[0].SRSName))
                    {
                        xy.projectionInformation = datum[0].SRSName;
                    }
                    else
                    {
                        xy.projectionInformation = ConfigurationManager.AppSettings["SRSPrefix"] + datum[0].SRSID;
                    }
                }

                sit.geoLocation.localSiteXY[0] = xy;
            }
            if (!row.IsCountyNull())
            {
                NoteType aNote =
                    CuahsiBuilder.createNote(row.County, "County", null);
                sit.note = CuahsiBuilder.addNote(sit.note, aNote);
            }
            if (!row.IsStateNull())
            {
                NoteType aNote =
                    CuahsiBuilder.createNote(row.State, "State", null);
                sit.note = CuahsiBuilder.addNote(sit.note, aNote);
            }
            if (!row.IsCommentsNull())
            {
                NoteType aNote =
                    CuahsiBuilder.createNote(row.Comments, "Site Comments", null);
                sit.note = CuahsiBuilder.addNote(sit.note, aNote);
            }
            return(sit);
        }
示例#30
0
            /// <summary>
            /// Builds a VariableInfoType from a dataset row
            /// the dataSet is stored in the NWISService variableDataSet.
            /// Find the rwo you want with the command:
            ///
            /// and convert.
            /// </summary>
            /// <param name="row"></param>
            /// <returns></returns>
            public static VariableInfoType rowToVariableInfoType(VariablesDataset.VariablesRow row, VariablesDataset ds)
            {
                UnitsType aUnit = null;


                aUnit = getUnitsElement(row.VariableUnitsID, ds);


                String vCode = row.VariableCode;

                int vid = row.VariableID;

                String vocab   = System.Configuration.ConfigurationManager.AppSettings["vocabulary"];
                String varName = row.VariableName;

                VariableInfoType vt = CuahsiBuilder.CreateVariableInfoType(
                    vid,
                    vocab,
                    vCode,
                    varName,
                    null, //variable description
                    aUnit
                    );

                // add time support
                vt.timeScale = new VariableInfoTypeTimeScale();


                vt.timeScale.isRegular = row.IsRegular;

                vt.timeScale.timeSupport          = Convert.ToInt32(row.TimeSupport);
                vt.timeScale.timeSupportSpecified = true;

                // future, when ODM reports spacing
                //if (row.["timeSpacing"] != null)
                //{
                //    vt.timeScale.timeSpacing = Convert.ToInt32(row["timeSpacing"]);
                //    vt.timeScale.timeSpacingSpecified = true;
                //}


                UnitsType tUnit = getUnitsElement(row.TimeUnitsID, ds);

                if (tUnit != null)
                {
                    vt.timeScale.unit = tUnit;
                }

                vt.valueType    = String.IsNullOrEmpty(row.ValueType) ? null : row.ValueType;
                vt.sampleMedium = String.IsNullOrEmpty(row.SampleMedium) ? null : row.SampleMedium;
                vt.dataType     = String.IsNullOrEmpty(row.DataType) ? null : row.DataType;
                if (vt.dataType.Equals("Categorical", StringComparison.InvariantCultureIgnoreCase))
                {
                    IEnumerable <VariableInfoTypeCategory> categories = getCategoryElement(vid, ds);
                    vt.categories = new List <VariableInfoTypeCategory>(categories).ToArray();
                }
                vt.generalCategory = String.IsNullOrEmpty(row.GeneralCategory) ? null : row.GeneralCategory;

                // zero is default value for datatype... so don't add it if it is the default value
                if (!row.NoDataValue.Equals(0))
                {
                    vt.noDataValue          = row.NoDataValue;
                    vt.noDataValueSpecified = true;
                }

                vt.speciation = String.IsNullOrEmpty(row.Speciation) ? null : row.Speciation;


                return(vt);
            }