Дано: известны координаты 377 пунктов пропуска на территории РФ и Таможенного союза, вычислена матрица расстояний между ними по прямой (по формуле для сферы).
Задача: получить более реалистичные оценки расстояний между пунктами пропуска, чтобы корректно определять ближайших к заданному.
Google Maps API предоставляет инструменты работы с картами и маршрутами. В R доступ к нужной составляющей API – Distance Matrix – реализован в пакете gmapsdistance(CRAN, github). Distance Matrix имеет ограничения на количество запросов: не более 2500 в сутки от одного приложения. Сбор данных проводился с учётом этого ограничения в два этапа:
По матрице расстояний между пунктами пропуска по прямой для каждого пункта были найдены по 3 ближайших по каждому из четырёх типов транспорта (морской, железнодорожный, автомобильный, воздушный).
Затем через API Distance Matrix были загружены расстояния от каждого пропускного пункта до 12 ближайших.
Количество запросов – это не единственное ограничение. Инструмент предоставляет доступ к стандартному набору опций Google маршрутов. Это означает, что маршрут из точки А в точку Б можно построить для путешествия пешком, для автомобиля, общественным либо авиа транспортом. Таким образом, с видами транспорта по классификации ФТС совпадают только два. Поскольку точное определение расстояний наиболее критично для автомобильных пунктов пропуска, для которых в силу рельефа расстояние по прямой может сильно отличаться от реального, на втором этапе сбора данных для всех пунктов пропуска использовалась одна и та же опция: маршрут автомобильным транспортом. Ниже на картах линиями показаны несуществующие маршруты. Можно убедиться, что причина этих пропусков – чисто географическая.
В таблице ниже приводятся пункты пропуска, для которых расстояние до трёх ближайших по прямой морских портов не определено. Расшифровка столбцов этой и следующих таблиц:
name_pp – пункт пропуска, который является точкой А;code_tra – код транспорта: 10 – морской порт (синие маркеры на картах); 20 – ж/д (чёрные маркеры); 30 – а/м (красные маркеры); 40 – аэро (голубые маркеры).closest_10_1_NA, closest_10_2_NA, closest_10_3_NA – наименования трёх ближайших по прямой пунктов пропуска по виду транспорта 10.| name_pp | code_tra | closest_10_1_NA | closest_10_2_NA | closest_10_3_NA |
|---|---|---|---|---|
| Северо-Курильск | 10 | Октябрьский | Петропавловск-Камчатский | Курильск |
| Курильск | 10 | Южно-Курильск | Пригородное | Корсаков |
| Южно-Курильск | 10 | Курильск | Пригородное | Корсаков |
| Москальво | 10 | Николаевск-на-Амуре | Де-Кастри | Поронайск |
| Магадан | 10 | Охотск | Москальво | Октябрьский |
| Магадан (Сокол) | 40 | Охотск | Москальво | Октябрьский |
| Анадырь | 10 | Провидения | Магадан | Петропавловск-Камчатский |
| Анадырь (Угольный) | 40 | Провидения | Магадан | Петропавловск-Камчатский |
| Провидения | 10 | Анадырь | Магадан | Петропавловск-Камчатский |
| Провидения | 10 | Анадырь (Угольный) | Магадан | Петропавловск-Камчатский |
| Охотск | 10 | Магадан | Москальво | Николаевск-на-Амуре |
| Дудинка | 10 | Нарьян-Мар | Мезень | Архангельск |
| Ханты-Мансийск | 40 | Дудинка | Мезень | Архангельск |
| name_pp | code_tra | closest_10_1_NA | closest_10_2_NA | closest_10_3_NA |
|---|---|---|---|---|
| Курильск | 10 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Москальво | 10 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Октябрьский | 10 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Петропавловск-Камчатский | 10 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Петропавловск-Камчатский (Елизово) | 40 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Северо-Курильск | 10 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Южно-Курильск | 10 | Пограничный (ж/д, Приморский край) | Махалино | Хасан |
| Анадырь | 10 | Пограничный (ж/д, Приморский край) | Махалино | Забайкальск (ж/д) |
| Анадырь (Угольный) | 40 | Пограничный (ж/д, Приморский край) | Махалино | Забайкальск (ж/д) |
| Провидения | 10 | Пограничный (ж/д, Приморский край) | Махалино | Забайкальск (ж/д) |
| Охотск | 10 | Пограничный (ж/д, Приморский край) | Забайкальск (ж/д) | Соловьевск (ж/д) |
| Дудинка | 10 | Карасук | Кулунда | Локоть (Алтайский край) |
| Ханты-Мансийск | 40 | Карасук | Карталы (Тобыл) | Кулунда |
| name_pp | code_tra | closest_10_1_NA | closest_10_2_NA | closest_10_3_NA |
|---|---|---|---|---|
| Курильск | 10 | Марково | Нижнеленинское (смешанный) | Турий Рог |
| Октябрьский | 10 | Нижнеленинское (смешанный) | Марково | Амурзет |
| Петропавловск-Камчатский | 10 | Нижнеленинское (смешанный) | Марково | Амурзет |
| Петропавловск-Камчатский (Елизово) | 40 | Нижнеленинское (смешанный) | Марково | Амурзет |
| Северо-Курильск | 10 | Нижнеленинское (смешанный) | Марково | Амурзет |
| Южно-Курильск | 10 | Марково | Турий Рог | Нижнеленинское (смешанный) |
| Охотск | 10 | Кани-Курган | Поярково | Нижнеленинское (смешанный) |
| Москальво | 10 | Покровка (Хабаровский край) | Амурзет | Поярково |
| Анадырь | 10 | Кани-Курган | Благовещенск (смешанный) | Поярково |
| Анадырь (Угольный) | 40 | Кани-Курган | Благовещенск (смешанный) | Поярково |
| Провидения | 10 | Кани-Курган | Поярково | Благовещенск (смешанный) |
| Дудинка | 10 | Петухово (а/м) | Павловка (Новосибирская обл.) | Павловка (Алтайский край) |
| Ханты-Мансийск | 40 | Исилькуль (а/м) | Воскресенское | Достык (а/м) |
| name_pp | code_tra | closest_10_1_NA | closest_10_2_NA | closest_10_3_NA |
|---|---|---|---|---|
| Курильск | 10 | Хабаровск (Новый) | Петропавловск-Камчатский (Елизово) | Владивосток (Кневичи) |
| Охотск | 10 | Петропавловск-Камчатский (Елизово) | Хабаровск (Новый) | Южно-Сахалинск (Хомутово) |
| Анадырь | 10 | Магадан (Сокол) | Петропавловск-Камчатский (Елизово) | Южно-Сахалинск (Хомутово) |
| Анадырь (Угольный) | 40 | Магадан (Сокол) | Петропавловск-Камчатский (Елизово) | Южно-Сахалинск (Хомутово) |
| Провидения | 10 | Магадан (Сокол) | Петропавловск-Камчатский (Елизово) | Южно-Сахалинск (Хомутово) |
| Октябрьский | 10 | Магадан (Сокол) | Южно-Сахалинск (Хомутово) | Хабаровск (Новый) |
| Северо-Курильск | 10 | Магадан (Сокол) | Южно-Сахалинск (Хомутово) | Хабаровск (Новый) |
| Южно-Курильск | 10 | Хабаровск (Новый) | Владивосток (Кневичи) | Петропавловск-Камчатский (Елизово) |
| Москальво | 10 | Хабаровск (Новый) | Магадан (Сокол) | Петропавловск-Камчатский (Елизово) |
| Дудинка | 10 | Сургут | Ханты-Мансийск | Красноярск (Емельяново) |
| Ханты-Мансийск | 40 | Сургут | Тюмень (Рощино) | Нижневартовск |
| Петропавловск-Камчатский | 10 | Магадан (Сокол) | Южно-Сахалинск (Хомутово) | Анадырь |
| Петропавловск-Камчатский | 10 | Магадан (Сокол) | Южно-Сахалинск (Хомутово) | Анадырь (Угольный) |
| Петропавловск-Камчатский (Елизово) | 40 | Магадан (Сокол) | Южно-Сахалинск (Хомутово) | Анадырь |
| Петропавловск-Камчатский (Елизово) | 40 | Магадан (Сокол) | Южно-Сахалинск (Хомутово) | Анадырь (Угольный) |