Intereting Posts
Как я могу заставить scrollviewer для Windows 8 Metro реагировать на колесико мыши? LINQ to SQL – отображение исключения при использовании абстрактных базовых classов Сериализация в JSON, Nullable Date опускается с использованием Json.NET и Web API, несмотря на указание NullValueHandling Создайте собственный элемент управления фигурой в UWP (Universal Windows Apps), Windows 10 Как передать lambda методу хладагента Razor? Поддерживает ли C # .NET поддержку позднего связывания IDispatch? Есть ли успех для создания методов расширения, которые работают с типом «объект»? Воспроизведение аудио и видео в фоновом режиме одновременно Ручное управление доступом в ASP .Net ASP.NET 3.5 C #: лучший способ создать и отобразить динамическое меню с подменю Uri.EscapeDataString ведет себя по-разному в тесте NUnit vs. asp.net webservice? Какой самый элегантный способ найти индекс дубликатов в списке C # Linq Выбрать определенные свойства в другой объект? Обновление полей значений в ConcurrentDictionary Constructor vs Object Initializer Precedence в C #

Преобразование координат в WGS84

У меня есть следующая функция, которая отображает круг, заданный центроидом, но я хочу, чтобы координаты были в WGS84.

var coords = new List<Tuple>(); const double EARTH_RADIUS_NM = 3437.670013352; var lat = (latIn * Math.PI) / 180; var lon = (lonIn * Math.PI) / 180; double d = radiusIn / EARTH_RADIUS_NM; for (int x = 0; x <= 360; x++) { double brng = (x * Math.PI) / 180; var latRadians = Math.Asin(Math.Sin(lat) * Math.Cos(d) + Math.Cos(lat) * Math.Sin(d) * Math.Cos(brng)); var lngRadians = lon + Math.Atan2(Math.Sin(brng) * Math.Sin(d) * Math.Cos(lat), Math.Cos(d) - Math.Sin(lat) * Math.Sin(latRadians)); coords.Add(new Tuple(latRadians, lngRadians)); } 

Вы говорите, что конвертируете в WGS84, но из чего?

Посмотрите на что-то вроде http://www.gdal.org/ или http://dotspatial.codeplex.com/ (или пространственную поддержку в вашей БД, если вы используете ее).

Этот ответ на ГИС поможет объяснить WGS84 / EPSG: 4326

https://gis.stackexchange.com/questions/23690/is-wgs84-itself-a-coordinate-reference-system

и это поможет, когда ваш круг превратится в эллипс 🙂

Круг SQL Server

EDIT **: извините, я неправильно понял проблему в начале. Я не совсем понимаю ваше соглашение об именах, поэтому я не буду писать код изначально. Также я – энтузиаст дифференциальной геометрии, поэтому шутки на меня … Функция круга

Для начала рассмотрим расстояния на поверхности любой сферы: сферическое преобразование в качестве напоминания для координат: r ≥ 0, 0 ≤ θ ≤ π и 0 ≤ φ <2π. (θ == широта, φ == долгота), так как наше смещение ds ограничено поверхностью, мы имеем dr == 0. Также мы можем рассмотреть диск расстояния ds от точки a = [r, 0, 0]

Эти точки должны тогда удовлетворять ds == r dθ, что дает b = [r, ds / r, 0]. это легко, потому что не имеет значения, что на самом деле φ, оно может идти от 0 до 2π, и это расстояние останется прежним, поэтому любая точка b = [r, ds / r, φ] находится на диске координат что мы ищем.

Итак, что, если мы начнем с a = [r, θ, φ], вы можете спросить, о чем я говорю, то почему бы не преобразовать обратно в a = [r, 0, 0], добавив вектор преобразования t = [0, -θ , -φ] вычислить координаты для диска, а затем вычесть тот же вектор преобразования на каждую найденную вами точку (b). да пребудет с тобой сила