Иллюстрированный самоучитель по Mathematica 3/4

Города и расстояния (CityData и Geodesy)

В подпакете CityData можно найти функции, позволяющие найти координаты большинства крупных городов мира: CityData [city, datatype], CityData [city] и CityData[datatype]. Например:

<<Miscellaneous`CityData`
  
CityData["Montreal",
CityPosition]
{{45, 30}, {-73, -36}}
  
CityData["Washington"]
{{CityPosition, {{38, 53, 42}, {-77, -2, -12}}}}

Координаты (широта и долгота) выдаются в формате {градусы, минуты} или {градусы, минуты, секунды}.

В этом же подпакете есть функции для вычисления расстояний между городами:

  • CityDistance [ "cityl", "pity"] – возвращает расстояние между двумя указанными городами;
  • CityDistance["cityl","city",CityDistanceMethod › Method] – возвращает расстояние между двумя указанными городами со спецификацией метода вычислений (по умолчанию используется функция SphericalDistance из подпакета Geodesy).

Пример вычисления расстояния между городами дан ниже:

CityDistance["Washington", "Montreal"] //N
786.915

Базу данных можно расширять, добавляя в нее информацию о новых городах:

CityPosition[{"Champaign", "USA", "IL"}] = {{40, 7, 5},
{-88, -14, -48}};

Убедимся, что информация действительно добавлена:

CityData["Champaign", CityPosition]
{{40, 7, 5}, {-88, -14, -48}}

Для добавления новых полей в базу данных можно использовать функцию AppendTc (см. урок 9). Например, добавим поле для хранения информации о населении:

AppendTo[$CityFields, CityPopulation]

Теперь введем в базу данных информацию о населении Вашингтона:

CityPopulation[{"Washington", "USA", "DC"}] = 638000;

Проверим результат, запросив всю имеющуюся в базе информацию об этом городе:

CityData["Washington"]
{{CityPosition, {{38, 53, 42}, {-77, -2, -12}}},
{CityPopulation, 638000}}

Как видите, результат теперь включает новую информационную категорию – CityPopulation.

В подпакете Geodesy есть функции, вычисляющие расстояние между двумя точками с учетом выпуклости Земли:

  • SphericalDistance [pos1,pos2] – вычисляет расстояние между двумя точками в предположении, что Земля – идеальный шар (сфера);
  • SpheroidalDistance [pos1,pos2] – вычисляет расстояние между двумя точками в предположении, что Земля – приплюснутый шар (сфероид).

Примеры вычислений по этим функциям представлены ниже:

SphericalDistance[{0, 0}, {45,-45}] //N
6671.7
  
SpheroidalDistance[{0, 0}, {45, 45}] //N
6662.47% - %%
-9.23014
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.