private Boolean split(IKmlPlacemark sp_point) { try{ Hashtable cords = 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.getAttByName(t_name); 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, sp_point.getStyleUrl()); IKmlPlacemark fn = t_pool.getFinish(sub[0]); Hashtable _cords = 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] = duration(att_temp1[4], att_temp1[5]); att_temp2[6] = 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 = calDistance(sub[0]); att_temp1[7] = distance.ToString(); att_temp2[7] = (double.Parse(t_att[7]) - distance).ToString(); } else { double distance = 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]) / durationConverter(att_temp1[6])), 3).ToString(); att_temp2[8] = Math.Round((double.Parse(att_temp2[7]) / 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; } }
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); } }