package lastkilometer.O_eight; import java.io.IOException; import java.util.List; import java.util.Map; import jsprit.core.util.Coordinate; import lastkilometer.readCSV.BasicClass; import lastkilometer.readCSV.ReadAssignedOrder_id; import lastkilometer.readCSV.ReadCSV; public abstract class ReadData extends BasicClass{ //读取已经配送的订单id ReadAssignedOrder_id readAssignedOrder_id =new ReadAssignedOrder_id(); ReadCSV readCSV=new ReadCSV(); Map<String, double[]> Site_Lng_Lat=null;//网点经纬度 Map<String, double[]> Spot_Lng_Lat=null;//配送点经纬度 Map<String, double[]> Shop_Lng_Lat=null;//商户经纬度 Map<String, Map<String, Map<String, Integer>>> ESO=null;//读取电商订单 Map<String, Map<String, Map<String, List<Object>>>> OO=null;//读取O2O订单 Map<String,List<String>> OIB=null;//读取离网点最近商户 public ReadData() throws NumberFormatException, IOException{ Site_Lng_Lat=readCSV.readSite_Lng_Lat();//读取网点经纬度 Spot_Lng_Lat=readCSV.readSpot_Lng_Lat();//读取配送点经纬度 Shop_Lng_Lat=readCSV.readShop_Lng_Lat();//读取商户的经纬度 //读取电商订单 ESO=readCSV.readElectricitySuppliersOrder();// Map<Site_id,Map<Spot_id,Map<Order_id,Num>>> //读取O2O订单 OO=readCSV.readO2OOrder();//Map<Shop_id,Map<Spot_id,Map<Order_id,List>>> List.get(0)=Pickup_time List.get(1)=Delivery_time List.get(2)=Num //读取离网点最近商户 OIB=readCSV.readO2OIsBelong(); } public int calculateDistance(double lng1, double lat1, double lng2,double lat2) { double lat = (lat1 - lat2) / 2.0; double lng = (lng1 - lng2) / 2.0; double cache = Math.sin(Math.PI / 180 * lat) * Math.sin(Math.PI / 180 * lat) + Math.cos(Math.PI / 180 * lat1) * Math.cos(Math.PI / 180 * lat2) * Math.sin(Math.PI / 180 * lng) * Math.sin(Math.PI / 180 * lng); double R = 6378137; double S = 2 * R * Math.asin(Math.sqrt(cache)); return (int) Math.round(S/250.0); } }