РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ адрСсами Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ: Как ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄ΡƒΒ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ β€” ΠŸΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ 2Π“Π˜Π‘

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΈ расстояния Π±Π΅Π· рСгистраций ΠΈ смс β€” NTA Π½Π° vc.ru

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, VC!

1880 просмотров

Π‘ Π²Π°ΠΌΠΈ участник ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сообщСства NTA АлСксСй Майка.

Π₯ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ интСрСсной Π·Π°Π΄Π°Ρ‡ΠΊΠΈ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ вСсь ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ.

Π‘Ρ‹Π» ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π΄Π΅Π½Ρ‘ΠΊ, сидСл я Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ занимался своими Π°ΠΉΡ‚ΠΈΡˆΠ½Ρ‹ΠΌΠΈ Π΄Π΅Π»Π°ΠΌΠΈ. Ко ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ΅Π» Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈ сказал: «НуТно Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ Π΄ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² для этих адрСсов». ΠŸΡ€ΠΈ этом Π±Π΅Π· всяких ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… сСрвисов ΠΈ API ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠ°Ρ€Ρ‚, ΠΈ своими усилиями. ΠΠΉΡ‚ΠΈΡˆΠ½ΠΈΠΊ понял, Π°ΠΉΡ‚ΠΈΡˆΠ½ΠΈΠΊ принял, Π°ΠΉΡ‚ΠΈΡˆΠ½ΠΈΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» свою Π·Π°Π²Π΅Ρ‚Π½ΡƒΡŽ ΡΠΊΡΠ΅Π»ΡŒΠΊΡƒ ΠΈ ΠΏΠΎΡˆΡ‘Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

ВступлСниС

Из ΡˆΠΊΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΡƒΡ€ΠΎΠΊΠΎΠ² Π³Π΅ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ я ΠΏΠΎΠΌΠ½ΠΈΠ», Ρ‡Ρ‚ΠΎ для опрСдСлСния ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Π°ΠΆΠ° трСбуСтся Π·Π½Π°Ρ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (ΡˆΠΈΡ€ΠΎΡ‚Ρƒ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρƒ) Π΄Π²ΡƒΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ. И исходя ΠΈΠ· этого, я Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ» Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° 4 части:

  • поиск ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹;
  • ΠΏΡ€Π΅Π΄ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…;
  • поиск ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ адрСсов;
  • нСпосрСдствСнный расчёт расстояний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ.

Π’ постС продСмонстрировал вСсь ΠΏΡƒΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ, нСбольшиС Π½ΡŽΠ°Π½ΡΡ‹, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈ нСпосрСдствСнно ΠΊΠΎΠ΄. И, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ² читатСля с ΠΌΠΎΠ΅ΠΉ малСнькой прСдысториСй, расскаТу ΠΎΠ± инструмСнтах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я пользовался.

Π’ качСствС основного инструмСнта для парсинга, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ расчётов я использовал Python. Π‘Ρ€Π΅Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ выступали Jupyter Notebook (Anaconda), PyCharm ΠΈ DataSpell ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ JetBrains (Π΄Π΅Π»ΠΎ вкуса). ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ использовал Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Numpy, Pandas, Plotly, Geopy, Selenium.

На этом ΠΏΡ€Π΅Π»ΡŽΠ΄ΠΈΡ заканчиваСтся, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ сути.

Начало Π½Π°Ρ‡Π°Π»

Для расчёта дистанции Π΄ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π½Π΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, самой Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΊΠ»ΠΈΠΊΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΌΠ½Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ, Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° поиска Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»Π°ΡΡŒ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ json‑файл с ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π³Ρ€Π°Π½ΠΈΡ† ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² России, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈ находятся Π½ΡƒΠΆΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ.

Для Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΡΡ‚Π°ΡŽ Π½ΡƒΠΆΠ½Ρ‹Π΅ области. Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΡΠΎΡ…Ρ€Π°Π½ΡΡŽ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π° Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ (dict) ΠΈ ΡΠΌΠΎΡ‚Ρ€ΡŽ Π½Π° содСрТимоС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

#Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с «.json»-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ import json #Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… import pandas as pd #Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами import numpy as np # Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ всСх Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² with open(‘data//gadm41_RUS_1.json’, encoding = ‘utf-8’) as js: dict_coordin_border = json.load(js)

Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ json Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурирован, ΠΈ с Π½ΠΈΠΌ достаточно Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Названия Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ:

  • dict_coordin_border[‘features’] [‘properties’][‘NL_NAME_1’] β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ;
  • dict_coordin_border[‘features’] [‘geometry’][‘coordinates’] β€” ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π³Ρ€Π°Π½ΠΈΡ† ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’Ρ‹Π΄Π΅Π»ΡΡŽ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ словаря Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡΡ‚ΡŒ областСй, ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ Π² pandas.DataFrame Π΄Π°Π½Π½Ρ‹Π΅, Π³Π΄Π΅:

  • region β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ€Π΅Π³ΠΈΠΎΠ½Π°;
  • lon β€” Π΄ΠΎΠ»Π³ΠΎΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹;
  • lat β€” ΡˆΠΈΡ€ΠΎΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹;
  • sequence_number β€” порядковый Π½ΠΎΠΌΠ΅Ρ€ записи;
  • color β€” Ρ†Π²Π΅Ρ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π°.

