Когда мы разработали алгоритмы распознавания спутниковых изображений, нам понадобился надежный набор спутниковых изображений с тегами. У нас были помеченные адреса, и мы выяснили, как использовать Google API для получения изображений вне широты и долготы местоположения. Мы уже создали процедуру Геокодирование адресов для получения широты и долготы с помощью Google API. Это пример кода о том, как взять эти данные широты и долготы и получить из них кадр данных Python с изображениями, чтобы вы могли передать их в свои алгоритмы машинного обучения ИИ. Возможно, есть более чистые версии, но это то, что мы использовали.

В этом примере мы используем образец данных, который мы нашли в Интернете, если вы хотите загрузить данные и следовать им.

buildings= pd.read_csv("Starbucks in California.csv")
buildings.head()
pd.value_counts(pd.Series(buildings['Drive-Thru']))

В этом примере мы используем результаты Геокодирования адресов для получения широты и долготы с помощью Google API. Но если у вас есть хорошие геокоды, вы можете просто использовать их.

Во-первых, нам нужно определить строку Google API со всеми параметрами нашего распознавания изображений. Обратите внимание, что у нас есть заполнитель для ключа API, но мы оставили его пустым, поэтому вам нужно будет добавить свой собственный ключ, если вы хотите запустить это.

Есть несколько входных данных, которые вы должны учитывать при создании этой строки. Основными из них, на которые мы обращали внимание, были масштабирование, размер и тип карты. Для нашего проекта эти значения по умолчанию сработали, но в зависимости от вашей работы вы определенно можете их изменить. У Google есть довольно хорошая документация по ним. Но мы обнаружили, что простое тестирование различных вариантов и добавление их в адрес браузера дает вам довольно хороший способ протестировать все перестановки.

i=3
latlong=str(buildings['geocodes'][i])
key=""#### Insert your own api key here
name=str(buildings['Drive-Thru'][i])+str(i%5)
tag=str(buildings['Drive-Thru'][i])
url = "https://maps.googleapis.com/maps/api/staticmap?center="+latlong+"&markers=color:red%7CNew+york,NY&format=png&style=feature:all|element:labels|visibility:off&zoom=19&size=250x250&maptype=satellite&key=" +key   
print(latlong)
print (url)  

Эта следующая часть переходит по этому URL-адресу и загружает изображение. Сбрасывает его в файл, затем Python открывает файл и считывает его в объект Python. Это комбинация двух интернет-примеров, на которые у нас больше нет ссылок. И, вероятно, есть более плавный метод для этого, но он хорошо работает для наших целей.

r = sesion.get(url)
        
f=open('img/'+name+'.jpg' ,'wb')
f.write(r.content)
f.close()
img = io.imread('img/'+name+'.jpg')
plt.imshow(img)
print(tag)

Мы собираем все кусочки вместе, чтобы вы могли прокручивать фрейм данных координат. Мы добавили некоторую обработку исключений. Также обратите внимание, как мы разработали имена файлов. Таким образом, мы можем обрабатывать имя файла. Это позволяет нам перезаписывать файлы по мере прохождения, а также сохранять несколько примеров каждой категории. Если вы хотите сохранить все изображения отдельно, вы можете отредактировать эту часть.

##all_images_gray = []
all_images= []
file_tags=[]
for i in range(len(buildings)):
    ##for i in range(5):
    latlong=str(buildings['geocodes'][i])

    key=""#### Insert your own api key here
    name=str(buildings['Drive-Thru'][i])+str(i%5)
    tag=str(buildings['Drive-Thru'][i])
    url = "https://maps.googleapis.com/maps/api/staticmap?center="+latlong+"&markers=color:red%7CNew+york,NY&format=png&style=feature:all|element:labels|visibility:off&zoom=19&size=250x250&maptype=satellite&key=" +key   
    print(latlong)
    print (url)
    try:               
        r = sesion.get(url)
        
        f=open('img/'+name+'.jpg' ,'wb')
        f.write(r.content)
        f.close()
        img = io.imread('img/'+name+'.jpg')
        ##all_images_gray.append(color.rgb2gray(img))
        all_images.append((img))
        file_tags.append(tag)
        
       ## print(tag)
    except:
        print (name)
        print (url)
        all_images.append(("NA"))
        file_tags.append("NA")

Это позволяет протестировать несколько изображений, чтобы увидеть, как они получились.

i=1
plt.imshow(all_images[i])

Этот код поможет вам отправить файл, чтобы вы могли использовать его в следующей части алгоритма.

 output = open('sb_buildings_drivein_geocoded_tag.pkl', 'wb')
pickle.dump(file_tags, output)
output.close()
output = open('sb_buildings_drivein_geocoded_img.pkl', 'wb')
pickle.dump(all_images, output)
output.close()  

Этот код позволяет вам взять фрейм данных с геокодированными координатами и запустить их через API Google и получить уточненный набор данных тегов и соответствующих изображений, которые вы можете использовать в своем алгоритме распознавания спутниковых изображений. а также когда вы прогнозируете будущие сайты.