Подтвердить что ты не робот

Почему SQL Server GEOGRAPHY позволяет долготы между -15069 ° и + 15069 °? Почему ± 15069 °?

Я использую DLL Microsoft.SqlServer.Types в своих проектах для проверки широт и долгот.

Библиотека проверяет значения долготы от -15069 до 15069 градусов вместо -180 до 180. Может ли кто-нибудь объяснить, какое значение или причина, по которой Microsoft проверяет значения долготы, составляет от -15069 до 15069 градусов?

Microsoft перечислила стандарты для Geo Spatial стандартов на этом веб-сайте, в которых упоминаются значения долготы ДОЛЖНЫ быть между -15069 и 15069 градусами включительно.

https://msdn.microsoft.com/en-us/library/ee301753(v=sql.105).aspx

Ваши входы в понимание этой концепции будут оценены!

4b9b3361

Ответ 1

Почему долгота не ограничена [-180 °... + 180 °]?

Вот небольшой мысленный эксперимент. Какая из следующих трех строк LINESTRING (-180 0, 180 0) представляет?

  • Линия, проходящая вокруг всего земного шара вдоль экватора в восточном направлении.

  • Линия, проходящая вокруг всего земного шара вдоль экватора в западном направлении.

  • Линия длины 0, так как широта -180 ° обозначает тот же меридиан, что и + 180 °.

Как только вы решите любую из трех возможностей, вы обнаружите, что у вас нет способа моделирования двух других случаев как LINESTRING (попробуйте!)... по крайней мере, когда вы ограничиваете долготу (географически правильный) интервал [-180 °.. + 180 °]!

Посмотрим, что произойдет, когда мы расслабляем это ограничение:

  • Линия, идущая по всему миру в направлении на восток, теперь может быть смоделирована как LINESTRING (-180 0, 180 0). (Это, по-видимому, соответствует нашим ожиданиям, поскольку увеличение степени долготы означает "переход на восток".)

  • Линия, идущая по всему миру в направлении на запад, теперь становится LINESTRING (-180 0, -540 0). (Уменьшение степеней долготы означает "переход на запад".)

  • Линия длины 0 становится LINESTRING (-180 0, -180 0). (Никакое изменение координат не означает "пройденное расстояние".)

Да, но почему они выбрали ровно ± 15069 градусов?

Что, я не могу сказать. Это может быть связано с точностью с плавающей точкой (т.е. Пространственные вычисления становятся слишком неточными, если вы указали точку, "обернутую вокруг" земного шара более чем на 15 069 ° ÷ 360 ° = 41,8583... раза) или просто произвольный предел (т.е. они думали, что никто не должен будет иметь возможность построить спираль, которая проходит по всему миру более чем примерно 42 раза).

Почему была ограничена широта [-90 °... + 90 °], если долгота не ограничивалась?

Повторите описанный выше эксперимент: что означает LINESTRING (0 90, 0 -90)?

  • Линия, проходящая вокруг половины земного шара по первому меридиану в направлении на юг.

  • Линия, проходящая вокруг половины земного шара по первому меридиану в направлении к северу.

  • Линия длины 0.

Мы можем исключить (3), так как POINT (0 90) и POINT (0 -90) - различные точки: северный полюс и южный полюс. Линия, идущая от одного к другому, определенно не имеет нулевой длины.

Мы также можем исключить (2), просто потому, что на северном полюсе не имеет смысла говорить "идти на север". Вы можете оставаться там или идти на юг, который уже покрыт (1).

Итак, мы однозначно получаем (1). Поэтому причина, по которой широта была ограничена географически значимым [-90 °... + 90 °], заключается в том, что при моделировании линий, которые касаются или пересекают географические полюса, никогда не бывает какой-либо двусмысленности. Это связано с тем, что нет внезапных "прыжков" степени, например, с долготой (где один и тот же меридиан описывается как на -180 °, так и на 180 °).