/// <summary> /// Runs the processor /// </summary> /// <param name="Request"></param> /// <returns></returns> public async Task <LogScanResponse> Run(LogScanRequest Request) { m_logger.LogInformation(LogEventId.LogScanStart, string.Format("Sending {0} Scans to MongoDB.", Request.Scans.Count)); LogScanResponse Response = null; foreach (ScanModel scan in Request.Scans) { var coords = new GeoJson2DCoordinates(scan.Kinematics.Latitude, scan.Kinematics.Longitude); scan.Kinematics.Location = GeoJson.Point <GeoJson2DCoordinates>(coords); /// Was a local configuraiton used in this scan? if (scan.Configuration != null && scan.Configuration.Count != 0) { // if so, then register that configuration and set the global Id to it scan.GlobalConfigurationId = await m_settingServiceClient.RegisterConfigurationAsync(scan.Configuration); } } try { await m_scanCollection.InsertManyAsync(Request.Scans); Response = new LogScanResponse(true); m_logger.LogInformation(LogEventId.LogScanSuccess, "Scans inserted into MongoDB."); } catch (Exception e) { m_logger.LogError(LogEventId.LogScanError, "Error Logging scans: {0}", e.ToString()); } return(Response); }
public Mission FIndNearestMission(GeoJson2DCoordinates coordinates) { var point = GeoJson.Point(GeoJson.Geographic(coordinates.X, coordinates.Y)); var locationQuery = new FilterDefinitionBuilder <Mission>().Near(tag => tag.Location, point); // var filter = Builders<Mission>.Filter.Near(x => x.Location, coordinates.X, coordinates.Y); var result = _missions.Find(locationQuery).FirstOrDefault(); return(result); }
public async Task <PDVEntity> GetNearst(double longt, double lat) { var coord = new GeoJson2DCoordinates(longt, lat); var geo = new GeoJsonPoint <GeoJson2DCoordinates>(coord); var filterBuiler = new FilterDefinitionBuilder <PDVEntity>(); var filterInAreas = filterBuiler.GeoIntersects(p => p.coverageArea, geo); var filterNear = filterBuiler.Near(p => p.address, geo); var filter = filterBuiler.And(filterInAreas, filterNear); var collection = Context.GetCollection <PDVEntity>(TypeName); var indexKey = new IndexKeysDefinitionBuilder <PDVEntity>().Geo2DSphere(p => p.address); var index = new CreateIndexModel <PDVEntity>(indexKey); collection.Indexes.CreateOne(index); var list = await Context.GetCollection <PDVEntity>(TypeName).FindAsync(filter); return(list.FirstOrDefault()); }
private static Coordinate From2DCoordinates(GeoJson2DCoordinates c) { return(new Coordinate(c.X, c.Y)); }