public void TestSetSphericalTrue() { var options = GeoNearOptions.SetSpherical(true); var expected = "{ 'spherical' : true }".Replace("'", "\""); Assert.AreEqual(expected, options.ToJson()); }
public void TestSetMaxDistance() { var options = GeoNearOptions.SetMaxDistance(1.5); var expected = "{ 'maxDistance' : 1.5 }".Replace("'", "\""); Assert.AreEqual(expected, options.ToJson()); }
public void TestSetSphericalFalse() { var options = GeoNearOptions.SetSpherical(false); var expected = "{ }"; Assert.AreEqual(expected, options.ToJson()); }
public void TestSetDistanceMultiplier() { var options = GeoNearOptions.SetDistanceMultiplier(1.5); var expected = "{ 'distanceMultiplier' : 1.5 }".Replace("'", "\""); Assert.AreEqual(expected, options.ToJson()); }
public void TestGeoNearSphericalTrue() { if (collection.Exists()) { collection.Drop(); } collection.Insert(new Place { Location = new[] { -74.0, 40.74 }, Name = "10gen", Type = "Office" }); collection.Insert(new Place { Location = new[] { -75.0, 40.74 }, Name = "Two", Type = "Coffee" }); collection.Insert(new Place { Location = new[] { -74.0, 41.73 }, Name = "Three", Type = "Coffee" }); collection.CreateIndex(IndexKeys.GeoSpatial("Location")); var options = GeoNearOptions.SetSpherical(true); var result = collection.GeoNearAs <Place>(Query.Null, -74.0, 40.74, 100, options); Assert.IsTrue(result.Ok); Assert.AreEqual("onlinetests.testcollection", result.Namespace); Assert.IsTrue(result.Stats.AverageDistance >= 0.0); Assert.IsTrue(result.Stats.BTreeLocations >= 0); Assert.IsTrue(result.Stats.Duration >= TimeSpan.Zero); Assert.IsTrue(result.Stats.MaxDistance >= 0.0); Assert.IsTrue(result.Stats.NumberScanned >= 0); Assert.IsTrue(result.Stats.ObjectsLoaded >= 0); Assert.AreEqual(3, result.Hits.Count); var hit0 = result.Hits[0]; Assert.IsTrue(hit0.Distance == 0.0); Assert.AreEqual(-74.0, hit0.RawDocument["Location"].AsBsonArray[0].AsDouble); Assert.AreEqual(40.74, hit0.RawDocument["Location"].AsBsonArray[1].AsDouble); Assert.AreEqual("10gen", hit0.RawDocument["Name"].AsString); Assert.AreEqual("Office", hit0.RawDocument["Type"].AsString); // with spherical true "Two" is considerably closer than "Three" var hit1 = result.Hits[1]; Assert.IsTrue(hit1.Distance > 0.0); Assert.AreEqual(-75.0, hit1.RawDocument["Location"].AsBsonArray[0].AsDouble); Assert.AreEqual(40.74, hit1.RawDocument["Location"].AsBsonArray[1].AsDouble); Assert.AreEqual("Two", hit1.RawDocument["Name"].AsString); Assert.AreEqual("Coffee", hit1.RawDocument["Type"].AsString); var hit2 = result.Hits[2]; Assert.IsTrue(hit2.Distance > 0.0); Assert.IsTrue(hit2.Distance > hit1.Distance); Assert.AreEqual(-74.0, hit2.RawDocument["Location"].AsBsonArray[0].AsDouble); Assert.AreEqual(41.73, hit2.RawDocument["Location"].AsBsonArray[1].AsDouble); Assert.AreEqual("Three", hit2.RawDocument["Name"].AsString); Assert.AreEqual("Coffee", hit2.RawDocument["Type"].AsString); }
public void TestSetAll() { var options = GeoNearOptions .SetDistanceMultiplier(1.5) .SetMaxDistance(2.5) .SetSpherical(true); var expected = "{ 'distanceMultiplier' : 1.5, 'maxDistance' : 2.5, 'spherical' : true }".Replace("'", "\""); Assert.AreEqual(expected, options.ToJson()); }
public void TestGeoNearGeneric() { if (collection.Exists()) { collection.Drop(); } collection.Insert(new Place { Location = new[] { 1.0, 1.0 }, Name = "One", Type = "Museum" }); collection.Insert(new Place { Location = new[] { 1.0, 2.0 }, Name = "Two", Type = "Coffee" }); collection.Insert(new Place { Location = new[] { 1.0, 3.0 }, Name = "Three", Type = "Library" }); collection.Insert(new Place { Location = new[] { 1.0, 4.0 }, Name = "Four", Type = "Museum" }); collection.Insert(new Place { Location = new[] { 1.0, 5.0 }, Name = "Five", Type = "Coffee" }); collection.CreateIndex(IndexKeys.GeoSpatial("Location")); var options = GeoNearOptions .SetDistanceMultiplier(1) .SetMaxDistance(100); var result = collection.GeoNearAs <Place>(Query.Null, 0.0, 0.0, 100, options); Assert.IsTrue(result.Ok); Assert.AreEqual("onlinetests.testcollection", result.Namespace); Assert.IsTrue(result.Stats.AverageDistance >= 0.0); Assert.IsTrue(result.Stats.BTreeLocations >= 0); Assert.IsTrue(result.Stats.Duration >= TimeSpan.Zero); Assert.IsTrue(result.Stats.MaxDistance >= 0.0); Assert.IsTrue(result.Stats.NumberScanned >= 0); Assert.IsTrue(result.Stats.ObjectsLoaded >= 0); Assert.AreEqual(5, result.Hits.Count); Assert.IsTrue(result.Hits[0].Distance > 1.0); Assert.AreEqual(1.0, result.Hits[0].RawDocument["Location"].AsBsonArray[0].AsDouble); Assert.AreEqual(1.0, result.Hits[0].RawDocument["Location"].AsBsonArray[1].AsDouble); Assert.AreEqual("One", result.Hits[0].RawDocument["Name"].AsString); Assert.AreEqual("Museum", result.Hits[0].RawDocument["Type"].AsString); var place = result.Hits[1].Document; Assert.AreEqual(1.0, place.Location[0]); Assert.AreEqual(2.0, place.Location[1]); Assert.AreEqual("Two", place.Name); Assert.AreEqual("Coffee", place.Type); }
public void TestGeoNear() { database = server.GetDatabase("osm"); var collection = database.GetCollection("map"); var query = Query.EQ("properties.amenity", new BsonString("pub")); // coordinates for the excel centre double lon = 51.5060089; double lat = 0.0371037; var earthRadius = 6378.0; // km var rangeInKm = 3000.0; // km var options = GeoNearOptions .SetMaxDistance(rangeInKm / earthRadius /* to radians */) .SetSpherical(true); var results = collection.GeoNear(query, lat, lon, 10, options); Assert.AreEqual(10, results.Hits.Count); }
static void Main(string[] args) { var client = new MongoClient(connectionString); var server = client.GetServer(); var database = server.GetDatabase("osm"); var collection = database.GetCollection("map"); var query = Query.EQ("properties.amenity", new BsonString("pub")); double lon = 51.5060089; double lat = 0.0371037; var earthRadius = 6378.0; // km var rangeInKm = 3000.0; // km var options = GeoNearOptions .SetMaxDistance(rangeInKm / earthRadius /* to radians */) .SetSpherical(true); var results = collection.GeoNear(query, lat, lon, 10, options); foreach (var result in results.Hits) { try { var name = result.Document["properties"]["name"]; Console.WriteLine(String.Format("{0}", name )); } catch (Exception e) { } } Console.ReadKey(); }
public IEnumerable <PlaygroundEntity> GetByLocation(float lat, float lng) { var earthRadius = 6378.0; // km var rangeInKm = 10.0; // km GetCollection().EnsureIndex(IndexKeys.GeoSpatial("Loc")); //var near = // Query.GT("ExpiresOn", now); var options = GeoNearOptions .SetMaxDistance(rangeInKm / earthRadius /* to radians */) .SetSpherical(true); GeoNearResult <PlaygroundEntity> results = GetCollection().GeoNear( Query.Null, lng, // note the order lat, // [lng, lat] 200, options ); return(results.Hits.Select(result => result.Document)); }
public GeoNearResult <Station> GetNearbyStations(double latitude, double longitude, double range, string measurement, int maxItems) { var radians = measurement == Measurement.Kilometers ? EarthRadians.Kilometers: EarthRadians.Miles; var server = MongoServer.Create(Settings.TidesMongoConnection); server.Connect(); var stationsCollection = server[DatabaseNames.Tides][TidesCollectionNames.Stations]; var result = stationsCollection.GeoNearAs <Station>(Query.EQ("IsComplete", true), longitude, latitude, maxItems, GeoNearOptions.SetSpherical(true).SetMaxDistance(range).SetDistanceMultiplier(range / radians)); server.Disconnect(); return(result); }
public static GeoNearOptionsBuilder getGeoNearOption(double rangeInM) { return(GeoNearOptions.SetMaxDistance(rangeInM / earthRadius /* to radians */) .SetSpherical(true).SetDistanceMultiplier(earthRadius)); }