Расположение сортировки / заказа - PullRequest
0 голосов
/ 18 августа 2010

У меня есть карта с местоположениями, как показано на рисунке ниже.

alt text

Эти местоположения содержатся в объекте словаря C # с широтой / долготой и декартовой (x,y, z) координаты.Область покрыта 5 командами, первая из которых находится на юго-западе области.Что мне нужно, так это уметь упорядочивать точки так, чтобы самая южная западная точка была первой - это будет зеленый маркер «3» рядом с Эннискилленом на карте.Я пробовал разные подходы, но не получил желаемого результата.

Может кто-нибудь объяснить подход, который будет работать?

Mark

Ответы [ 3 ]

1 голос
/ 18 августа 2010

Предполагая, что вы знаете широту / длину юго-западного угла этой карты, я рассчитал бы расстояние каждой точки от этого угла, используя Aviation Formulary .Тогда вам просто нужно отсортировать на основе рассчитанного расстояния.

0 голосов
/ 18 августа 2010

Я бы использовал формулу Хаверсайна, чтобы определить расстояние между некоторым местоположением в юго-западном углу карты и каждой из точек.Вот ссылка с некоторым кодом для C # и Sql Server, чтобы сделать то же самое.

http://www.storm -consultancy.com / blog / development / code-snippets / the-haversine-формула-в-с-и-SQL /

0 голосов
/ 18 августа 2010

Если вы хотите определить «самый юго-западный» таким же образом, как «самый южный», вы можете упорядочить точки (x,y) на x+y. Вы можете думать об этом как о перемещении линии NW-SE по карте из угла SW, отмечая порядок достижения точек. Это эквивалентно определению «наиболее южного» путем сортировки по y, где вы перемещаете линию восток-запад вверх от южного края и отмечаете порядок достижения каждой точки.

...