2010-11-01 3 views
1

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

1) используя GPS и карту маршрутов метро, ​​отслеживайте местоположение пользователя и уведомляет его о достижении цели 2) попросите его нажать, когда он начнет действовать поезд, когда поезд начинает (что может быть нереалистичным, потому что пользователь мог просто забыть это сделать), использовать известное время в пути от начальной станции до конечной станции и просто уведомлять его о времени.

может кто-нибудь сказать мне, есть ли другие хорошие подходы? Благодарю.

+1

Служба, подобная этой, должна быть надежной. Без четкого представления о южном небе у вас нет GPS, так что это невозможно. Измерение времени начала и окончания тоже отсутствует. Даже если у вас есть надлежащий фид данных, который был обновлен в прямом эфире, у вас все еще есть проблема с проблемами обновления и отсутствием службы сотовой связи в большинстве туннелей. Простое догадки о времени начала и окончания для этого не достаточно надежны. Честно говоря, лучший способ сделать эту работу - предупредить пользователя, на какой станции смотреть. – Brad

+0

Вы можете подробно рассказать о том, как предупредить пользователя, на какой станции смотреть? например, пользователь выбирает станцию ​​назначения, и каждые 2 минуты карта метро будет мигать на экране при мигании станции назначения? – user270811

ответ

2

Возможно, вам придется идти с «мертвым расчетом». В принципе, мертвый расчет - это метод навигации, в котором используется подтвержденное начальное местоположение, а также точная скорость и время для расчета нового местоположения. Имейте в виду, что скорость сама по себе является комбинацией заголовка и скорости и что заголовок должен быть истинным заголовком. В самолете заголовок компаса должен быть объединен со скоростью и направлением ветра, чтобы получить истинный заголовок. Я не думаю, что вам приходится учитывать дрейф в метро, ​​но вам придется учитывать различную ориентацию устройства, когда пользователь перемещается или использует само устройство. Кроме того, только потому, что заголовок обычно является компасом, это не значит, что это должно быть. Вы можете выполнить работу, используя только акселерометры и таймер.

Правильное использование мертвых расчётов также требует частых «сбросов» в известные местоположения по мере их достижения, чтобы ошибки не могли скомпенсироваться. Для этого приложения я бы сказал, что определение кривых и стоп-сигналов может использоваться как сброс.Вы можете получить ложные срабатывания для «сервисных» остановок, которые слишком близки к реальным остановкам, но они могут быть достаточно редкими, чтобы игнорировать. Фактически, если бы это не было остановкой выхода, это могло бы не иметь значения, потому что вы все еще могли бы быть достаточно точными для предупреждения о следующей остановке, и если бы была остановка выхода, это не имело бы никакого значения, потому что поездка закончилась.

Подводя итог: вы должны быть уверены, что у вас есть хорошая начальная отправная точка; вам необходимо компенсировать переориентацию устройства, чтобы получить истинный заголовок; вам нужно знать свою среднюю скорость между изменениями курса и временем по заголовку для расчета расстояния по курсу. Вы можете повысить общую точность путем сброса на известных ориентирах.

Редактировать: Я не знаю, приближается ли это к ответу, но Крис Стрэттон поднял интересный момент о суммировании векторов акселерометра. Можно ли достаточно точно отслеживать ориентацию устройства, чтобы иметь надежный независимый от ориентации вектор гравитации? Можете ли вы сохранить это из своей векторной суммы? Может ли это обеспечить полезное ускорение вдоль полезного независимого от ориентации вектора? Если это так, то отслеживание продолжительности ускорения даст вам среднюю скорость для этой продолжительности и конечную скорость для окончания ускорения. При отсутствии ускорения скорость будет оставаться постоянной. Включение этого в совокупность могло бы свести неточность к неточности с точки зрения бесполезности.

+0

У вас нет ничего отдаленно приближающегося к используемой метрике скорости. Интеграция акселерометров не принесет вам ничего полезного. С большой удачей вы могли бы обнаружить удар по каждому рельсовому суставу, но все же довольно надуманным. –

+0

@ Крис Стреттон: Да, я понятия не имею, целесообразно ли использовать ускорение и продолжительность, чтобы придумать скорость. Возможно, если устройство будет полностью привязано к поезду, но попытка разобраться в векторах на переносном устройстве даст мне головную боль. Тем не менее, многие вещи дают мне головную боль, что я думал, что это, по крайней мере, упоминание мертвых расплаты. – jadero

1

Оба они звучат как плохие решения. Вы почти наверняка не получите трассировку GPS в метро. И второй способ звучит так, будто он будет недостаточно точным, чтобы приложение было бесполезным.

1

Внимательно прочитайте ответ Фалмарри. Он совершенно прав, хотя он не дал вам ответа. Позвольте мне попробовать ...

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

Возможно, вы захотите использовать способ узнать расстояние между текущим местоположением и местоположением станции. Вы можете использовать некоторые из существующих алгоритмов, например Haversine formula.

2

Если линия метро имеет сотовую услугу (некоторые из них были вынуждены отключить от соображений безопасности), вы могли бы что-то сделать с сетевым местоположением.

Вы можете использовать акселерометр, чтобы попытаться обнаружить и подсчитать остановки станции, но поезда останавливаются между станциями время от времени из-за задержек впереди. Кроме того, время автономной работы будет уменьшено. EDIT: понял, что вы не сможете сказать ускорение от торможения, поскольку вы не имеете представления об ориентации (если вы не обнаружите, что датчик компаса работоспособен в этой среде) - вы могли видеть только, что векторная сумма трех акселерометров была больше, чем гравитация в течение нескольких секунд.

Вы можете попытаться использовать микрофон для обнаружения звуков двигателей поездов и тормозов (некоторые из них чрезвычайно характерны), но это имеет ту же проблему с временем автономной работы и незапланированными остановками между станциями. Не говоря уже о том, что запланированные станции обходятся для ремонтных работ.

Возможно, вы должны предоставить пользователю прокручиваемый список станций, обозначающих путешествие, и позволить им отслеживать.

+0

Можете ли вы рассказать о том, как использовать прокручиваемый список станций? снова, мигающие точки на карте? – user270811

+0

Нет карты, сделайте вертикальный список станций в одной строке, от начала до конца путешествия (часть на этой линии). Часто такой список размещается на платформе или горизонтально в автомобиле с огнями, которые включаются по мере прохождения каждой станции. Но в таком городе, как Нью-Йорк, вас нужно будет подключить к уведомлениям об изменениях в услугах, поскольку станции можно обойти, а поезда могут быть перенаправлены по другой линии. Тогда вы не можете много сделать, когда непреднастроенные изменения от экспресс к местным или локальным, чтобы выразить, объявляются в системе ПА в поезде. –

Смежные вопросы