Python
November 5, 2022
Простой скрипт для автоматического поиска геокоординат
Скрипт написан на Python. На вход принимает csv файл:
Курская обл.;Ль район;с. Иванчиково Курская обл.;Суджанский район;с. Плёхово Курская обл.;Железногорский район;с. Жидеевка Курская обл.;Железногорский район;Новый Бузец Курская обл.;Железногорский район;с. Старый Бузец Владимирская обл.;Судогодский район;Аксеново Владимирская обл.;Суодский район;Карпово Владимирская обл.;Судогодский район;Слащево Архангельская обл.;Котласский район;г. Сольвычегодск
На выходе будет csv файл уже с координатами. Если не удается найти координаты, то будет записано пустое значение.
Курская обл.;Ль район;с. Иванчиково; Курская обл.;Суджанский район;с. Плёхово;51.1007804,35.3290548 Курская обл.;Железногорский район;с. Жидеевка;52.1923663,35.4500001 Курская обл.;Железногорский район;Новый Бузец;52.164154,35.484161 Курская обл.;Железногорский район;с. Старый Бузец;52.199837,35.5330842 Владимирская обл.;Судогодский район;Аксеново;56.0756071,40.761767 Владимирская обл.;Суодский район;Карпово; Владимирская обл.;Судогодский район;Слащево;56.0697562,40.8062814 Архангельская обл.;Котласский район;г. Сольвычегодск;61.3315511,46.9311295
Вся эта штука работает с API Nominatim, поэтому конечно же нужен интернет, ну и есть вероятность каких-то лимитов.
Собственно код:
from geopy.geocoders import Nominatim import csv with open('test.csv', newline='', encoding='utf-8-sig') as File: reader = csv.reader(File, delimiter=';') data = list() for row in reader: loc = row try: geolocator = Nominatim(user_agent="my_request") location = geolocator.geocode(loc) point = str(location.latitude) + ',' + str(location.longitude) except: point = '' row.append(point) data.append(row) myFile = open('out.csv', 'w') with myFile: writer = csv.writer(myFile, delimiter=';') writer.writerows(data) print("Writing complete")