示例#1
0
def main():
    ostankino_address = "Москва, улица Академика Королёва, 15к1"
    ostankino_height = 525
    address = sys.argv[1]
    ostankino_point = get_coordinates(ostankino_address)
    address_point = get_coordinates(address)
    distance = math.trunc(lonlat_distance(ostankino_point, address_point) / 1000)
    antenna_height = round(calc_antenna_height(distance, ostankino_height))
    print(f"Высота антенны на расстоянии {distance} км. составляет {antenna_height} м.")
def main():
    # Забираем две адресные точки из параметров запуска.
    address_1 = sys.argv[1]
    address_2 = sys.argv[2]

    # Получаем координаты двух введенных адресных точек
    address_1_point = get_coordinates(address_1)
    address_2_point = get_coordinates(address_2)
    print(lonlat_distance(address_1_point, address_2_point))
示例#3
0
文件: metro.py 项目: hrefrfefr/metro
def main():
    address = sys.argv[1]
    address_point = get_coordinates(address)
    metro_name = get_nearest_object(address_point, "metro")
    if metro_name:
        print(f"Ближайшее к '{address}' - {metro_name}.")
    else:
        print(f"Рядом с '{address}' - метро нет.")
def main():
    ostankino_address = "Москва, улица Академика Королёва, 15к1"
    ostankino_height = 525

    # Забираем две адресную точку из параметров запуска.
    address = sys.argv[1]

    # Получаем координаты двух введенных адресных точек
    ostankino_point = get_coordinates(ostankino_address)
    address_point = get_coordinates(address)

    distance = math.trunc(
        lonlat_distance(ostankino_point, address_point) / 1000)  # km -> m

    antenna_height = round(calc_antenna_height(distance, ostankino_height))
    print(
        f"Высота антенны на расстоянии {distance} км. составляет {antenna_height} м."
    )
示例#5
0
def main():
    # Забираем адресную точку из параметров запуска.
    address = sys.argv[1]

    # Получаем координаты точки
    address_point = get_coordinates(address)

    # Получаем ближайшее метро.
    metro_name = get_nearest_object(address_point, "metro")

    if metro_name:
        print(f"Ближайшее к '{address}' - {metro_name}.")
    else:
        print(f"Рядом с '{address}' - метро нет.")
示例#6
0
def main():
    # Забираем адресную точку из параметров запуска.
    address = ''
    try:
        address = " ".join(sys.argv[1:])
    except:
        print('No data')
        exit(1)

    if not address:
        print('No data')
        exit(1)

    # Получаем координаты точки
    address_point = get_coordinates(address)

    # Получаем район.
    district_name = get_nearest_object(address_point, "district")
    print(district_name)
示例#7
0
def main():
    toponym_to_find = " ".join(sys.argv[1:])

    if toponym_to_find:
        # Показываем карту с фиксированным масштабом.
        lat, lon = get_coordinates(toponym_to_find)
        ll_spn = f"ll={lat},{lon}&spn=0.005,0.005"
        show_map(ll_spn, "map")

        # Показываем карту с масштабом, подобранным по заданному объекту.
        ll, spn = get_ll_span(toponym_to_find)
        ll_spn = f"ll={ll}&spn={spn}"
        show_map(ll_spn, "map")

        # Добавляем исходную точку на карту.
        point_param = f"pt={ll}"
        show_map(ll_spn, "map", add_params=point_param)
    else:
        print('No data')
示例#8
0
def main():
    toponym_to_find = " ".join(sys.argv[1:])

    lat, lon = get_coordinates(toponym_to_find)
    address_ll = f"{lat},{lon}"
    span = "0.005,0.005"

    # Получаем координаты ближайшей аптеки.
    organization = find_business(address_ll, span, "аптека")
    point = organization["geometry"]["coordinates"]
    org_lat = float(point[0])
    org_lon = float(point[1])
    point_param = f"pt={org_lat},{org_lon},pm2dgl"

    show_map(f"ll={address_ll}&spn={span}", "map", add_params=point_param)

    # Добавляем на карту точку с исходным адресом.
    points_param = point_param + f"~{address_ll},pm2rdl"

    show_map("ll={0}&spn={1}".format(address_ll, span),
             "map",
             add_params=points_param)

    # Автопозиционирование
    show_map(map_type="map", add_params=points_param)

    # Сниппет
    # Название организации.
    name = organization["properties"]["CompanyMetaData"]["name"]
    # Адрес организации.
    address = organization["properties"]["CompanyMetaData"]["address"]
    # Время работы
    time = organization["properties"]["CompanyMetaData"]["Hours"]["text"]
    # Расстояние
    distance = round(lonlat_distance((lon, lat), (org_lon, org_lat)))

    snippet = f"Название:\t{name}\nАдрес:\t{address}\nВремя работы:\t{time}\n" \
              f"Расстояние:\t{distance}м."
    print(snippet)