Π—Π°Ρ‡Π΅ΠΌ Ρ†Π²Π΅Ρ‚ ΠΈ порядковый Π½ΠΎΠΌΠ΅Ρ€? РасскаТу Π΄Π°Π»Π΅Π΅, Π° сСйчас ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄:

df_coord_reg = pd.DataFrame() sequence_number = 0 for regions in dict_coordin_border[‘features’]: #Π‘Ρ‚Π°Π²ΠΈΠΌ условия для поля названия ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² if regions[‘properties’][‘NL_NAME_1’] in [‘Π’ΠΎΡ€ΠΎΠ½Π΅ΠΆΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’, ‘Π‘Ρ€ΡΠ½ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’, ‘ΠšΡƒΡ€ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’, ‘Π ΠΎΡΡ‚ΠΎΠ²ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’, ‘Π‘Π΅Π»Π³ΠΎΡ€ΠΎΠ΄ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’]: for list_coordin_lv_1 in regions[‘geometry’][‘coordinates’]: for list_coordin_lv_2 in list_coordin_lv_1: for list_coordin_finish_lvl in list_coordin_lv_2: #ЗаполняСм df: НазваниС Ρ€Π΅Π³ΠΈΠΎΠ½Π°, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, порядковый Π½ΠΎΠΌΠ΅Ρ€ записи, Ρ†Π²Π΅Ρ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π° if regions[‘properties’][‘NL_NAME_1’] == ‘Π’ΠΎΡ€ΠΎΠ½Π΅ΠΆΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’: color = ‘purple’ elif regions[‘properties’][‘NL_NAME_1’] == ‘Π‘Ρ€ΡΠ½ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’: color = ‘white’ elif regions[‘properties’][‘NL_NAME_1’] == ‘ΠšΡƒΡ€ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’: color = ‘blue’ elif regions[‘properties’][‘NL_NAME_1’] == ‘Π ΠΎΡΡ‚ΠΎΠ²ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’: color = ‘yellow’ elif regions[‘properties’][‘NL_NAME_1’] == ‘Π‘Π΅Π»Π³ΠΎΡ€ΠΎΠ΄ΡΠΊΠ°ΡΠΎΠ±Π»Π°ΡΡ‚ΡŒ’: color = ‘red’ df_coord_reg = df_coord_reg.

