识别当前位置路线类型
Recognize current location route type
我正在做一个项目,我必须区分移动类型(汽车、电车、公共汽车、火车、地铁......)我目前正在使用速度系统来区分大多数使用最小值和最大值对于每种类型(你会说效率不高 :))但是当我想区分汽车和地铁时,问题就来了——它们都有相同的速度(或多或少),但唯一能区分它们的是地点当前是 RAILWAYS 和 ROUTE(?)。
想法:使用 OpenStreetMap 并检查 90% 的行程是否在铁路上...
你怎么看?你有没有其他我可能没有想过的想法,以前从未使用过 OpenStreetMap,但使用蜂窝数据让我很困扰......
感谢您的帮助!
编辑(感谢我得到的回应 - 谢谢!):
这是我想出的,如果您有其他想法可以使它更准确,请告诉我:)
[_motionActivityManager startActivityUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMMotionActivity *activity) {
dispatch_async(dispatch_get_main_queue(), ^{
if ([activity stationary] && !isStationnary)
{
isStationnary = TRUE;
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"Train station";
request.region = MKCoordinateRegionMakeWithDistance(UIApplication sharedApplication.tracker.lastKnownLocation.coordinate, 500, 500);
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
for (MKMapItem *item in response.mapItems) {
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:item.placemark.coordinate radius:50
identifier:@"train station region"];
if ([region containsCoordinate: UIApplication sharedApplication.tracker.lastKnownLocation.coordinate]) {
NSLog(@"IN REGION! %@", item);
}
else {
NSLog(@"NOT IN REGION! %@", item);
}
}
}];
}
else if ([activity walking])
{
isStationnary = FALSE;
}
});
}];
您可以使用 OSM XAPI 从 OpenStreetMaps 导出您需要的数据。这可能会为您提供可接受的文件大小以随应用程序一起发布。
我想您会遇到汽车或电车内 GPS 精度的问题。电车路线和汽车之间的距离可能小于您从 phone.
获得的 GPS 位置的水平精度
您可以查看用户坐下的位置(即停止行走)。如果它靠近电车站或用户的房子,那会给你一个很好的指示。
我正在做一个项目,我必须区分移动类型(汽车、电车、公共汽车、火车、地铁......)我目前正在使用速度系统来区分大多数使用最小值和最大值对于每种类型(你会说效率不高 :))但是当我想区分汽车和地铁时,问题就来了——它们都有相同的速度(或多或少),但唯一能区分它们的是地点当前是 RAILWAYS 和 ROUTE(?)。
想法:使用 OpenStreetMap 并检查 90% 的行程是否在铁路上...
你怎么看?你有没有其他我可能没有想过的想法,以前从未使用过 OpenStreetMap,但使用蜂窝数据让我很困扰......
感谢您的帮助!
编辑(感谢我得到的回应 - 谢谢!): 这是我想出的,如果您有其他想法可以使它更准确,请告诉我:)
[_motionActivityManager startActivityUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMMotionActivity *activity) {
dispatch_async(dispatch_get_main_queue(), ^{
if ([activity stationary] && !isStationnary)
{
isStationnary = TRUE;
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = @"Train station";
request.region = MKCoordinateRegionMakeWithDistance(UIApplication sharedApplication.tracker.lastKnownLocation.coordinate, 500, 500);
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
for (MKMapItem *item in response.mapItems) {
CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:item.placemark.coordinate radius:50
identifier:@"train station region"];
if ([region containsCoordinate: UIApplication sharedApplication.tracker.lastKnownLocation.coordinate]) {
NSLog(@"IN REGION! %@", item);
}
else {
NSLog(@"NOT IN REGION! %@", item);
}
}
}];
}
else if ([activity walking])
{
isStationnary = FALSE;
}
});
}];
您可以使用 OSM XAPI 从 OpenStreetMaps 导出您需要的数据。这可能会为您提供可接受的文件大小以随应用程序一起发布。
我想您会遇到汽车或电车内 GPS 精度的问题。电车路线和汽车之间的距离可能小于您从 phone.
获得的 GPS 位置的水平精度您可以查看用户坐下的位置(即停止行走)。如果它靠近电车站或用户的房子,那会给你一个很好的指示。