2013-03-06 85 views
0

我正在更新我的应用程序以允许在使用UIImagePickerControllerSourceTypeSavedPhotosAlbum时将照片上传到包含的GPS元数据。 GPS数据的准确性非常重要。我遇到了一个问题,即使用ALAsset导出的位置数据与在Photoshop中打开相同照片时可以看到的照片的实际exif数据不同。ALAsset GPS元数据与exif GPS数据不匹配

我用两种方法来读取在Xcode的GPS数据:

ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) { 

CLLocation *location = [myasset valueForProperty:ALAssetPropertyLocation]; 

latitudeString = [NSString stringWithFormat:@"%g",point.latitude]; 

longitudeString = [NSString stringWithFormat:@"%g",point.longitude]; 

} 

ALAssetRepresentation *representation = [myasset defaultRepresentation]; 
NSDictionary *metadata = [representation metadata]; 

NSDictionary *gpsDict = [metadata objectForKey:@"{GPS}"]; 

NSNumber *latitudeNumber = [gpsDict objectForKey:@"Latitude"]; 

NSNumber *longitudeNumber = [gpsDict objectForKey:@"Longitude"]; 

if ([[gpsDict valueForKey:@"LatitudeRef"] isEqualToString:@"S"]) 
{ 

    //latitudeNumber = -latitudeNumber; 
} 

if ([[gpsDict valueForKey:@"LongitudeRef"] isEqualToString:@"W"]) 
{ 

    //longitudeNumber = -longitudeNumber); 

} 

在我使用作为一个例子的代表性照片两套以上代码给我一个纬度47.576333其中转换为47,34,35N

如果我在Photoshop中查看exif数据 - 纬度是47,34,59N

这些数字很接近 - 但它们并不相同。没有大约30%的照片发生这种情况。任何想法为什么?

编辑 - 照片店不给秒 - 它给34.59分钟,这确实是准确的。

+0

47,34,35N不是一个正确的表示,再看一下,是47 * 34'35“N(称为DMS)还是47 * 34.35'N(称为DM),其中”*“ “表示我的ipad没有的度数符号。 – AlexWien 2013-03-07 08:54:43

回答

1

你的转换是错误的,photoshop更正确。

47.576333(DEG)转换为47 * 34.5799'(DM)。可以四舍五入为47 * 34.58
这是photoshop明显显示的格式。

转化为DMS它给你的价值:47 * 34' 35" N (请全部替换 “有度*符号”。)

所以,你与DM交换DMS(辈分分秒)(度数)

+0

我误解了 - 我以为Photoshop给了我34分59秒,但你是正确的 - 这是34.59分钟。谢谢。 – Jennifer 2013-03-07 21:56:19