append({‘region’: regions[‘properties’][‘NL_NAME_1’], #НазваниС Ρ€Π΅Π³ΠΈΠΎΠ½Π° ‘lon’: list_coordin_finish_lvl[0], #Π”ΠΎΠ»Π³ΠΎΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ‘lat’: list_coordin_finish_lvl[1], #Π¨ΠΈΡ€ΠΎΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ‘sequence_number’: str(sequence_number), #ΠŸΠΎΡ€ΡΠ΄ΠΊΠΎΠ²Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ записи ‘color’: color}, #Π¦Π²Π΅Ρ‚ Ρ€Π΅Π³ΠΈΠΎΠ½Π° ignore_index = True) sequence_number += 1

Π’ ΠΈΡ‚ΠΎΠ³Π΅ получаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ dataframe:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°

На Π΄Π°Π½Π½ΠΎΠΌ этапС я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π³Ρ€Π°Π½ΠΈΡ† Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² со всСх сторон. Но это Π½Π΅ совсСм Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ Π³Ρ€Π°Π½ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. И здСсь я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ plotly.

Plotly β€” это графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, гистограммы, ΠΊΠ°Ρ€Ρ‚Ρ‹ распрСдСлСния, 2D‑диаграммы, 3D‑графики ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€” ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Β«Π·Π²Π΅Ρ€ΡŒΒ» для Π²ΠΈΠ·ΡƒΠ°Π»Π°, ΠΈ ΠΎΠ½Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС.

Код Π½ΠΈΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° гСографичСской ΠΊΠ°Ρ€Ρ‚Π΅ Π•Π²Ρ€ΠΎΠΏΡ‹:

#Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… import plotly.graph_objs as go #Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ дальнСйшСго Π°Π½Π°Π»ΠΈΠ·Π° fig = go.Figure(data=go.Scattergeo( #Scattergeo — Π΄Π°Π½Π½Ρ‹Π΅, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ‚ΠΎΡ‡Π΅ΠΊ гСографичСской ΠΊΠ°Ρ€Ρ‚Π΅ lon = df_coord_reg[‘lon’], #Π”ΠΎΠ»Π³ΠΎΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ lat = df_coord_reg[‘lat’], #Π¨ΠΈΡ€ΠΎΡ‚Π° Ρ‚ΠΎΡ‡ΠΊΠΈ mode = ‘markers’, #Π’ΠΈΠ΄ Ρ‚ΠΎΡ‡ΠΊΠΈ marker_color = df_coord_reg[‘color’], #Π¦Π²Π΅Ρ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ text = df_coord_reg[‘region’] + ‘ ‘ + df_coord_reg[‘sequence_number’] #ВСкст ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ ), ) fig.

update_layout( title = ‘Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π Π€ ‘, #Π—Π°Π΄Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ geo = dict( scope=’europe’, #Π¨Π°Π±Π»ΠΎΠ½ ΠΊΠ°Ρ€Ρ‚Ρ‹ landcolor = «green», #Π¦Π²Π΅Ρ‚ для стран countrycolor = «black», #Π¦Π²Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ† ΠΌΠ΅ΠΆΠ΄Ρƒ странами ), width=1500, #Π¨ΠΈΡ€ΠΈΠ½Π° ΠΊΠ°Ρ€Ρ‚Ρ‹ height=750 #Высота Π³Ρ€Π°Ρ„ΠΈΠΊΠ° )

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΊΠΎΠ΄Π°:

Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π Π€

Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° рисункС, всС Ρ‚ΠΎΡ‡ΠΊΠΈ находятся Π½Π° своих мСстах. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΠΈΠ· Π½ΠΈΡ… Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ². Для этого я ΠΈ Π·Π°Π΄Π°Π²Π°Π» Ρ†Π²Π΅Ρ‚ областСй ΠΈ ΠΈΡ… порядковый Π½ΠΎΠΌΠ΅Ρ€.

Π’Ρ‹Π±ΠΈΡ€Π°ΡŽ Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅, ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ Π΄Π°Π½Π½Ρ‹Π΅ Π² dataframe:

#Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΊΠ°Ρ€Ρ‚Ρ‹, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ срСзы df ΠΈ записываСм ΠΈΡ… Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ df_coord_border = pd.concat([df_coord_reg[11:411], df_coord_reg[1278:1459], df_coord_reg[974:1226], df_coord_reg[3084:3157], df_coord_reg[2004:2413]])

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² json‑файл.

#Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ провСряСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ dataframe fig = go.Figure(data=go.Scattergeo(lon = df_coord_border[‘lon’], lat = df_coord_border[‘lat’], mode = ‘markers’, marker_color = df_coord_border[‘color’], text = df_coord_border[‘region’] + ‘ ‘ + df_coord_border[‘sequence_number’])) fig.update_layout( title = ‘Π‘ΡƒΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π Π€’, geo = dict( scope=’europe’, landcolor = «green», countrycolor = «black», ), width=1500, #Π¨ΠΈΡ€ΠΈΠ½Π° ΠΊΠ°Ρ€Ρ‚Ρ‹ height=750 #Высота Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ) #БохраняСм Π΄Π°Π½Π½Ρ‹Π΅ Π² json df_coord_border[[‘lon’, ‘lat’]].to_json(‘data//border.json’)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π°:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠšΡ‚ΠΎ? А Π³Π»Π°Π²Π½ΠΎΠ΅, Π·Π°Ρ‡Π΅ΠΌ?

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΠ± эксСлькС, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π² Π½Π°Ρ‡Π°Π»Π΅? Π’ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈ Π΅Ρ‘ врСмя.

Боздаю Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅Ρ‚Ρ€Π°Π΄ΠΊΡƒ, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‡ΠΈΡ‚Π°ΡŽ xlsx‑файл. Π‘ΠΌΠΎΡ‚Ρ€ΡŽ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅.

import pandas as pd import numpy as np import json #Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° df_start_adress = pd.read_excel(‘data//starting_address.xlsx’) border_coord_df.head()

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ ΠΆΠ΅ получаСтся? Π’ Ρ„Π°ΠΉΠ»Π΅ хранятся 6 228 адрСсов, ΠΈ, Π΄Π°ΠΆΠ΅ взглянув Π½Π° эту Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ, закрадываСтся ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ строгого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. НСобходимо ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· dataframe Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° пропуски:

#Π£Π΄Π°Π»ΠΈΠΌ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ df_start_adress = df_start_adress.drop_duplicates() df_start_adress #None ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ df_start_adress.info() #NaN,None ΠΈ пустота ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ строки. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ строки df_start_adress[df_start_adress[‘ΠΏΠΎΠ»Π½Ρ‹ΠΉ адрСс’].str.len() <= 5]

Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π°

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, пропусков Π½Π΅ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ, Π° послС удалСния Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ² dataframe сократился Π½Π° 2 000 строк.

ΠŸΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

  1. НСт строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° адрСсов. Π­Ρ‚ΠΎ сильно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ запросы HTTP ΠΈ бСсплатныС API сайтов.

АдрСса Π±Π΅Π· строгого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°

2. Π’ адрСсах присутствуСт подстрока «АдрСс ΠΈΠ· РосрССстра:Β». ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚Π°ΠΊΠΈΡ… адрСсов Π² «ЯндСкс.ΠšΠ°Ρ€Ρ‚Π°Ρ…Β», выдаСтся адрСс ΠΎΡ‚Π΄Π΅Π»Π° РосрССстра Π³ΠΎΡ€ΠΎΠ΄Π° исходного адрСса ΠΈΠ»ΠΈ пустой Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска:

АдрСса, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТится подстрока «АдрСс ΠΈΠ· РосрССстра:Β»

3. Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ячССк. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π² ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠ°Ρ€Ρ‚Π°Ρ… Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π²Ρ‹Π΄Π°ΡŽΡ‚ΡΡ, ΠΈΠ»ΠΈ строится ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ двиТСния ΠΏΠΎ этим адрСсам, Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ сСбя ΠΊ сСбС:

Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

4. ΠŸΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ лишниС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ поиску.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ привСсти ΠΈΡ… ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ показалось ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ² нСсколько адрСсов, я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСрвис «ЯндСкс ΠšΠ°Ρ€Ρ‚Ρ‹Β». Он ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ адрСсами ΠΈ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Но ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ адрСса всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ хотя Π±Ρ‹ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: подстрока с РосрССстром ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Π°Π½Π½Ρ‹Π΅.

Для этого ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ formating_text. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создаю список, Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽ строку Π½Π° слова ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽ ΠΈΡ… Π² список ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ. Если Π΄Π°Π½Π½ΠΎΠ΅ слово ΡƒΠΆΠ΅ сущСствуСт Π² спискС, Ρ‚ΠΎ Π΅Π³ΠΎ Π² список Π½Π΅ добавляю. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡƒΠ΄Π°Π»ΡΡŽ ΠΈΠ· ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ строки «РосрССстр»:

def formating_text(text): old_text = text.split() new_text = [] for word in old_text: if word not in new_text: new_text.append(word) return ‘ ‘.join(new_text).replace(‘АдрСс ΠΈΠ· РосрССстра: ‘, ») df_start_adress[‘formating_adress’] = df_start_adress[‘ΠΏΠΎΠ»Π½Ρ‹ΠΉ адрСс’].apply(lambda x: formating_text(x))

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π‘ΠΎΡ…Ρ€Π°Π½ΡΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠΆΡƒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ этапу.

Π”Ρ‘ΡˆΠ΅Π²ΠΎ ΠΈ сСрдито

Π‘Π°ΠΌΡ‹Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° я использовал Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Selenium. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π°? Она ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ прСимущСствами Π½Π° Ρ„ΠΎΠ½Π΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² парсинга. Π•Ρ‘ блиТайшиС Π°Π½Π°Π»ΠΎΠ³ΠΈ:

  1. API «ЯндСкс.ΠšΠ°Ρ€Ρ‚Β». Данная систСма Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π° Π² использовании для этой Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ бСсплатна. А ΠΌΡ‹ Π΄ΠΎΠ³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’Π°Ρ€ΠΈΡ„Ρ‹ ЯндСкса

Π’Π°Ρ€ΠΈΡ„Ρ‹ Π½Π° 15.05.2023 Π³. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

2. Http/Https‑запросы. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ систСмы, описанной Π²Ρ‹ΡˆΠ΅, для запроса трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ сайту. Но с ΠΌΠΎΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ написаниС get/ post-запросов β€” довольно слоТная Π·Π°Π΄Π°Ρ‡Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, запрос https://yandex.ru/maps/213/moscow/house/mokhovaya_ulitsa_11s1 состоит ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΠΉ Π³ΠΎΡ€ΠΎΠ΄Π°, ΡƒΠ»ΠΈΡ†Ρ‹ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Π΄ΠΎΠΌΠ° Π½Π° транслитС. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ входящиС Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ нСпосильной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ для мСня.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Selenium, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дСйствиС Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π½Π° сайтС. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ систСмы Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ЯндСкса, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΡ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π‘Ρ€Π°Π·Ρƒ скаТу, здСсь я Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ вас Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π›ΠΈΡˆΡŒ Ρ€Π°Π·Π±Π΅Ρ€Ρƒ основной Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта, ΠΏΠΎΠΊΠ°ΠΆΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ я использовал Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Google Chrome, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ для Google. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Selenium ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π² сСбС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Google, ΠΈ для Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ просто Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ webdriver.Chrome(). Для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° сайт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get.

from selenium import webdriver #АдрСс сайта «Π―ндСкс.ΠšΠ°Ρ€Ρ‚Ρ‹» url_adress = ‘https://yandex.ru/maps’ #ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Google driver = webdriver.Chrome(‘chromedriver.exe’) #ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° сайт driver.get(url_adress) time.sleep(5)

Поиск адрСса. АдрСс вписываСтся Π² ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ поиска, ΠΊΠΎΠ΄ Π΄Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта «<input class=”input__control_bold” >». Для поиска элСмСнта использовал ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ WebDriverWait ΠΈ ExpectedCondition. Selenium Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ поиск элСмСнта, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ ΠΈΠ»ΠΈ Π½Π΅ кончится врСмя оТидания.

Π”Π°Π»Π΅Π΅ заполняю Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ адрСсом с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ send_keys ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ поиск, имитируя Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши Enter Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ send_keys(Keys.ENTER).

from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # ВрСмя оТидания delay = 10 # Поиск Ρ„ΠΎΡ€ΠΌΡ‹ Π²Π²ΠΎΠ΄Π° Π½Π° сайтС elem_search_string = WebDriverWait(driver, delay) \ .until(EC.presence_of_element_located( (By.XPATH, «//input[@class=’input__control _bold’]»))) # ВписываСм Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΡƒ elem_search_string.send_keys(adress) # ЗапускаСм поиск elem_search_string.send_keys(Keys.ENTER)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска. Если всС ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΡˆΡ‚Π°Ρ‚Π½ΠΎ, ЯндСкс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π΄Π°Ρ‚ΡŒ гСографичСскиС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ адрСса. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ WebDriverWait ΠΈ ExpectedCondition Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

# Поиск ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π° сайтС elem_search_2 = WebDriverWait(driver, delay) \ .until(EC.presence_of_element_located( (By.XPATH, «//div[@class=’toponym-card-title-view__coords-badge’]»))) # Π—Π°ΠΏΠΈΡΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ адрСса coord = elem_search_2. text

Но ЯндСкс β€” Π½Π΅ всСмогущ, ΠΎΠ½ Π½Π΅ всСгда Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, поэтому Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ адрСса ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Как, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, здСсь:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ³ΠΎ адрСса

На случай Ρ‚Π°ΠΊΠΈΡ… ситуаций я Π±Ρ€Π°Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго ΠΎΠ½ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΌΠ½Π΅ адрСсом:

elem_first_list = WebDriverWait(driver, delay) \ .until(EC.presence_of_element_located( (By.XPATH, «//div[@class=’search-snippet-view__body _type_toponym’]»))) elem_first_list.click()

И напослСдок ΠΎΡ‡ΠΈΡ‰Π°ΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи:

try: elem_clear = WebDriverWait(driver, 2) \ .until(EC.presence_of_element_located( (By.XPATH, «//a[@class=’small-search-form-view__pin’]»))) except: elem_clear = WebDriverWait(driver, 2) \ .until(EC.presence_of_element_located( (By.XPATH, «//div[@class=’small-search-form-view__icon _type_close’]»)))

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ поиск ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π° сайтС ΠΈ очистку Ρ„ΠΎΡ€ΠΌΡ‹ записи Π½Π° случай, Ссли сСрвис Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ скрипта ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽ всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ дСйствия Π΅Ρ‰Ρ‘ 3 000 Ρ€Π°Π· ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ„Π°ΠΉΠ».

Ѐинишная прямая

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π΄Π΅Π»ΠΎ Π·Π° ΠΌΠ°Π»Ρ‹ΠΌ: Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ адрСсов ΠΈ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ построСнной Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π‘ этим ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Geopy.

Geopy β€” это сторонняя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python для опрСдСлСния гСографичСского мСстополоТСния. Она позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Python Π»Π΅Π³ΠΊΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ адрСсов, Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², стран ΠΈ Π΄ΠΎΡΡ‚ΠΎΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сторонниС Π³Π΅ΠΎΠΊΠΎΠ΄Π΅Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ источники Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС.

Для Π½Π°Ρ‡Π°Π»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Ρ€Π°Π½Π΅Π΅, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ адрСса. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽ ΠΈΡ… Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для удобства Π² Ρ€Π°Π±ΠΎΡ‚Π΅.

#Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ import pandas as pd from geopy.distance import geodesic as GD import json from tqdm import tqdm #Π˜ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ with open(«data/adress_coord. json», ‘r’, encoding=’utf-8-sig’) as ad_cor: adress_coord_dict = json.load(ad_cor) border_coord_df = pd.read_json(«data//border.json») #Для удобства ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ адрСсов ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π² df atress_coord_df = pd.DataFrame(adress_coord_dict.items(), columns=[‘adress’, ‘coord’]) # ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π² список list_border_coord = list([(row[‘lat’], row[‘lon’]) for index, row in border_coord_df.iterrows()])

Из Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Geopy мСня интСрСсуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° функция, которая ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ рассчитаСт расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ β€” geodesic. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ geodesic

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΡ‚Ρƒ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρƒ Π² Π²ΠΈΠ΄Π΅ списка, мноТСства, строки ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ подавались ΠΏΠΎΠΏΠ°Ρ€Π½ΠΎ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ измСрСния расстояния: ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Ρ‹ (km, kilometers), ΠΌΠ΅Ρ‚Ρ€Ρ‹ (m, meters), ΠΌΠΈΠ»ΠΈ (mi, miles) ΠΈ Ρ‚. Π΄.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΈΡˆΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ минимальноС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ адрСсом:

def distance_calculation(start_coord): list_dist = [] for bord_coord in list_border_coord: #Для расчСта расстояния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GD([1 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ],[2 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ‚ΠΎΡ‡ΠΊΠΈ]. [Π΅Π΄ΠΈΠ½ΠΈΡ†Π° измСрСния расстояния]) dist = GD(start_coord, bord_coord).km #ДобовляСм Π² список Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ list_dist.append(dist) #Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΡŽ ΠΈΠ· спискС return min(list_dist) tqdm.pandas() atress_coord_df[‘dist_to_bor’] = atress_coord_df[‘coord’].progress_apply(lambda x: distance_calculation(x))

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠžΡ†Π΅Π½ΠΊΠ° качСства

Для сдачи ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, вСдь ΠΏΠ»ΠΎΡ…ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π»ΡŽΠ±ΠΈΡ‚. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽ Google Maps ΠΈ адрСса ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ эксСльки, расстояниС Π΄ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ Π»ΠΈΠ½Π΅ΠΉΠΊΡƒ. И, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· рисунков, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹, Π° ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ β€” Π² допустимых Π½ΠΎΡ€ΠΌΠ°Ρ….

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Π˜Ρ‚ΠΎΠ³

Π§Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Ρƒ? Π—Π°Π΄Π°Ρ‡Π° нСобычная, интСрСсная ΠΈ Π² ΠΌΠ΅Ρ€Ρƒ слоТная. ΠŸΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Π»ΡΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Pandas, Selenium, Plotly ΠΈ посмотрСл Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Geopy. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½, Π° ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ β€” Π² допустимых Ρ€Π°ΠΌΠΊΠ°Ρ…. Π”Π°Π½Π½Ρ‹Π΅ пошли дальшС Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π·Π°Π΄Π°Ρ‡Π° ΠΌΠ½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ. Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΊΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ знания, ΠΈ Π½Π° этом я Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽ пост. Π–Π΅Π»Π°ΡŽ всСм ΡƒΠ΄Π°Ρ‡ΠΈ!)

P. S. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ‡ΡƒΡ‚ΡŒ Π½Π΅ Π·Π°Π±Ρ‹Π», с ΠΊΠΎΠ΄ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π½Π° Github.

β€ŽAppΒ Store: Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅

ОписаниС

Π˜Π·ΠΌΠ΅Ρ€ΡΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ расстояниС, ΠΏΡ€ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ для Π±Π΅Π³Π°, посчитайтС ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅! ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΌ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ лишнСго, поэтому Π²Ρ‹ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простых Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΏΠΎ ΠΊΠ°Ρ€Ρ‚Π΅, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ автоматичСски ΠΏΡ€ΠΎΠ»ΠΎΠΆΠΈΡ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚. Расстояниям ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ автоматичСски!

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ простоС, Π½ΠΎ Ρƒ Π½Π΅Π³ΠΎ мноТСство возмоТностСй, Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:
1. ΠŸΡ€ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ для Π±Π΅Π³Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³ΡƒΠ»ΠΊΠΈ;
2. РассчитывайтС расстояниС ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅;
3. РассчитывайтС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π·Π΄Π°Π½ΠΈΠΉ, ΠΏΠ»ΠΎΡ‰Π°Π΄Π΅ΠΉ, Π΄ΠΎΡ€ΠΎΠ³ ΠΈ Ρ‚.Π΄;
4. РассчитывайтС ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅;
5. РассчитывайтС расстояниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈ Π·Π° дСнь;
6. А Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ возмоТности ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ сами ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ‚Ρ€ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°:
1) «РасчСт ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Β» — устанавливая ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ — Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ для Ρ…ΠΎΠ΄ΡŒΠ±Ρ‹, вСлосипСда ΠΈΠ»ΠΈ автомобиля.
2) Β«ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС» — рассчитывайтС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ ΠΏΠΎ прямой.
3) Β«Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅Β» — ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ установитС Ρ‚Ρ€ΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ посчитаСт ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ практичСски Π»ΡŽΠ±Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, всС зависит ΠΎΡ‚ вашСго вообраТСния!

ВСрсия 1.1

— ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
— Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС

ΠžΡ†Π΅Π½ΠΊΠΈ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹

1 ΠΎΡ†Π΅Π½ΠΊΠ°

Π₯ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅Ρ‚ адрСсов ΠΌΠΎΠ΅Π³ΠΎ Π³ΠΎΡ€ΠΎΠ΄Π°

Якутск отсутствуСт! ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ 2 Π·Π²Π΅Π·Π΄Ρ‹

Garbage

Piece of crap

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Sergey Irgeshov ΡƒΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ в соотвСтствии с ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ описано Π½ΠΈΠΆΠ΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ свСдСния доступны Π²Β ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

Π”Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Β­ΠΌΡ‹Π΅ для отслСТи­вания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для отслСТивания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ Π² прилоТСниях ΠΈ Π½Π° сайтах, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ компаниям:

НС связанныС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Β­Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

ΠœΠΎΠΆΠ΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ сбор ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нС связаны ΡΒ Π»ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ:

  • ГСопозиция
  • Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Β­Ρ‚ΠΎΡ€Ρ‹
  • Π”Π°Π½Π½Ρ‹Π΅ ΠΎΠ± использова­нии

ΠšΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ вашСго возраста, задСйствованных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ

ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€
Sergey Irgeshov

Π Π°Π·ΠΌΠ΅Ρ€
52,7Β ΠœΠ‘

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ
Навигация

Возраст
4+

Copyright
Β© Irgeshov Sergey

Π¦Π΅Π½Π°
БСсплатно

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° прилоТСния
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π”Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния этого Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний ΠšΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ инструмСнт | Maptive

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний ΠšΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ инструмСнт | ΠœΠ°ΠΏΡ‚ΠΈΠ²

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ картографичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Maptive для расчСта расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ мСстополоТСниями ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅! Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ дальшС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний Maptive.

БыстроС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для бизнСса.

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний Maptive позволяСт Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ адрСсами. Π­Ρ‚ΠΎ, наряду со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ нашими картографичСскими инструмСнтами, прСдоставляСт Π²Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для эффСктивного вСдСния вашСго бизнСса.

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹

РассчитайтС расстояниС ΠΏΠΎ прямой ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ адрСсами, Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ индСксами Π² нСсколько простых шагов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Maptive

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись Π² Maptive.
  2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚Ρƒ.
  3. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части экрана.
  4. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΠΎΠ΄Π½ΠΎΡ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ .
  5. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ курсор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π·Π°Ρ‚Π΅ΠΌ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (ΠΈ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ, Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ, Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡƒΡŽ, ΠΏΡΡ‚ΡƒΡŽ ΠΈ Ρ‚. Β Π΄. Ρ‚ΠΎΡ‡ΠΊΠΈ).

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний?

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояния измСряСт расстояниС ΠΏΠΎ прямой Π»ΠΈΠ½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ расчСта расстояния ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΡƒΡ‚ΠΈ. РассчитайтС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ физичСскими адрСсами, ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅.

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний Maptive позволяСт ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя адрСсами ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ.

Как ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний Maptive ΠΌΠΎΠΆΠ΅Ρ‚ принСсти ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π²Π°ΡˆΠ΅ΠΌΡƒ бизнСсу

  • Π˜Π·ΠΌΠ΅Ρ€ΡŒΡ‚Π΅ расстояниС Π΄ΠΎ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ²:Β  Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π°ΠΌΠΈ ΠΈ вашими ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π°ΠΌΠΈ достаточноС расстояниС ΠΏΡ€ΠΈ создании Π½ΠΎΠ²Ρ‹Ρ… офисов для вашСго бизнСса.
  • Π˜Π·ΠΌΠ΅Ρ€ΡŒΡ‚Π΅ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°ΠΌΠΈ:Β  Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваши ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ‹ Π½Π΅ располоТСны слишком Π±Π»ΠΈΠ·ΠΊΠΎ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ.
  • Π˜Π·ΠΌΠ΅Ρ€ΡŒΡ‚Π΅ расстояниС Π΄ΠΎ Π²Π°ΡˆΠΈΡ… поставщиков: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ свою Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ поставок, находя поставщиков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π»ΠΈΠΆΠ΅ всСго ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ бизнСсу.
  • Визуализация расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ:Β  ЧСткая дСмонстрация расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π²ΠΎ врСмя ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΉ ΠΈ встрСч.
  • Π˜Π·ΠΌΠ΅Ρ€ΡŒΡ‚Π΅ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ участков, Π·Π΄Π°Π½ΠΈΠΉ, ΠΊΡ€Ρ‹Ρˆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ!

Как ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ мСстополоТСниями

ΠšΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний Maptive прост Π² использовании. РассчитайтС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ всСго Π·Π° нСсколько сСкунд, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для расчСта ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… расстояний

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя адрСсами.

  1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части экрана.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ расстояния ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ (ΠΎΡ‚ A Π΄ΠΎ B)Β».
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ курсор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ.
  4. ΠœΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ появится пунктирная линия, Π° расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅.
  5. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½ΡƒΡŽ линию ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ расстояния, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Β«XΒ» Π² ΠΊΠΎΠ½Ρ†Π΅ Π»ΠΈΠ½ΠΈΠΈ расстояния.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ расчСта Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ расстояния

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнт Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ расчСта расстояния для опрСдСлСния расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ двумя адрСсами.

  1. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡ΠΎΠΊ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части экрана.
  2. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ расстояния ΠΏΠΎ нСскольким Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ (ΠΎΡ‚ A Π΄ΠΎ B Π΄ΠΎ C Π΄ΠΎ D)Β».
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ курсор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСстополоТСниС, Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ‰Π΅Π»ΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мСстополоТСния Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΡΠ»ΠΈΡΡŒ.
  4. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ появится пунктирная линия. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, отобраТаСтся расстояниС ΠΎΡ‚ этой Ρ‚ΠΎΡ‡ΠΊΠΈ Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ.
  5. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Π·Π½Π°Ρ‡ΠΎΠΊ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части экрана.
  6. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½ΡƒΡŽ линию ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ расстояниС, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Β«XΒ» Π² ΠΊΠΎΠ½Ρ†Π΅ Π»ΠΈΠ½ΠΈΠΈ расстояния.

Как ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ расстояний Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями Maptive

Pin Maps: ΠΈΠ·ΠΌΠ΅Ρ€ΡŒΡ‚Π΅ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для рисования Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: создавайтС собствСнныС Ρ‚Π΅Ρ€Ρ€ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ ΠΈ рассчитайтС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Boundary Tool: установитС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½Π° основС ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… индСксов, Ρ€Π°ΠΉΠΎΠ½ΠΎΠ², Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ², ΡˆΡ‚Π°Ρ‚ΠΎΠ² ΠΈ Ρ‚. Π΄. ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС Π² ΠΏΡƒΡ‚ΠΈ, Π° Π½Π΅ расстояниС ΠΏΠΎ прямой, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Maptive,Β Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ двиТСния ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими мСстополоТСниями.

ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Maptive ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСгодня.

ΠΠ°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСйчас

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ использования Ρ„Π°ΠΉΠ»ΠΎΠ² cookie

Как ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΡΠΌΡƒΡŽ линию Π² ΠšΠ°Ρ€Ρ‚Π°Ρ… Google

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ|Как ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΡΠΌΡƒΡŽ линию Π² ΠšΠ°Ρ€Ρ‚Π°Ρ… Google

https://www. nytimes.com/2018/07/02/technology/personaltech/google-maps- Straight-distance.html

Π Π΅ΠΊΠ»Π°ΠΌΠ°

ПРОПУБВИВЬ Π Π•ΠšΠ›ΠΠœΠ£

Π’Π•Π₯ΠΠ˜Π§Π•Π‘ΠšΠΠ― ΠŸΠžΠ”Π‘ΠšΠΠ—ΠšΠ

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π΅Π³Π° ΠΏΠΎ шоссС, Google ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π΅ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ.

Π’ мобильной вСрсии Google Maps (слСва) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π΅ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ, ввСдя Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π²Ρ‹Π±Ρ€Π°Π² Β«Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС». Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ΠΊΠ°Ρ€Ρ‚Ρƒ Π²ΠΏΡ€Π°Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΡ€ΡƒΠΆΠΎΠΊ оказался Π½Π°Π΄ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ мСстополоТСниСм, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΒ» (+), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ прямой ΠΏΡ€ΠΎΠ±Π΅Π³ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана. Ѐото… The New York Times

Q. ΠšΠ°Ρ€Ρ‚Ρ‹ Google ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ мСстами Π½Π° основС направлСния двиТСния ΠΏΠΎ доступным автомагистралям, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΈ способ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌΠΈ Β«ΠΏΠΎ прямой»?

A. ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΅Π·Π΄Π°, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Google ΠΌΠ΅ΠΆΠ΄Ρƒ мСстополоТСниями, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ доступныС Π΄ΠΎΡ€ΠΎΠ³ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ условия двиТСния, ΠΎΠ±ΡŠΠ΅Π·Π΄Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ситуации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ±ΠΈΡ‚ΡŒ вас с ΠΏΡƒΡ‚ΠΈ. Π₯отя это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для планирования ΠΏΠΎΠ΅Π·Π΄ΠΎΠΊ ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, ΠšΠ°Ρ€Ρ‚Ρ‹ Google Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ инструмСнт для простого измСрСния расстояний ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΠΏΠΎ прямой Π»ΠΈΠ½ΠΈΠΈ.

ΠŸΡ€ΠΈ использовании Google Maps Π² Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠΌ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π³ΠΎΡ€ΠΎΠ΄ ΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС» Π² мСню. Π—Π°Ρ‚Π΅ΠΌ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ прямоС расстояниС Π² милях ΠΈ ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Π°Ρ…, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π² малСньком ΠΏΠΎΠ»Π΅ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΎΠΊΠ½Π°.

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΊΠ°Ρ€Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ для измСрСния, ΠΈΠ»ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΈ измСрСния, пСрСтаскивая ΠΈΡ… Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. Когда Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ X Π² ΠΏΠΎΠ»Π΅ Π²Π½ΠΈΠ·Ρƒ экрана.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Google Maps для Android ΠΈ iOS Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΠ°Π»ΡŒΡ†Π΅ΠΌ Π½Π° экран, ΠΏΠΎΠΊΠ° Π½Π΅ появится красная ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. АдрСс ΠΈΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ мСстополоТСния отобраТаСтся Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана, поэтому ΠΊΠΎΡΠ½ΠΈΡ‚Π΅ΡΡŒ Π΅Π³ΠΎ ΠΈ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠ·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Β«Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС».

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *