Rose debug info
---------------

Простой скрипт для автоматического поиска геокоординат

Скрипт написан на 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")
Поделиться
Отправить
 252   2022   python