2015-05-04 5 views
0
public double CalculateDistance(
     Coordinate c, 
     Coordinate a, 
     Coordinate b, 
     LineMode mode) 

Параметры:Преобразование единиц измерения координат в метры

гр Тип: SpatialLite.Core.API.Coordinate координатном вычислить расстояние для.

a Тип: SpatialLite.Core.API.Coordinate Один пункт линии.

b Тип: SpatialLite.Core.API.Coordinate Еще один пункт линии.

Тип: SpatialLite.Core.Algorithms.LineMode Значение LineMode, которое указывает, следует ли рассматривать AB как бесконечную линию или как сегмент линии.

Возвращаемое значение Расстояние от C до линии AB в единицах координат.

Я использую вышеуказанный метод от SpatialLite Библиотека. Возвращаемая переменная имеет тип double и, как описано в документации, это расстояние в единицах координаты. Я не понимаю, что такое «координатные единицы». Как я могу преобразовать их в метры?

Исходный код here.

+0

Предположим, у вас есть Coördinate (0,0) и Coördinate (0,1). Расстояние между этими двумя координатами - это единица координата. –

ответ

1

Метод CalculateDistance находится на интерфейсе, который имеет две различные версии по умолчанию: Euclidean2DCalculator и Sphere2DCalculator. Евклидова реализация предполагает нечеткое декартово координатное пространство и вычисляет прямолинейное расстояние между двумя координатами. Это похоже на то, что вы получаете.

Если вы ищете сферические координаты, вам необходимо создать экземпляр Sphere2DCalculator. Я не знаком с использованием библиотеки, просто копаю код в Google Code.

Алгоритм сферы возвращает большое расстояние между двумя точками в метрах, предполагая сферическую землю с радиусом 6371010 метров.

Сферическая земля - ​​не лучшее представление, но в зависимости от вашего приложения может быть достаточно.Текущая картография стандартизируется на WGS 84, и эта библиотека не поддерживает это представление.

1

Устройства МОГУТ ИЛИ НЕ МОГУТ быть метрами в зависимости от вашей пространственной системы отсчета. Предполагая, что у вас есть географическая система (например, WGS84), это означает, что вы назначаете координаты в градусах, у вас есть градусы как единица. На прямоугольных системах отсчета вы можете иметь счетчики как единицы. Другим элементом будет пиксель, который является единицей расстояния для дисплеев - например, ваш браузер. Здесь координата (0; 0) означает левый верхний угол, тогда как (0, 0) в географической системе означает где-то в Атлантическом океане.

Я уверен, что у SpatialLite есть способ проектировать (это то, что вам нужно искать) одной координаты из одной пространственной системы отсчета в другую.

EDIT: Я нашел this метод для пространственного управления, который делает то, что вам нужно. Преобразуйте точки, для которых вам нужно расстояние в целевую пространственно-справочную систему, и вычислите расстояние с помощью простой алгебры. Альтернативно перепрограммируйте все данные в UTM34. Таким образом, вы можете использовать метод, о котором вы уже упоминали, потому что вам не нужны преобразования «на лету», которые занимают много времени. Однако вы постоянно меняете свои данные.

+0

Это градусы. Но он не возвращается в координатах, таких как 23.1247,38.2114. Метод просто возвращает double, например 19.874. –

+0

. Это просто означает расстояние 19,874 градуса, теперь оно преобразуется в метры, используя требуемую пространственную ссылку. К какому месту относится ваша программа? – HimBromBeere

+0

Греция. какую пространственную ссылку я должен использовать? –

Смежные вопросы