示例#9
0
def main():
    toponym_to_find = " ".join(sys.argv[1:])

    if not toponym_to_find:
        print('No data')
        exit(1)

    lat, lon = get_coordinates(toponym_to_find)
    address_ll = f"{lat},{lon}"

    # Подбираем масштаб, чтобы получить минимум 10 аптек.
    delta = 0.01
    organizations = []
    while delta < 100 and len(organizations) < 10:
        delta *= 2.0
        span = f"{delta},{delta}"
        organizations = find_businesses(address_ll, span, "аптека")

    # Формируем список из координат аптек и их круглосуточности
    farmacies_with_time = []
    for org in organizations:
        point = org["geometry"]["coordinates"]
        hours = org["properties"]["CompanyMetaData"].get("Hours", None)
        if hours:  # У организации есть данные о времени работы
            available = hours["Availabilities"][0]
            is_24x7 = available.get("Everyday", False) and available.get("TwentyFourHours", False)
        else:  # Данных о времени работы нет.
            is_24x7 = None
        # Запоминаем полученные данные.
        farmacies_with_time.append((point, is_24x7))

    # Формируем параметр с точками
    points_param = "pt=" + "~".join([
        f'{point[0]},{point[1]},pm2{"gn" if is_24x7 else ("lb" if not is_24x7 else "gr")}l'
        for point, is_24x7 in farmacies_with_time])

    # Используем автопозиционирование карты по всем меткам.
    show_map(map_type="map", add_params=points_param)
示例#10
0
import sys
import os
import pygame
from Samples.geocoder import get_coordinates, get_ll_span
from Samples.mapapi_PG import show_map

if __name__ == '__main__':
    toponym_to_find = " ".join(sys.argv[1:])

    if toponym_to_find:
        ranning = True
        zoom = 10
        lat, lon = get_coordinates(toponym_to_find)

        map_file = 'map.png'
        # Инициализируем pygame
        pygame.init()
        screen = pygame.display.set_mode((600, 450))

        running = True
        while running:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False
                elif event.type == pygame.KEYUP:
                    if event.key == pygame.K_ESCAPE:
                        running = False
                    # if event.key == pygame.K_PAGEUP:
                    #     if zoom < 23:
                    #         zoom += 1
                    # elif event.key == pygame.K_PAGEDOWN:
