[PATCH] Improving matching of ISO 6709 GPS format

Tim Wootton tim at tee-jay.demon.co.uk
Sun Jan 12 13:17:28 UTC 2014


The decimal format we had before seemed to want N, S, E or W as the 1st 
non-whitespace character which is why I used the absence of that as the 
selector, or did I miss something? If you continue to do that ISO 
doesn't break the old decimal.

This breaks what seemed a nice side-effect in the ISO format decoding 
which was if you leave spaces where the awkward degree symbols belong 
subsurface added them for you.



On 12/01/14 05:37, Miika Turkia wrote:
> ISO 6709 format dictates that the format includes characters ° (degree),
> ' and ". If we only test for the coordinates starting with decimal, we
> match also the decimal notation on this test. Thus adding test for the
> degree sign not to match input as ISO 6709 when coordinates are given in
> decimal notation.
>
> Signed-off-by: Miika Turkia <miika.turkia at gmail.com>
> ---
>   qthelper.cpp | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/qthelper.cpp b/qthelper.cpp
> index 9d503cb..cd47209 100644
> --- a/qthelper.cpp
> +++ b/qthelper.cpp
> @@ -119,7 +119,7 @@ bool parseGpsText(const QString& gps_text, double *latitude, double *longitude)
>
>   	// ISO 6709 Annex D representation
>   	// http://en.wikipedia.org/wiki/ISO_6709#Representation_at_the_human_interface_.28Annex_D.29
> -	if (gps_text.at(0).isDigit()) {
> +	if (gps_text.at(0).isDigit() && gps_text.count(UTF8_DEGREE) > 0) {
>   		gpsStyle = ISO6709D;
>   		regExp = QString("(\\d+)[" UTF8_DEGREE "\\s](\\d+)[\'\\s](\\d+)([,\\.](\\d+))?[\"\\s]([NS%1%2])"
>   					 "\\s*(\\d+)[" UTF8_DEGREE "\\s](\\d+)[\'\\s](\\d+)([,\\.](\\d+))?[\"\\s]([EW%3%4])")
>



More information about the subsurface mailing list