/// <summary> /// KmlDocument 의 Visibility 변경 /// </summary> /// <param name="document"></param> /// <param name="isVisible"></param> public void SetKmlDocumentVisible(IKmlDocument document, bool isVisible) { if (document == null) { System.Console.WriteLine("SetKmlDocumentVisible - KmlDocument is null"); FileLogManager.GetInstance().WriteLog("[GEController] SetKmlDocumentVisible( KmlDocument is null )"); return; } try { document.setVisibility(Convert.ToInt32(isVisible)); KmlObjectListCoClass kmlObjectListCoClass = document.getFeatures().getChildNodes(); for (int i = 0; i < kmlObjectListCoClass.getLength(); i++) { IKmlObject kmlObject = kmlObjectListCoClass.item(i); string strType = kmlObject.getType(); if (strType == "KmlPlacemark") { IKmlPlacemark placemark = kmlObject as IKmlPlacemark; placemark.setVisibility(Convert.ToInt32(isVisible)); } } } catch (Exception ex) { System.Console.WriteLine("SetKmlDocumentVisible Exception : " + ex.ToString()); FileLogManager.GetInstance().WriteLog("[GEController] SetKmlDocumentVisible( " + ex.ToString() + " )"); } }
public Boolean join(String t_name1, String t_name2) { try { IKmlFolder temp = ge.createFolder(""); String[] trip1 = t_pool.getTripDetailsForTrip(Module.getIndex(t_name1).ToString()); String[] trip2 = t_pool.getTripDetailsForTrip(Module.getIndex(t_name2).ToString()); IKmlPlacemark point = t_pool.getStart(t_pool.getByName(t_name2)); String[] trip = (String[])trip1.Clone(); /* trip[5] = trip2[5]; * trip[6] = Module.duration(trip[4], trip[5]); * trip[11] = trip2[11]; * trip[12] = trip2[12]; */ Hashtable cord1 = Module.getCoordinates(t_pool.getFinish(t_pool.getByName(t_name1))); Hashtable cord2 = Module.getCoordinates(t_pool.getStart(t_pool.getByName(t_name2))); /* * trip[7] = (double.Parse(trip1[7]) + double.Parse(trip2[7]) + DistanceAlgorithm.DistanceBetweenPlaces((double)cord1["lat"], (double)cord1["lon"] * , (double)cord2["lat"], (double)cord2["lon"])).ToString(); * * trip[8] = Math.Round((double.Parse(trip[7]) / Module.durationConverter(trip[6])), 3).ToString(); */ String style = t_pool.insert(t_name1, temp, trip, ge.createStyle("")); IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); day.getFeatures().appendChild(temp); ArrayList data = new ArrayList(); data.Add(t_name1); data.Add(point); data.Add(trip1); data.Add(trip2); data.Add(style); record.joi_trip(data); return(true); } catch { return(false); } }
public IKmlCamera allocate() { double lat = 0, lon = 0; IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); IKmlObjectList trips = day.getFeatures().getChildNodes(); for (int i = 0; i != (t_pool.getSize() / 2); i++) { IKmlFolder trip = t_pool.getByName("Trip_" + (i + 1)); IKmlObjectList points = trip.getFeatures().getChildNodes(); IKmlPlacemark point = (IKmlPlacemark)points.item(1); lon = (double)Module.getCoordinates(point)["lon"]; lat = (double)Module.getCoordinates(point)["lat"]; } //lon = lon / t_pool.getSize(); // lat = lat / t_pool.getSize(); IKmlCamera vw = ge.createCamera(""); vw.set(lat, lon, 25000.0, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 0, 0); return(vw); }
public Boolean test_undo() { bool gflag = true; bool fflag = true; Hashtable temp = record.undo(); if (temp["opt"] == "spl") { ArrayList data = (ArrayList)temp["data"]; String name = (String)data[0]; // String[] att = (String[])data[2]; int ts_init = t_pool.getSize(); int l_t1 = t_pool.getByName(name).getFeatures().getChildNodes().getLength(); int l_t2 = t_pool.getByName("Trip_" + (Module.getIndex(name) + 1)).getFeatures().getChildNodes().getLength(); String t_f = t_pool.getFinish(t_pool.getByName(name)).getName().ToString(); String t_s = t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))).getName().ToString(); core.undo(temp); MessageBox.Show(l_t1 + " " + l_t2 + " " + t_pool.getByName(name).getFeatures().getChildNodes().getLength()); try { Assert.AreEqual(ts_init, t_pool.getSize() + 1); // MessageBox.Show(l_t1 + " " + l_t2 + " " + t_pool.getByName(name).getFeatures().getChildNodes().getLength()); // Assert.AreEqual(t_pool.getByName(name).getFeatures().getChildNodes().getLength(), l_t1 + l_t2); Console.WriteLine("#Passed undo the previous split on GUI level"); } catch { Console.WriteLine("#Failed to undo the previous split on GUI level "); gflag = false; } try { IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); String r_start = txtedit.getViewer().Rows[0]["Start"].ToString(); String r_finsih = txtedit.getViewer().Rows[1]["Finish"].ToString(); String r_duration1 = txtedit.getViewer().Rows[0]["Time"].ToString(); String r_duration2 = txtedit.getViewer().Rows[1]["Time"].ToString(); double gap = ((Convert.ToDateTime(txtedit.getViewer().Rows[1]["Start"].ToString()) - Convert.ToDateTime(txtedit.getViewer().Rows[0]["Finish"].ToString()))).TotalSeconds; String r_slon = txtedit.getViewer().Rows[0]["sLongitude"].ToString(); String r_flon = txtedit.getViewer().Rows[1]["fLongitude"].ToString(); String r_slat = txtedit.getViewer().Rows[0]["sLatitude"].ToString(); String r_flat = txtedit.getViewer().Rows[1]["fLatitude"].ToString(); txtedit.joinTrips(day.getName(), name, "Trip_" + (Module.getIndex(name) + 1), t_pool); try { Assert.AreEqual(txtedit.getViewer().Rows[0]["Finish"].ToString(), t_f); Assert.AreEqual(txtedit.getViewer().Rows[0]["Start"].ToString(), t_s); Console.WriteLine("#Passed to compute the correct start and finish time"); } catch { Console.WriteLine("#Failed to compute the correct start and finish time "); fflag = false; } String flon = txtedit.getViewer().Rows[0]["fLongitude"].ToString(); String slat = txtedit.getViewer().Rows[0]["sLatitude"].ToString(); try { // Assert.AreEqual(flon, r_slon); // Assert.AreEqual(slat, r_flon); Console.WriteLine("#Passed to compute the correct start and finish coordinates"); } catch { Console.WriteLine("#Failed to compute the correct start and finish coordinates"); fflag = false; } Assert.AreEqual(fflag, true); Console.WriteLine("#Passed the test for undo the previous split on file level "); } catch { Console.WriteLine("#Failed the test for undo the previous split on file level -"); } } else if (temp["opt"] == "ins") { String name = (String)temp["data"]; int ts_init = t_pool.getSize(); MessageBox.Show(name); core.undo(temp); MessageBox.Show(ts_init + " " + t_pool.getSize()); try { Assert.AreEqual(ts_init, t_pool.getSize() + 1); // MessageBox.Show(l_t1 + " " + l_t2 + " " + t_pool.getByName(name).getFeatures().getChildNodes().getLength()); // Assert.AreEqual(t_pool.getByName(name).getFeatures().getChildNodes().getLength(), l_t1 + l_t2); Console.WriteLine("#Passed undo the previous insert on GUI level "); } catch { Console.WriteLine("#Failed to undo the previous insert on GUI level "); gflag = false; } } return(gflag && fflag); }
public Boolean split_test(String name, int index) { //create a kml folder by tripname IKmlFolder temp = t_pool.getByName(name); // get the current placemark and the pre placemark at a given index IKmlPlacemark sst = (IKmlPlacemark)temp.getFeatures().getChildNodes().item(index - 1); IKmlPlacemark st = (IKmlPlacemark)temp.getFeatures().getChildNodes().item(index); // get trip size, number of trips and number of columns(lat,long ,elapse time etc) int pt_size = temp.getFeatures().getChildNodes().getLength(); int init_size_t = t_pool.getSize(); core.split(st); //get index + 1 of the current trip String _name = "Trip_" + (Module.getIndex(name) + 1); Boolean gflag = true; Boolean fflag = true; try { int final_size_t = t_pool.getSize(); //compare the initial size of the t pool against the final t pool. Assert.AreEqual(init_size_t, final_size_t - 1); //compare the split index with the size of the first half of the splitted trip Assert.AreEqual(index, t_pool.getByName(name).getFeatures().getChildNodes().getLength()); // compare the split index with the size of the second half of the splitted trip Assert.AreEqual(pt_size - index, t_pool.getByName(_name).getFeatures().getChildNodes().getLength()); Console.WriteLine(" >>>>>>>>>>>> Passed the test for split the trip on GUI level <<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed the test for split the trip on GUI level <-----------"); gflag = false; } try { IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); String r_start = txtedit.getViewer().Rows[0]["Start"].ToString(); String r_finsih = txtedit.getViewer().Rows[0]["Finish"].ToString(); String r_duration = txtedit.getViewer().Rows[0]["Time"].ToString(); String r_slon = txtedit.getViewer().Rows[0]["sLongitude"].ToString(); String r_flon = txtedit.getViewer().Rows[0]["fLongitude"].ToString(); String r_slat = txtedit.getViewer().Rows[0]["sLatitude"].ToString(); String r_flat = txtedit.getViewer().Rows[0]["fLatitude"].ToString(); txtedit.splitTrip(day.getName(), Module.getIndex(name).ToString(), t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))), t_pool.getFinish(t_pool.getByName(name)), t_pool); try { Assert.AreEqual(txtedit.getViewer().Rows[0]["Finish"].ToString(), t_pool.getFinish(t_pool.getByName(name)).getName().ToString()); Assert.AreEqual(txtedit.getViewer().Rows[1]["Start"].ToString(), t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))).getName().ToString()); Console.WriteLine(" >>>>>>>>>>>> Succeed to compute the correct start and finish time <<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed to compute the correct start and finish time <-----------"); fflag = false; } try { double tp1 = Module.durationConverter(txtedit.getViewer().Rows[0]["Time"].ToString()); double gap = ((Convert.ToDateTime(txtedit.getViewer().Rows[1]["Start"].ToString()) - Convert.ToDateTime(txtedit.getViewer().Rows[0]["Finish"].ToString()))).TotalSeconds; double tp2 = Module.durationConverter(txtedit.getViewer().Rows[1]["Time"].ToString()); // MessageBox.Show(Module.durationConverter(txtedit.getViewer().Rows[0]["Time"].ToString()) + " " + t.ToString() + " " + Module.durationConverter(txtedit.getViewer().Rows[1]["Time"].ToString()) + " " + Module.durationConverter(r_duration)); Assert.AreEqual(Module.durationConverter(r_duration), tp1 + gap + tp2); Console.WriteLine(" >>>>>>>>>>>> Succeed to compute the correct trip duration <<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed to compute the correct the trip duration <-----------"); fflag = false; } try { String n_slon = txtedit.getViewer().Rows[1]["sLongitude"].ToString(); String n_slat = txtedit.getViewer().Rows[1]["sLatitude"].ToString(); String n_flon = txtedit.getViewer().Rows[0]["sLongitude"].ToString(); String n_flat = txtedit.getViewer().Rows[0]["sLatitude"].ToString(); String a_slon = Module.getCoordinates(t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))))["lon"].ToString(); String a_slat = Module.getCoordinates(t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))))["lat"].ToString(); String a_flon = Module.getCoordinates(t_pool.getStart(t_pool.getByName(name)))["lon"].ToString(); String a_flat = Module.getCoordinates(t_pool.getStart(t_pool.getByName(name)))["lat"].ToString(); /* * MessageBox.Show(n_slon+" "+a_slon); * MessageBox.Show(n_slat + " " + a_slat); * * MessageBox.Show(n_flon + " " + a_flon); * MessageBox.Show(n_flat + " " + a_flat); * * Assert.AreEqual(n_slat.Trim(), a_slat.Trim()); * Assert.AreEqual(n_slon.Trim(), a_slon.Trim()); * * Assert.AreEqual(n_flat.Trim(), a_flat.Trim()); * Assert.AreEqual(n_flon.Trim(), a_flon.Trim()); */ Console.WriteLine(" >>>>>>>>>>>> Succeed to compute the correct start and finish coordinates <<<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed to compute the correct start and finish coordinates <----------"); fflag = false; } Assert.AreEqual(true, fflag); Console.WriteLine(" >>>>>>>>>>>> Passed the test for split the trip on file level <<<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed the test for split the trip on file level <----------"); } return(gflag && fflag); }
public Boolean undo(Hashtable mem) { try { if (mem["opt"] == "del") { ArrayList rev = (ArrayList)mem["data"]; IKmlFolder _trip = (IKmlFolder)rev[1]; _trip.setVisibility(1); t_pool.add((String)rev[0], _trip, (String[])rev[2]); } else if (mem["opt"] == "spl") { ArrayList rev = (ArrayList)mem["data"]; IKmlFolder trip = (IKmlFolder)rev[1]; t_pool.insert((String)rev[0], trip, (String[])rev[2], ge.createStyle("")); trip.setVisibility(1); IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); day.getFeatures().appendChild(trip); } else if (mem["opt"] == "joi") { ArrayList rev = (ArrayList)mem["data"]; IKmlFolder temp = ge.createFolder(""); String name = (String)rev[0]; IKmlFolder[] sub = split(int.Parse((name.Split('_')[1])), t_pool.getByName(name), (IKmlPlacemark)rev[1], (String)rev[4]); IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); day.getFeatures().appendChild(sub[0]); day.getFeatures().appendChild(sub[1]); t_pool.insert(int.Parse((name.Split('_')[1])), sub[0], (String[])rev[2], sub[1], (String[])rev[3]); } else if (mem["opt"] == "ins") { String rev = (String)mem["data"]; IKmlFolder trip = t_pool.getByName(rev); trip.setVisibility(0); t_pool.remove(rev); } else if (mem["opt"] == "crt") { IKmlPlacemark pt = (IKmlPlacemark)mem["data"]; ge.getFeatures().removeChild(pt); } else if (mem["opt"] == "mk_start" || mem["opt"] == "mk_finish") { ArrayList rev = (ArrayList)mem["data"]; IKmlPlacemark pt = (IKmlPlacemark)rev[1]; IKmlFolder trip = t_pool.getByName((String)rev[0]); //trip.getFeatures().removeChild(pt); //ge.getFeatures().appendChild(pt); } else if (mem["opt"] == "tm_start") { ArrayList rev = (ArrayList)mem["data"]; IKmlFolder trip = t_pool.getByName((String)rev[0]); IKmlObjectList points = trip.getFeatures().getChildNodes(); // MessageBox.Show(points.getLength().ToString()+" "+rev.Count.ToString()); for (int i = rev.Count - 1; i != 0; i--) { points = trip.getFeatures().getChildNodes(); trip.getFeatures().insertBefore(rev[i], points.item(0)); } } else if (mem["opt"] == "tm_finish") { ArrayList rev = (ArrayList)mem["data"]; IKmlFolder trip = t_pool.getByName((String)rev[0]); IKmlObjectList points = trip.getFeatures().getChildNodes(); // MessageBox.Show(points.getLength().ToString()+" "+rev.Count.ToString()); for (int i = rev.Count - 1; i != 0; i--) { points = trip.getFeatures().getChildNodes(); trip.getFeatures().insertBefore(rev[i], points.item(points.getLength() - 1)); } } else if (mem["opt"] == "ch_color") { ArrayList rev = (ArrayList)mem["data"]; t_pool.ch_col((String)rev[0], (String)rev[1]); } return(true); } catch { return(false); } }
public Boolean split(IKmlPlacemark sp_point) { try { Hashtable cords = Module.getCoordinates(sp_point); IKmlFolder _trip = (IKmlFolder)sp_point.getParentNode(); _trip.setVisibility(0); String t_name = t_pool.getParent(sp_point.getName()); String[] t_att = t_pool.getTripDetailsForTrip(Module.getIndex(t_name).ToString()); ArrayList trip = new ArrayList(); trip.Add(t_name); trip.Add(_trip); trip.Add(t_att); record.spl_trip(trip); int index = int.Parse((t_name.Split('_')[1])); IKmlFolder[] sub = split(index, _trip, sp_point, null); IKmlPlacemark fn = t_pool.getFinish(sub[0]); Hashtable _cords = Module.getCoordinates(fn); String[] att_temp1 = (String[])t_att.Clone(); String[] att_temp2 = (String[])t_att.Clone(); /* * att_temp1[5] = fn.getName(); * att_temp2[4] = sp_point.getName(); * * att_temp1[6] = Module.duration(att_temp1[4], att_temp1[5]); * att_temp2[6] = Module.duration(att_temp2[4], att_temp2[5]); * * att_temp1[11] = _cords["lon"].ToString(); * att_temp1[12] = _cords["lat"].ToString(); * * att_temp2[9] = cords["lon"].ToString(); * att_temp2[10] = cords["lat"].ToString(); */ IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); day.getFeatures().appendChild(sub[0]); day.getFeatures().appendChild(sub[1]); /* * if (sub[0].getFeatures().getChildNodes().getLength() <= sub[1].getFeatures().getChildNodes().getLength()) * { * double distance = Module.calDistance(sub[0]); * att_temp1[7] = distance.ToString(); * att_temp2[7] = (double.Parse(t_att[7]) - distance).ToString(); * } * else * { * double distance = Module.calDistance(sub[1]); * att_temp2[7] = distance.ToString(); * att_temp1[7] = (double.Parse(t_att[7]) - distance).ToString(); * } */ /* * The duration of a trip from might be less than 0 when the program interpreter inconsistent kml and txt file * * chen */ /* try * { * att_temp1[8] = Math.Round((double.Parse(att_temp1[7]) / Module.durationConverter(att_temp1[6])), 3).ToString(); * att_temp2[8] = Math.Round((double.Parse(att_temp2[7]) / Module.durationConverter(att_temp2[6])), 3).ToString(); * } * catch * { * MessageBox.Show("kml and txt file doesn't match"); * att_temp2[8] = "-0"; * att_temp1[8] = "-0"; * } */ t_pool.insert(index, sub[0], att_temp1, sub[1], att_temp2); return(true); } catch { return(false); } }