def getDataFromPos(pos): detail = [] lnglat = [] number = 0 for i in pos: number += 1 lng = intToCoordinate(i.Lon) lat = intToCoordinate(i.Lat) lnglat_info = {'lng': lng, 'lat': lat} lnglat.append(lnglat_info) info = {} info.update(id=i.ROWID, mmsi=i.mmsi, source=i.source, lat=intToCoordinate(i.Lat), lon=intToCoordinate(i.Lon), sog=i.Sog, cog=i.Cog, hdg=i.Hdg, rot=i.Rot, navastaus=i.Navastaus) info.update(updatetime=timestampToDatetime(i.UpdateTime, format='sec')) info.update(inserttime=i.InsertTime.strftime('%Y-%m-%d %H:%M:%S')) detail.append(info) return [{'num': number, 'detail': detail, 'lnglat': lnglat}]
def get(self): pos = Pos.query.filter_by(mmsi=431008147) lnglat = [] for i in pos: lng = intToCoordinate(i.Lon) lat = intToCoordinate(i.Lat) info = {'lng': lng, 'lat': lat} lnglat.append(info) # return {'mmsi': pos[1].mmsi, 'lnglat': lnglat} return [{'value': 1, 'lnglat': lnglat}]
def get(self): # pos = Pos.query.filter_by(updatetime=1502354830) pos = Pos.query.filter_by(mmsi=235070199) data = [] for i in pos: info = {} info.update(id=i.ROWID, mmsi=i.mmsi, source=i.source, lat=intToCoordinate(i.Lat), lon=intToCoordinate(i.Lon), sog=i.Sog, cog=i.Cog, hdg=i.Hdg, rot=i.Rot, navastaus=i.Navastaus, updatetime=i.UpdateTime) info.update(inserttime=i.InsertTime.strftime('%Y-%m-%d %H:%M:%S')) data.append(info) return {'pos': data}
def post(self): args = self.parser.parse_args() point1 = args['lnglat_top_left'] point2 = args['lnglat_bottom_right'] eps = args['eps'] minpts = args['minpts'] point1_lng = CoordinateToInt(point1.split(',')[0]) point1_lat = CoordinateToInt(point1.split(',')[1]) point2_lng = CoordinateToInt(point2.split(',')[0]) point2_lat = CoordinateToInt(point2.split(',')[1]) points_list = [] pos = Pos.query.filter( and_(Pos.Lat > point2_lat, Pos.Lat < point1_lat, Pos.Lon > point1_lng, Pos.Lon < point2_lng)) for i in pos: point_list = [intToCoordinate(i.Lon), intToCoordinate(i.Lat)] points_list.append(point_list) res = dbscan_bmap(points_list, eps, minpts) return res
def post(self): args = self.parser.parse_args() point1 = args['lnglat_top_left'] point2 = args['lnglat_bottom_right'] point1_lng = CoordinateToInt(point1.split(',')[0]) point1_lat = CoordinateToInt(point1.split(',')[1]) point2_lng = CoordinateToInt(point2.split(',')[0]) point2_lat = CoordinateToInt(point2.split(',')[1]) pos = Pos.query.filter( and_(Pos.Lat > point2_lat, Pos.Lat < point1_lat, Pos.Lon > point1_lng, Pos.Lon < point2_lng)) lnglat = [] number = 0 for i in pos: lng = intToCoordinate(i.Lon) lat = intToCoordinate(i.Lat) info = {'lng': lng, 'lat': lat} lnglat.append(info) number += 1 return [{'number': number, 'lnglat': lnglat}]
def get(self): args = self.parser.parse_args() point1 = args['top'] point2 = args['bottom'] stime = '20170809 16:00' etime = '20170809 16:10' point1_lng = CoordinateToInt(point1.split(',')[0]) point1_lat = CoordinateToInt(point1.split(',')[1]) point2_lng = CoordinateToInt(point2.split(',')[0]) point2_lat = CoordinateToInt(point2.split(',')[1]) points_list = [] pos = Pos.query.filter( and_(Pos.InsertTime >= stime, Pos.InsertTime <= etime, Pos.Lat > point2_lat, Pos.Lat < point1_lat, Pos.Lon > point1_lng, Pos.Lon < point2_lng)) for i in pos: point_list = [ float(intToCoordinate(i.Lon)), float(intToCoordinate(i.Lat)) ] points_list.append(point_list) # print(points_list) return KNN(points_list)