Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
 private static Coordinate From2DCoordinates(GeoJson2DCoordinates c)
 {
     return(new Coordinate(c.X, c.Y));
 }