Определить масштабный коэффициент в картах - PullRequest
3 голосов
/ 22 октября 2010

Учитывая только набор координат, есть ли способ найти используемый коэффициент масштабирования?Затем он будет использоваться для вычисления расстояний между координатами.

Давайте рассмотрим это:

В масштабе карты: (это единственное данное)

  • pointA (33.511615, -86.778809)
  • pointB (34.398558, -87.669116)

В масштабе реального мира:

  • Расстояние между двумя точками = неизвестно

Мы можем решитьдля расстояния между 2 точками.Какой коэффициент преобразования мы можем использовать, чтобы преобразовать расстояние в фактический или реальный масштаб мира?Как мы получаем коэффициент пересчета?

Приведенные координаты основаны на фактических точках, нанесенных на модель меньшего масштаба. Формат может показаться вам знакомым.Может ли быть так, что единицы по умолчанию являются милями?Я понятия не имею о том, как они пришли к координатам, какие-либо мысли?

Я не уверен, какие базовые концепции задействованы (геокодирование или геолокация?), И имел ли я смысл, когда пытался указать на вещи,Пожалуйста, помогите.

Ответы [ 4 ]

1 голос
/ 20 апреля 2011

Расстояние между двумя точками:

Point1, с координатами lat1 и long1 Point2, с координатами lat2 и long2

можно рассчитать следующим образом, используя формулу haversine (код показан на Python):

lat1=radians(lat1)
long1=radians(long1)
lat2=radians(lat2)
long2=radians(long2)

gradius=6378.137        # greatest earth radius (equator)
sradius=6356.7523142    # smallest earth radius (pole)

R=(gradius*sradius)/sqrt((gradius*cos(lat1))**2 + (sradius*sin(lat1))**2)

d_lat = lat2 - lat1
d_long = long2 - long1

a = sin(d_lat/2)**2 + cos(lat1) * cos(lat2) * sin(d_long/2)**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
distance = maior * c

# and if you want bearing:
x = sin(d_long) * cos(lat2)
y = cos(lat2) * sin(lat1) - sin(lat2) * cos (lat1) * cos(d_long)
bearing = 90-(degrees(atan2(y, -x)))

Конечно, он должен быть настроен и соответствовать вашим потребностям. Надеюсь, это поможет.

1 голос
/ 22 октября 2010

Они похожи на координаты широты и долготы (например, 33.511615 градусов северной широты, 86.778809 западной долготы для первой), которые размещают их в Алабаме.

Вы уверены, что это какие-то специфические для карты координаты, а не широта / долгота?

Изменить: если они широта / долгота, проверьте этот сайт , который имеет калькулятор расстояний большого круга и формулы, которые вам понадобятся, чтобы сделать это самостоятельно. Этот сайт допускает десятичные градусы, а не минуты / секунды, так что это может быть более полезным.

0 голосов
/ 22 октября 2010

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

Я собираюсь предположить, что координаты, которые вы дали выше, взяты из датума WGS 84, который является наиболее распространенным методом, используемым в современных системах GPS сегодня.

Однако очень важно, чтобы вы также знали, на какую картографическую проекцию будут нанесены эти координаты. По сути, поскольку земля круглая (и на самом деле не совсем круглая, она слегка эллипсоидная из-за вращения Земли), когда мы проецируем это на плоскую поверхность, это можно сделать разными способами. Метод, используемый для «выравнивания» Земли, а также масштаб карты (насколько «увеличен масштаб» карты) может оказать сильное влияние на то, насколько полезен масштаб x / y для измерений на изображении карты.

На какие карты вы проецируете? Если бы я знал больше, я думаю, что мог бы быть лучше.

0 голосов
/ 22 октября 2010

Я уверен, что вам понадобится больше информации, чтобы правильно масштабировать расстояние. Вам действительно нужно знать масштаб модели.

...