rparedis 2 年之前
父节点
当前提交
d8bdd08077
共有 4 个文件被更改,包括 76 次插入13 次删除
  1. 13 0
      de2/add_datetime.py
  2. 29 0
      de2/planner.py
  3. 13 1
      mapper.py
  4. 21 12
      parquet/ct2de.py

+ 13 - 0
de2/add_datetime.py

@@ -0,0 +1,13 @@
+import pandas as pd
+
+df = pd.read_csv("results-de/IVEF.csv")
+starts = []
+ends = []
+
+for _, row in df.iterrows():
+	starts.append(pd.Timestamp(row["start"], unit="ms"))
+	ends.append(pd.Timestamp(row["end"], unit="ms"))
+df["start_time"] = starts
+df["end_time"] = ends
+
+df.to_csv("results-de/IVEF2.csv", index=False)

+ 29 - 0
de2/planner.py

@@ -0,0 +1,29 @@
+import json
+import random
+import pandas as pd
+from geoplotlib.utils import haversine
+
+with open("../paths/endpointsWGS84.json", 'r') as file:
+	endpoints = json.load(file)["features"]
+
+tugs = pd.read_excel("../20230405_Tugs.xlsx", dtype={"MMSI": str})
+
+tugss = []
+times = []
+route_src = []
+route_tgt = []
+tasks = []
+T = 0
+for i in range(100):
+	src = random.choice(endpoints)
+	tgt = random.choice(endpoints)
+	d = haversine(src["geometry"]["x"], src["geometry"]["y"], tgt["geometry"]["x"], tgt["geometry"]["y"])
+	T += d / random.normalvariate(5, 3)
+	tugss.append(random.choice(tugs["MMSI"]))
+	times.append(T)
+	route_src.append(src["attributes"]["NUMMER"])
+	route_tgt.append(tgt["attributes"]["NUMMER"])
+	tasks.append(random.choice(["tugging", "sailing"]))
+
+res = pd.DataFrame(data={"mmsi": tugss, "start": times, "source": route_src, "target": route_tgt, "task": tasks})
+res.to_csv("plan.csv", index=False)

文件差异内容过多而无法显示
+ 13 - 1
mapper.py


+ 21 - 12
parquet/ct2de.py

@@ -59,9 +59,9 @@ def analyze(fname):
 	vessel = Vessel(first["mmsi"], tmap[str(first["mmsi"])], first["ts"], -1, get_dock(first["lon"], first["lat"]),
 	                (first["lon"], first["lat"]), (first["lon"], first["lat"]), 0.0, tasks[task])
 
-	if exists("../results-de/%s-de.csv" % str(vessel.mmsi)):
-		print("Already done %s" % str(vessel.mmsi))
-		return None
+	# if exists("../results-de/%s-de.csv" % str(vessel.mmsi)):
+	# 	print("Already done %s" % str(vessel.mmsi))
+	# 	return None
 
 	in_dock = get_dock(first["lon"], first["lat"]) != ""
 	time = first["ts"]
@@ -69,11 +69,20 @@ def analyze(fname):
 		# Check if you are at a new location
 		new_loc = get_dock(row["lon"], row["lat"])
 
+		# dd = haversine(vessel.lonlat_t[0], vessel.lonlat_t[1], row["lon"], row["lat"])
+		# delta = (row["ts"] - time) / 1000
+		# # cutoff point:
+		# if dd / delta > 6:
+		# 	print("Weird velocity:", dd, delta, dd/delta)
+
 		if new_loc != vessel.location:
 			# fix for teleportation issue
 			# add intermediate points on which dock/sailing transition is assumed
 			# it is assumed that these points lie on the theoretical trajectory => APPROXIMATION
 
+			# path = [vessel.lonlat_t, (row["lon"], row["lat"])]
+			# dists = [haversine(*vessel.lonlat_t, row["lon"], row["lat"])]
+
 			path, dists = pathfinder(graph, vessel.lonlat_t, (row["lon"], row["lat"]))
 			tot_dist = sum(dists)
 
@@ -138,12 +147,12 @@ if __name__ == '__main__':
 	# print(get_dock(4.242435, 51.27712))
 	# import sys
 	# analyze(sys.argv[2])
-	# analyze("results/205257290.csv")
-
-	TFILE = "tugs.csv"
-	tugs = pd.read_csv(TFILE)
-	mmsi = tugs["MMSI"].dropna().astype(np.int32)
-	for idx in mmsi:
-		print("checking", idx)
-		analyze("results/%s.csv" % str(idx))
-		print(idx, "done")
+	analyze("results/205627000.csv")
+
+	# TFILE = "tugs.csv"
+	# tugs = pd.read_csv(TFILE)
+	# mmsi = tugs["MMSI"].dropna().astype(np.int32)
+	# for idx in mmsi:
+	# 	print("checking", idx)
+	# 	analyze("results/%s.csv" % str(idx))
+	# 	print(idx, "done")