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; } } }
/// <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(); }