Определить ближайшую транзитную остановку из указанного места - PullRequest
44 голосов
/ 18 февраля 2012

Мне нужно получить всю ближайшую информацию об общественном транспорте в пределах определенного расстояния от заданного местоположения. Тип общественного транспорта: автобус, поезд и т. Д.

Вот что я имел в виду:

Если я использую Google Map для запроса «Транзитная остановка возле местоположения (например, Бугис-стрит, Сингапур)» * , то он вернет нам все ближайшие транзитные остановки, которые я хочу. Как показано на рисунке. Но мне нужен его API, чтобы получить эти детали. (например, номер автобуса №, идентификатор автобусной остановки и т. д., как показано на рисунке). Но я не смог найти ни одного.

Bus Stop

Вот что я пробовал

  1. Я пытался использовать API Google Map Nearby Place для поиска места с типом transition_station, bus_station, train_station и т.д .. . Но все они возвращают нулевой результат. Я мог использовать этот API только для поиска ближайшей достопримечательности, но не для ближайшего транзита.

  2. Я также проверил Google Transit API , но я нашел только API для вставки транзитных данных в Google, но не для их извлечения. Я думаю, что Google еще не опубликовал API транзита.


Дополнительная информация

У меня есть проверка сайта Gothere.sg . И как запутался? потому что они в состоянии обнаружить близлежащий транзит. Только потому, что они указывают направление «От-К».

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

Но нет ничего невозможного для меня

Last Resort

В качестве последнего средства я также уточняю у поставщика publictransport.sg . Я взломать с API. И узнал, что он может дать мне транзитную остановку с некоторой координатой. Но ему не хватает соседнего API, который можно найти на Google Map.

Итак, одним из обходных путей, о котором я мог подумать в данный момент, является использование провайдера в этом случае: publictransport.sg , который дает мне Stop ID и его координату. Чтобы сделать это, во-первых, мне нужно перевести название местоположения с помощью Google GeoCoding API в Coordinate, а затем я должен создать свой собственный соседний расчет, чтобы найти ближайшую станцию, сравнив искомую координату со всеми координатами станции, имеющимися у поставщика. 1061 *

Теперь это возможно для меня, но очень больно: -)


Вернуться к вопросу:

Есть ли способ получить все данные транзитной остановки из заданного местоположения (используя Google Maps API или любой другой API)? и как ты это сделал?


Спасибо

По крайней мере, спасибо, что прочитали мой длинный вопрос. Я ценю любую помощь от вас. Заранее спасибо: -)

Ответы [ 3 ]

28 голосов
/ 19 февраля 2012

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

Просто сделайте запрос с параметрами:

  • местоположение (latlng -объект данного местоположения)
  • радиус (радиус для поиска в метрах)
  • типов (массив допустимых типов, например ['bus_station','subway_station'])

Оформить скрипку: http://jsfiddle.net/doktormolle/aZrvs/

Для получения более подробной информации (автобусный номер нет, идентификатор автобусной остановки), у меня сейчас нет хорошей идеи.

Должен быть способ, чтобы эти данные на maps.google.com были получены с помощью AJAX, поэтому существует ресурс. Но до тех пор, пока нет открытого API для получения этих результатов, использование этого ресурса не будет законным.

0 голосов
/ 11 августа 2014

Вы можете по-прежнему перечислять все сервисный номер шины, идентификатор автобусной остановки (названия станций) после получения сведений о google-place-api, как сказано в @ Dr.Molle :.

Откройте веб-страницу подробностей ['result'] ['url'], а затем XPath строку списка идентификаторов шин.

Ниже приведен пример, чтобы получить информацию об автобусе Тайбэя вокруг местоположения (широта, долгота). Более подробно о реализации см. https://github.com/MikimotoH/gisTools/blob/master/google_place.py

places = get_web_json(
    'https://maps.googleapis.com/maps/api/place/nearbysearch/json?' +
    'key=%s&location=%f,%f' % (apikey, lat, lng) +
    '&rankby=distance&language=zh-TW&types=bus_station')
if places['status'] == 'OK':
    for result in places['results']:
        placeid = result['place_id']
        detail = get_web_json(
            'https://maps.googleapis.com/maps/api/place/details/' +
            'json?key=%s&placeid=%s' % (apikey, placeid) +
            '&language=zh-TW')
        station = detail['result']['name']
        loc = detail['result']['geometry']['location']
        buspage = get_webpage(detail['result']['url'])
        tree = lxml.html.document_fromstring(buspage)
        bus_elm = tree.xpath("/html/body/div[1]/div/div[4]/div[4]/div/div/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]/div/table/tr/td")[0]
        buses = list(filter(lambda s: len(s.strip()) > 0,
                            bus_elm.text_content().strip().split()))
        yield (station, float(loc['lat']), float(loc['lat']), buses)
0 голосов
/ 17 сентября 2012

Добавление & output = json к вашему первоначальному запросу (http://maps.google.com/maps?q=transit%20stop%20near%20New%20Bugis%20Street%20Singapore&output=json), не является законным способом получить эту информацию?

...