2011-11-26 17 views
9

मेरे पास एक स्थान सेवा ऐप है, जिसमें उपयोगकर्ता की ऊंचाई प्रदान की जाती है। हालांकि, मैंने पाया है कि CLLocationManager द्वारा प्रदान की गई ऊंचाई सटीकता बेहद गलत है। जब मैं दो ही धब्बे दो बार परीक्षण करता हूं, कभी-कभी ऊंचाई अंतर चालीस फीट होता है और कभी-कभी यह सौ होता है। क्या कोई तरीका है कि मैं CLLocation की लंबवत सटीकता में सुधार कर सकता हूं, या क्या उपयोगकर्ता की ऊंचाई (तृतीय-पक्ष पुस्तकालय) प्राप्त करने का कोई अलग तरीका है? मैंने पहले से ही CLLocationManager द्वारा प्रदान किए गए नए स्थान की लंबवत सटीकता संपत्ति की जांच करने की कोशिश की है और यदि यह पर्याप्त नहीं है, तो इसे बाहर फेंक दिया गया है, लेकिन जब भी यह 'सटीक' है, तब भी यह वास्तव में सटीक नहीं है। आपके समय के लिए धन्यवाद!CLLocation ऊंचाई सटीकता

अभी मैं उपयोग कर रहा हूँ:

if([newLocation verticalAccuracy] < 30) { 
    if(isCustomary) 
     altitudeLabel.text = [NSString stringWithFormat:@"%.2f feet", ([newLocation altitude] * 3.2808399)]; 
    else 
     altitudeLabel.text = [NSString stringWithFormat:@"%.2f meters", [newLocation altitude]]; 
} 

समस्याएं है कि कोड के साथ: अक्सर verticalAccuracy 30 नीचे कभी नहीं हो जाता है, और जब यह होता है, कि अभी भी काफी सटीक के पास नहीं है; मैंने अपने घर (एक कहानी) के चारों ओर चलने वाले कोड का परीक्षण किया है, और यह कहता है कि ऊंचाई उन्नीस फीट तक बदल जाती है, जो मुझे यकीन है कि यह सच नहीं है।

उत्तर

22

ऊंचाई जीपीएस उपग्रह से ली गई स्वाभाविक कम सटीक है कि जीपीएस से क्षैतिज समाधान उपग्रहों की geometry की वजह से है । आपको क्षैतिज सटीकता से लंबवत सटीकता 1.5 से 3 गुना अधिक होने की अपेक्षा करनी चाहिए। यह जीपीएस की सिर्फ एक सीमा है और उपकरण के दृष्टिकोण के लिए जीपीएस का उपयोग करने से पहले विमानन को डब्ल्यूएएएस सुधार की आवश्यकता क्यों है।

जब ऊर्ध्वाधर सटीकता 20 या 30 मीटर है तो आपको ऊंचाई को 100 फीट तक की उम्मीद करनी चाहिए। जब आप अवास्तविक में घर के चारों ओर घूमते हैं तो यह 1 9 फीट तक भिन्न नहीं होने की उम्मीद है।

मापने की त्रुटियों को फ़िल्टर करने में सहायता के लिए हालिया "अच्छी" ऊंचाई रीडिंग के रोलिंग, भारित औसत (या Kalman filter) को आप क्या कर सकते हैं।

+0

हां, यह दुर्भाग्यपूर्ण सत्य प्रतीत होता है। अच्छी व्याख्या और अच्छे लिंक के लिए +1। –

2

आपने किस कोड का प्रयास किया है? इस ऊंचाई के लिए सबसे अच्छा कोड तो मुझे नहीं लगता कि इस परे कुछ भी है:

-(void)awakeFromNib { 
    locmanager = [[CLLocationManager alloc] init]; 
    [locmanager setDelegate:self]; 
    [locmanager setDesiredAccuracy:kCLLocationAccuracyBest]; 
    [locmanager startUpdatingLocation]; 
} 

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    heightMesurement.text = [NSString stringWithFormat: @"%.2f m", newLocation.altitude]; 
} 

    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{ 
    heightMesurement.text = @"0.00 m"; 
} 
+0

मेरा संपादन देखें, कृपया –

+0

जो मैं सुझाता हूं वह सिर्फ मेरे कोड का उपयोग करना है क्योंकि यह iDevices के साथ सबसे अच्छी सटीकता है। यह अभी भी एक फोन है और सटीकता शारीरिक सीमाओं के कारण महान नहीं है। –

संबंधित मुद्दे