public override IPlace FindClosest(Coordinates target, float distance, IPlace defaultPlace, bool astronomical) { Vector3d searchPoint = Coordinates.GeoTo3dDouble(target.Lat, target.Lng); //searchPoint = -searchPoint; Vector3d dist; if (defaultPlace != null) { Vector3d testPoint = Coordinates.RADecTo3d(defaultPlace.RA, -defaultPlace.Dec, -1.0); dist = searchPoint - testPoint; distance = (float)dist.Length(); } int closestItem = -1; int index = 0; foreach (Vector3 point in positions) { dist = searchPoint - new Vector3d(point); if (dist.Length() < distance) { distance = (float)dist.Length(); closestItem = index; } index++; } if (closestItem == -1) { return(defaultPlace); } Coordinates pnt = Coordinates.CartesianToSpherical2(positions[closestItem]); string name = table.Rows[closestItem].ColumnData[this.nameColumn].ToString(); if (nameColumn == startDateColumn || nameColumn == endDateColumn) { name = SpreadSheetLayer.ParseDate(name).ToString("u"); } if (String.IsNullOrEmpty(name)) { name = string.Format("RA={0}, Dec={1}", Coordinates.FormatHMS(pnt.RA), Coordinates.FormatDMS(pnt.Dec)); } TourPlace place = new TourPlace(name, pnt.Lat, pnt.RA, Classification.Unidentified, "", ImageSetType.Sky, -1); Dictionary <String, String> rowData = new Dictionary <string, string>(); for (int i = 0; i < table.Columns.Count; i++) { string colValue = table.Rows[closestItem][i].ToString(); if (i == startDateColumn || i == endDateColumn) { colValue = SpreadSheetLayer.ParseDate(colValue).ToString("u"); } if (!rowData.ContainsKey(table.Column[i].Name) && !string.IsNullOrEmpty(table.Column[i].Name)) { rowData.Add(table.Column[i].Name, colValue); } else { rowData.Add("Column" + i.ToString(), colValue); } } place.Tag = rowData; if (Viewer != null) { Viewer.LabelClicked(closestItem); } return(place); }
public Layer FromXml(XmlNode layerNode, bool someFlag) { string layerClassName = layerNode.Attributes.GetNamedItem("Type").Value.ToString(); string overLayType = layerClassName.Replace("TerraViewer.",""); if (overLayType == null) { return null; } Layer newLayer = null; switch (overLayType) { case "SpreadSheetLayer": newLayer = new SpreadSheetLayer(); break; case "GreatCirlceRouteLayer": newLayer = new GreatCirlceRouteLayer(); break; default: return null; } //Force inheritance. // TODO: Understand why this breaks in SS .8 Script.Literal("for(var method in this){\n /*if (({}).toString.call(this[method]).match(/\\s([a-zA-Z]+)/)[1].toLowerCase() == 'function'){\n*/ newLayer[method] = this[method];/*\n}*/\n}"); newLayer.InitFromXml(layerNode); return newLayer; }
public FilterGraphTool(SpreadSheetLayer layer) { this.layer = layer; targetColumn = layer.AltColumn; }