示例#11
0
def main():
    global flag
    pygame.font.init()
    font = pygame.font.Font(None, 32)
    fond_for_err = pygame.font.Font(None, 16)
    input_box = pygame.Rect(5, 5, 140, 32)
    clear_buton = pygame.Rect(5, 43, 110, 24)
    color_inactive = pygame.Color('lightskyblue3')
    color_active = pygame.Color('black')
    color = color_inactive
    active = False
    text = ''
    end_text = font.render('', True, color)
    step = 0.006
    # Показываем карту с фиксированным масштабом.
    ll_spn = f"ll={res.coord_x},{res.coord_y}&z={res.zoom}&l={res.type_map}"
    x, y, zoom, type_map = res.coord_x, res.coord_y, res.zoom, res.type_map
    show_map_yandex(ll_spn, "map")
    map_file = "map.png"
    types = ['map', 'sat', 'sat,skl']
    info = ''
    point_param = ''
    # Инициализируем pygame
    looping = True
    count = types.index(type_map)
    while looping:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                looping = False
            if event.type == pygame.MOUSEBUTTONDOWN:
                if input_box.collidepoint(event.pos):
                    # Toggle the active variable.
                    active = not active
                else:
                    active = False
                if clear_buton.collidepoint(event.pos):
                    point_param = ''
                    flag = False
                    show_map_yandex(ll_spn, "map")
                # Change the current color of the input box.
                color = color_active if active else color_inactive
            if event.type == pygame.KEYDOWN:
                if active:
                    if event.key == pygame.K_RETURN:
                        toponym_to_find = text
                        ll = get_ll_span(toponym_to_find)
                        ll_spn = f"ll={ll}&z={zoom}&l={type_map}"
                        if try_to(ll_spn, "map"):
                            # Показываем карту с масштабом, подобранным по заданному объекту.
                            show_map_yandex(ll_spn, "map")
                            x, y = get_coordinates(text)
                            # Добавляем исходную точку на карту.
                            point_param = f"pt={ll}"
                            print(point_param)
                            show_map_yandex(ll_spn,
                                            "map",
                                            add_params=point_param)
                            end_text = fond_for_err.render(
                                '', True, (255, 0, 0))
                            info = get_address(text)
                            flag = True
                        else:
                            end_text = fond_for_err.render(
                                'Введите корректное имя поиска', True,
                                (255, 0, 0))
                        text = ''
                    elif event.key == pygame.K_BACKSPACE:
                        text = text[:-1]
                    else:
                        text += event.unicode
            key = pygame.key.get_pressed()
            if key[pygame.K_PAGEUP]:
                zoom = zoom + 1 if zoom + 1 < 20 else zoom
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)
            if key[pygame.K_PAGEDOWN]:
                zoom = zoom - 1 if zoom - 1 > 0 else zoom
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)
            if key[pygame.K_UP]:
                y += step * math.pow(2, 15 - zoom)
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)
            if key[pygame.K_DOWN]:
                y -= step * math.pow(2, 15 - zoom)
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)
            if key[pygame.K_RIGHT]:
                x += step * math.pow(2, 15 - zoom)
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)
            if key[pygame.K_LEFT]:
                x -= step * math.pow(2, 15 - zoom)
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)
            if key[pygame.K_HOME]:
                count = (count + 1) % 3
                type_map = types[count]
                ll_spn = f"ll={x},{y}&z={zoom}&l={type_map}"
                show_map_yandex(ll_spn, "map", add_params=point_param)

        # Инициализируем pygame
        # Рисуем картинку, загружаемую из только что созданного файла.
        screen.blit(pygame.image.load(map_file), (0, 0))
        txt_surface = font.render(text, True, color)
        # Resize the box if the text is too long.
        width = max(200, txt_surface.get_width() + 10)
        input_box.w = width
        # Blit the text.
        screen.blit(txt_surface, (input_box.x + 5, input_box.y + 5))
        # Blit the input_box rect
        pygame.draw.rect(screen, color, input_box, 1)
        pygame.draw.rect(screen, (200, 200, 200), clear_buton)
        screen.blit(
            pygame.font.Font(None, 16).render('Сбросить метку', True,
                                              (0, 0, 0)),
            (clear_buton.x + 5, clear_buton.y + 5))
        screen.blit(end_text, [350, 430])
        if flag:
            write_info(info)
        # Переключаем экран и ждем закрытия окна.
        pygame.display.flip()
        pygame.display.update()
    pygame.quit()
    # Удаляем за собой файл с изображением.
    os.remove(map_file)
示例#12
0
def main():
    address_1 = sys.argv[1]
    address_2 = sys.argv[2]
    address_1_point = get_coordinates(address_1)
    address_2_point = get_coordinates(address_2)
    print(lonlat_distance(address_1_point, address_2_point))
示例#13
0
import os
import math
import pygame
from Samples.geocoder import get_coordinates
from Samples.mapapi_PG import show_map

LON_STEP = 0.01
LAT_STEP = 0.025

if __name__ == '__main__':
    toponym_to_find = [i for i in input('Что вы хотите найти?').split()]
    if toponym_to_find:
        type_map = 'map'
        ranning = True
        zoom = 10
        lat_M, lon_M = get_coordinates(toponym_to_find)
        lat, lon = lat_M, lon_M
        map_file = 'map.png'
        # Инициализируем pygame
        pygame.init()
        screen = pygame.display.set_mode((600, 450))

        running = True
        while running:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False
                elif event.type == pygame.KEYUP:
                    if event.key == pygame.K_ESCAPE:
                        running = False
                    elif event.key == pygame.K_PAGEUP: