/* * add a new trip to the end of trippool */ public void add(IKmlFolder trip) { IKmlFolder addTrip = trip; IKmlObjectList points = trip.getFeatures().getChildNodes(); IKmlPlacemark startPoint = (IKmlPlacemark)points.item(0); IKmlPlacemark finishPoint = (IKmlPlacemark)points.item(points.getLength() - 1); String startTime = startPoint.getName(); String finishTime = finishPoint.getName(); String startLong = Module.getCoordinates(startPoint)["lon"].ToString(); String startLat = Module.getCoordinates(startPoint)["lat"].ToString(); String time = (DateTime.Parse(finishTime) - DateTime.Parse(startTime)).ToString(); String distance = Module.calDistance(trip).ToString(); String finishLong = Module.getCoordinates(finishPoint)["lon"].ToString(); String finishLat = Module.getCoordinates(finishPoint)["lat"].ToString(); String[] timeSplit = new String[3]; timeSplit = time.ToString().Split(':'); double coEff = (3600 / (double)((Convert.ToInt32(timeSplit[0]) * 3600) + (Convert.ToInt32(timeSplit[1]) * 60) + (Convert.ToInt32(timeSplit[2])))); String speed = Math.Round((double.Parse(distance) * coEff), 3).ToString(); _core.Add(addTrip); //_attr.Add(addAtt); TripDetails.Rows.Add(tripCount, Day, "-", HouseHoldID, "-", Date, WeekDay, startTime, finishTime, time, distance, speed, startLong, startLat, finishLong, finishLat, "-"); ++tripCount; }
public Hashtable getFocus(String name) { Hashtable output = new Hashtable(); IKmlFolder trip = getByName(name); IKmlPlacemark s_point = getStart(trip); IKmlPlacemark f_point = getFinish(trip); Hashtable s_cords = Module.getCoordinates(s_point); Hashtable f_cords = Module.getCoordinates(f_point); float m_lon = (float.Parse(s_cords["lon"].ToString()) + float.Parse(f_cords["lon"].ToString())) / 2; float m_lat = (float.Parse(s_cords["lat"].ToString()) + float.Parse(f_cords["lat"].ToString())) / 2; output["lon"] = m_lon; output["lat"] = m_lat; return(output); }
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 void addAtPosition(IKmlFolder trip, int tripNumber) { IKmlFolder addTrip = trip; IKmlObjectList points = trip.getFeatures().getChildNodes(); IKmlPlacemark startPoint = (IKmlPlacemark)points.item(0); IKmlPlacemark finishPoint = (IKmlPlacemark)points.item(points.getLength() - 1); String startTime = startPoint.getName(); String finishTime = finishPoint.getName(); String startLong = Module.getCoordinates(startPoint)["lon"].ToString(); String startLat = Module.getCoordinates(startPoint)["lat"].ToString(); String time = (DateTime.Parse(finishTime) - DateTime.Parse(startTime)).ToString(); String distance = Module.calDistance(trip).ToString(); String finishLong = Module.getCoordinates(finishPoint)["lon"].ToString(); String finishLat = Module.getCoordinates(finishPoint)["lat"].ToString(); String[] timeSplit = new String[3]; timeSplit = time.ToString().Split(':'); double coEff = (3600 / (double)((Convert.ToInt32(timeSplit[0]) * 3600) + (Convert.ToInt32(timeSplit[1]) * 60) + (Convert.ToInt32(timeSplit[2])))); String speed = Math.Round((double.Parse(distance) * coEff), 3).ToString(); // _core.Add(addTrip); //_attr.Add(addAtt); DataRow newRow = NewRowDataTableCustom(); newRow["KMLTrip"] = tripCount; newRow["HouseHoldID"] = HouseHoldID; newRow["Trip"] = "-"; newRow["Person"] = "-"; newRow["Day"] = Day; newRow["Date"] = Date; newRow["WeekDay"] = WeekDay; newRow["Start Time"] = startTime; newRow["Finish Time"] = finishTime; newRow["Time"] = time; newRow["Distance"] = distance; newRow["Speed"] = speed; newRow["StartLong"] = startLong; newRow["StartLat"] = startLat; newRow["Finishlong"] = finishLong; newRow["FinishLat"] = finishLat; newRow["Remain"] = "-"; TripDetails.Rows.InsertAt(newRow, tripNumber); resetTripCount(); }
public void makeFinish(String trip, IKmlPlacemark newFinishPoint, TripPool t_pool) { //This function will change the starting time of a trip //First we'll find the row to edit. The trip should match for (int i = 0; i < databaseViewer.Rows.Count; ++i) { if (databaseViewer.Rows[i]["KMLTrip"].ToString().Equals(trip)) { addToUndotable(databaseViewer.Rows[i]); addToUndoTypeTable("Make Finish"); databaseViewer.Rows[i]["Finish"] = newFinishPoint.getName(); databaseViewer.Rows[i]["fLongitude"] = Module.getCoordinates(newFinishPoint)["lon"]; databaseViewer.Rows[i]["fLatitude"] = Module.getCoordinates(newFinishPoint)["lat"]; t_pool.getTripDetails().Rows[i]["FinishLong"] = Module.getCoordinates(newFinishPoint)["lon"]; t_pool.getTripDetails().Rows[i]["FinishLat"] = Module.getCoordinates(newFinishPoint)["lat"]; t_pool.getTripDetails().Rows[i]["Finish Time"] = newFinishPoint.getName(); t_pool.resetTripData("Trip_" + trip); completeMissingData(t_pool, trip); } } }
public void resetTripData(String trip) { IKmlFolder tripData = getByName(trip); for (int i = 0; i != TripDetails.Rows.Count; ++i) { if (TripDetails.Rows[i]["KMLTrip"].ToString().Trim().Equals(Module.getIndex(trip).ToString())) { // MessageBox.Show("FCKING "+trip); IKmlFolder addTrip = tripData; IKmlObjectList points = tripData.getFeatures().getChildNodes(); IKmlPlacemark startPoint = (IKmlPlacemark)points.item(0); IKmlPlacemark finishPoint = (IKmlPlacemark)points.item(points.getLength() - 1); String startTime = startPoint.getName(); String finishTime = finishPoint.getName(); String startLong = Module.getCoordinates(startPoint)["lon"].ToString(); String startLat = Module.getCoordinates(startPoint)["lat"].ToString(); String time = (Convert.ToDateTime(finishTime) - Convert.ToDateTime(startTime)).ToString(); String distance = Module.calDistance(tripData).ToString(); String finishLong = Module.getCoordinates(finishPoint)["lon"].ToString(); String finishLat = Module.getCoordinates(finishPoint)["lat"].ToString(); String[] timeSplit = new String[3]; timeSplit = time.ToString().Split(':'); double coEff = (3600 / (double)((Convert.ToInt32(timeSplit[0]) * 3600) + (Convert.ToInt32(timeSplit[1]) * 60) + (Convert.ToInt32(timeSplit[2])))); String speed = Math.Round((double.Parse(distance) * coEff), 3).ToString(); TripDetails.Rows[i]["Start Time"] = startTime; TripDetails.Rows[i]["Finish Time"] = finishTime; TripDetails.Rows[i]["Time"] = time; TripDetails.Rows[i]["Distance"] = distance; TripDetails.Rows[i]["Speed"] = speed; TripDetails.Rows[i]["StartLong"] = startLong; TripDetails.Rows[i]["StartLat"] = startLat; TripDetails.Rows[i]["Finishlong"] = finishLong; TripDetails.Rows[i]["FinishLat"] = finishLat; TripDetails.Rows[i]["Remain"] = "-"; } } }
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 void splitTrip(String day, String trip, IKmlPlacemark s_point, IKmlPlacemark f_point, TripPool t_pool) { // MessageBox.Show(tripData.getFeatures().getChildNodes().getLength().ToString() + " " + point.getName() +" "+point.getId()); Module testModule = new Module(); //This function will split a trip in the text file //First we'll need to find the day we're talking about for (int i = 0; i < databaseViewer.Rows.Count; ++i) { //once we have found the right day we'll go and find the right trip if (databaseViewer.Rows[i]["KMLTrip"].ToString() == trip) { //Once we have found the trip we'll first have to add it to the Undo Table //First we'll add the entry of what type of action was performed. addToUndoTypeTable("Split"); addToUndotable(databaseViewer.Rows[i]); // So we've added the whole row back into place. //once we have found our trip record we'll make the further modifications //Now the split point of the trip will become the finishing point of the original trip. Before we insert the new values, we should store the other values first String oldFinishTime = databaseViewer.Rows[i]["Finish"].ToString(); String oldFinishLat = databaseViewer.Rows[i]["fLatitude"].ToString(); String oldFinishLong = databaseViewer.Rows[i]["fLongitude"].ToString(); //Now that we've stored these values, we can safely replace these fields with the new data. databaseViewer.Rows[i]["Finish"] = f_point.getName(); t_pool.getTripDetails().Rows[i]["Finish Time"] = f_point.getName(); Hashtable coords = Module.getCoordinates(f_point); databaseViewer.Rows[i]["fLatitude"] = coords["lat"]; databaseViewer.Rows[i]["fLongitude"] = coords["lon"]; t_pool.getTripDetails().Rows[i]["FinishLat"] = coords["lat"]; t_pool.getTripDetails().Rows[i]["FinishLong"] = coords["long"]; t_pool.resetTripData("Trip_" + trip); //By this time the original trip would have been modified correctly. Now we need to create a new trip and set it's fields correctly //Now we need to get the details of the next point // point = getNextPoint(tripData, point); //This should give us the next point after the split point. coords = Module.getCoordinates(s_point); //Now once we have all the information we'll create a new record in the table DataRow newRow = NewRowDataTableCustom(); DataRow newRowKML = t_pool.NewRowDataTableCustom(); //Most of the information will be the same as the current record newRow["Day"] = databaseViewer.Rows[i]["Day"]; newRow["Household"] = databaseViewer.Rows[i]["HouseHold"]; newRow["Person"] = databaseViewer.Rows[i]["Person"]; newRow["Date"] = databaseViewer.Rows[i]["Date"]; newRow["Weekday"] = databaseViewer.Rows[i]["Weekday"]; newRow["Remain"] = databaseViewer.Rows[i]["Remain"]; //Now we'll add the new data newRow["KMLTrip"] = (Convert.ToInt32(databaseViewer.Rows[i]["KMLTrip"]) + 1).ToString(); newRow["Start"] = s_point.getName(); newRow["Finish"] = oldFinishTime; newRow["sLongitude"] = coords["lon"]; newRow["sLatitude"] = coords["lat"]; newRow["fLongitude"] = oldFinishLong; newRow["fLatitude"] = oldFinishLat; //Now we'll add this row in the dataTable databaseViewer.Rows.InsertAt(newRow, i + 1); newRowKML = copyDataRowContents(newRow, newRowKML); t_pool.getTripDetails().Rows.InsertAt(newRowKML, i + 1); //Now once everything is done, we'll reset the tripCount for that day resetTripCountForDay(); t_pool.resetTripCount(); t_pool.resetTripData("Trip_" + (Convert.ToInt32(trip) + 1).ToString()); completeMissingData(t_pool); } } }
public Boolean insert_test(String name) { String _name = "Trip_" + (Module.getIndex(name) + 1); //create a kml folder by tripname IKmlFolder temp = t_pool.getByName(name); IKmlFolder temp2 = 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(); int init_size_a = t_pool.getAttrs().Count; // //get the attribute data by trip name // String[] att = t_pool.getAttByName(name); // MessageBox.Show((Module.getIndex(name) + 1).ToString()); core.insert(name, _name); //get index + 1 of the current trip Boolean gflag = true; // Boolean fflag = true; try { int final_size_t = t_pool.getSize(); //CASE 1: compare the initial size of the t pool against the final t pool. Assert.AreEqual(init_size_t, final_size_t - 1); //Case 2: Trip is inserted between the two selected trips Assert.AreEqual(temp, t_pool.getByName(name)); Assert.AreEqual(temp2, t_pool.getByName("Trip_" + (Module.getIndex(name) + 2))); Console.WriteLine("#Passed the test for insert the trip on GUI level "); } catch { Console.WriteLine("#Failed the test for insert the trip on GUI level "); gflag = false; } try { // Test start point of newly inserted trip start pt= end pt of previous trip, finish pt = start pt of next trip String tp1_flon = Module.getCoordinates(t_pool.getFinish(t_pool.getByName(name)))["lon"].ToString(); String tp1_flat = Module.getCoordinates(t_pool.getFinish(t_pool.getByName(name)))["lat"].ToString(); String tp2_slon = Module.getCoordinates(t_pool.getStart(t_pool.getByName(_name)))["lon"].ToString(); String tp2_slat = Module.getCoordinates(t_pool.getStart(t_pool.getByName(_name)))["lat"].ToString(); String tp2_flon = Module.getCoordinates(t_pool.getFinish(t_pool.getByName(_name)))["lon"].ToString(); String tp2_flat = Module.getCoordinates(t_pool.getFinish(t_pool.getByName(_name)))["lat"].ToString(); String tp3_slon = Module.getCoordinates(t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 2))))["lon"].ToString(); String tp3_slat = Module.getCoordinates(t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 2))))["lat"].ToString(); Assert.AreEqual(tp2_slon, tp1_flon); Assert.AreEqual(tp2_slat, tp1_flat); //Start trip 2(lon,lat) = End trip 1(lon,lat) Assert.AreEqual(tp2_flon, tp3_slon); Assert.AreEqual(tp2_flat, tp3_slat); // End trip 2(lon,lat) = Start trip 3(lon,lat) Console.WriteLine("#Passed to compute the correct start and finish coordinates"); } catch { Console.WriteLine("#Failed to compute the correct start and finish coordinates"); gflag = false; } try { Console.WriteLine("#Passed the test for Insert the trip on file level"); } catch { Console.WriteLine("#Failed the test for Insert the trip on file level"); gflag = false; } return(gflag); }
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 insert(String tp1, String tp2) { try { // Get the end placemark of the 1st trip and the start placemark of the second trip IKmlPlacemark tp1fn = t_pool.getFinish(t_pool.getByName(tp1)); IKmlPlacemark tp2st = t_pool.getStart(t_pool.getByName(tp2)); //create a place mark to store the new place mark IKmlPlacemark start = ge.createPlacemark(""); IKmlPlacemark finish = ge.createPlacemark(""); start.setName(tp1fn.getName()); finish.setName(tp2st.getName()); IKmlPoint sp = ge.createPoint(""); IKmlPoint fp = ge.createPoint(""); IKmlPlacemark _temp = ge.createPlacemark(""); IKmlLineString temp = ge.createLineString(""); // Retrieve the coordinates of the two trips Hashtable cds1 = Module.getCoordinates(tp1fn); Hashtable cds2 = Module.getCoordinates(tp2st); sp.setLatLng((double)cds1["lat"], (double)cds1["lon"]); start.setGeometry(sp); fp.setLatLng((double)cds2["lat"], (double)cds2["lon"]); finish.setGeometry(fp); String color = randomCol(); IKmlStyleMap sm = ge.createStyleMap(""); IKmlStyle normal = mkStyle(color, @"http://maps.google.com/mapfiles/kml/paddle/wht-blank.png", (float)0.3); IKmlStyle highlight = mkStyle(color, @"http://maps.google.com/mapfiles/kml/paddle/wht-blank.png", (float)0.4); sm.setNormalStyle(normal); sm.setHighlightStyle(highlight); start.setStyleSelector(sm); finish.setStyleSelector(sm); temp.getCoordinates().pushLatLngAlt((double)cds1["lat"], (double)cds1["lon"], 0); temp.getCoordinates().pushLatLngAlt((double)cds2["lat"], (double)cds2["lon"], 0); _temp.setGeometry(temp); IKmlStyle sty = ge.createStyle(""); sty.getLineStyle().setWidth((float)4); sty.getLineStyle().getColor().set(color); _temp.setStyleSelector(sty); //create a new KML folder for the new trip and append the tmp features of the previous trip IKmlFolder temp1 = ge.createFolder(""); temp1.getFeatures().appendChild(start); temp1.getFeatures().appendChild(_temp); temp1.getFeatures().appendChild(finish); String[] attributes = new String[14]; //Add the new trip to the trip pools t_pool.add(tp2, temp1, attributes); ge.getFeatures().appendChild(temp1); // record the insert action for undo action record.ins_trip(tp2); 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); } }