Burada için soruları bulunmaktadır. Python here'daki orijinali yazan Federico A. Ramponi'ye Kudos.
public class MapPoint
{
public double Longitude { get; set; } // In Degrees
public double Latitude { get; set; } // In Degrees
}
public class BoundingBox
{
public MapPoint MinPoint { get; set; }
public MapPoint MaxPoint { get; set; }
}
// Semi-axes of WGS-84 geoidal reference
private const double WGS84_a = 6378137.0; // Major semiaxis [m]
private const double WGS84_b = 6356752.3; // Minor semiaxis [m]
// 'halfSideInKm' is the half length of the bounding box you want in kilometers.
public static BoundingBox GetBoundingBox(MapPoint point, double halfSideInKm)
{
// Bounding box surrounding the point at given coordinates,
// assuming local approximation of Earth surface as a sphere
// of radius given by WGS84
var lat = Deg2rad(point.Latitude);
var lon = Deg2rad(point.Longitude);
var halfSide = 1000 * halfSideInKm;
// Radius of Earth at given latitude
var radius = WGS84EarthRadius(lat);
// Radius of the parallel at given latitude
var pradius = radius * Math.Cos(lat);
var latMin = lat - halfSide/radius;
var latMax = lat + halfSide/radius;
var lonMin = lon - halfSide/pradius;
var lonMax = lon + halfSide/pradius;
return new BoundingBox {
MinPoint = new MapPoint { Latitude = Rad2deg(latMin), Longitude = Rad2deg(lonMin) },
MaxPoint = new MapPoint { Latitude = Rad2deg(latMax), Longitude = Rad2deg(lonMax) }
};
}
// degrees to radians
private static double Deg2rad(double degrees)
{
return Math.PI * degrees/180.0;
}
// radians to degrees
private static double Rad2deg(double radians)
{
return 180.0 * radians/Math.PI;
}
// Earth radius at a given latitude, according to the WGS-84 ellipsoid [m]
private static double WGS84EarthRadius(double lat)
{
// http://en.wikipedia.org/wiki/Earth_radius
var An = WGS84_a * WGS84_a * Math.Cos(lat);
var Bn = WGS84_b * WGS84_b * Math.Sin(lat);
var Ad = WGS84_a * Math.Cos(lat);
var Bd = WGS84_b * Math.Sin(lat);
return Math.Sqrt((An*An + Bn*Bn)/(Ad*Ad + Bd*Bd));
}
Birkaç ilgili gönderiye baktığımızda, C# 'daki kendi uygulamanızı bir araya getirmek için yeterli bilgi ve referans var gibi görünüyor. Birisinin sizin için kodu yazmasını istemiyorsanız, bunu yapmak zorunda kalmazsınız, burada çok şansınız olmayabilir. –
Mesajlara belirli linkler olmadan, yorumunuzu mutlu bir şekilde görmezden geleceğim. Aramamı yaptım, burada değil C# –
Peki, bu sayfanın sağ tarafındaki İlgili Bağlantıların ilkini sizin için kopyalamama izin ver. http://stackoverflow.com/questions/1648917/given-a-latitude-and-longitude-and-distance-i-want-to-find-a-bounding-box Bunun üzerinden ilerleyin. En azından Java'daki bir uygulamaya atıfta bulunmanın yanı sıra, problemle ilgili matematiksel yaklaşımlar hakkında birkaç makale bulun. İstediğiniz tam uygulamayı tercih ettiğiniz dilde bulamıyor olabilirsiniz. Buradaki düşünce, hakkında düşünmeye yardımcı olmak, insanların sizin için düşünme ve kodlama yapmaması, sonra sadece derleyen ilk sınıfı kullanmasıdır. –