public locationParam(String inputParam)
        {
            location = inputParam;

            String[] lp = new String[2];
            if (inputParam.Contains(networkSeparator))
            {
                int sepPosition = inputParam.IndexOf(networkSeparator);

                lp[0] = inputParam.Substring(0, sepPosition).Trim();
                lp[1] = inputParam.Substring(sepPosition + 1).Trim();
                Network = lp[0];
                SiteCode = lp[1].Trim();
                if (Network.Equals(siteIDNetwork, StringComparison.InvariantCultureIgnoreCase))
                {
                    IsId = true;
                    try
                    {
                        int.Parse(SiteCode);
                    }
                    catch (Exception e)
                    {
                        throw new WaterOneFlowException("SITEID must be an integer. '" + location + "'");
                    }
                }
                if (Network.Equals(basicGeometry.geomNetworkID))
                {
                    isGeometry = true;
                    if (lp[1].StartsWith(box.geomType, StringComparison.InvariantCultureIgnoreCase))
                    {
                        Geometry = new box(lp[1]);
                    }
                    else if (lp[1].StartsWith(point.geomType, StringComparison.InvariantCultureIgnoreCase))
                    {
                        Geometry = new point(lp[1]);
                    }
                    else
                    {
                        // unsupported geometry
                        throw new WaterOneFlowException("Unsupported Geometry :'" + SiteCode + "' " +
                                                        "Must be BOX or POINT");
                    }

                }
                else
                {
                    isGeometry = false;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Gets the sites, in XML format [test for SNOW]
        /// </summary>
        public static SiteInfoResponseTypeSite[] GetSitesByBox(box queryBox, bool includeSeries)
        {
            List<SiteInfoResponseTypeSite> siteList = new List<SiteInfoResponseTypeSite>();

            string cnn = GetConnectionString();
            string serviceCode = ConfigurationManager.AppSettings["network"];

            using (SqlConnection conn = new SqlConnection(cnn))
            {
                using (SqlCommand cmd = new SqlCommand())
                {
                    string sqlSites = "SELECT Stations.st_id, st_name, altitude, location_id FROM Stations INNER JOIN StationsVariables stv ON Stations.st_id = stv.st_id WHERE var_id=8 OR (var_id=1 AND operator_id=1)";
                    string sql = "SELECT st.st_id, st_name, lat, lon, altitude FROM " +
                        "(" + sqlSites + ") st INNER JOIN Locations ON st.location_id = Locations.loc_id";
                    cmd.CommandText = sql;
                    cmd.Connection = conn;
                    conn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        SiteInfoResponseTypeSite newSite = new SiteInfoResponseTypeSite();
                        SiteInfoType si = new SiteInfoType();

                        if (dr["altitude"] != DBNull.Value)
                        {
                            si.elevation_m = Convert.ToDouble(dr["altitude"]);
                            si.elevation_mSpecified = true;
                        }
                        else
                        {
                            si.elevation_m = 0;
                            si.elevation_mSpecified = true;
                        }
                        si.geoLocation = new SiteInfoTypeGeoLocation();

                        LatLonPointType latLon = new LatLonPointType();
                        latLon.latitude = Convert.ToDouble(dr["Lat"]);
                        latLon.longitude = Convert.ToDouble(dr["lon"]);
                        latLon.srs = "EPSG:4326";
                        si.geoLocation.geogLocation = latLon;
                        si.geoLocation.localSiteXY = new SiteInfoTypeGeoLocationLocalSiteXY[1];
                        si.geoLocation.localSiteXY[0] = new SiteInfoTypeGeoLocationLocalSiteXY();
                        si.geoLocation.localSiteXY[0].X = latLon.longitude;
                        si.geoLocation.localSiteXY[0].Y = latLon.latitude;
                        si.geoLocation.localSiteXY[0].ZSpecified = false;
                        si.geoLocation.localSiteXY[0].projectionInformation = si.geoLocation.geogLocation.srs;
                        si.metadataTimeSpecified = false;
                        //si.oid = Convert.ToString(dr["st_id"]);
                        si.note = new NoteType[1];
                        si.note[0] = new NoteType();
                        si.note[0].title = "my note";
                        si.note[0].type = "custom";
                        si.note[0].Value = "CZSNW";
                        si.verticalDatum = "Unknown";

                        si.siteCode = new SiteInfoTypeSiteCode[1];
                        si.siteCode[0] = new SiteInfoTypeSiteCode();
                        si.siteCode[0].network = serviceCode;
                        si.siteCode[0].siteID = Convert.ToInt32(dr["st_id"]);
                        si.siteCode[0].siteIDSpecified = true;
                        si.siteCode[0].Value = Convert.ToString(dr["st_id"]);

                        si.siteName = Convert.ToString(dr["st_name"]);

                        newSite.siteInfo = si;
                        siteList.Add(newSite);
                    }
                }
            }
            return siteList.ToArray();
        }