2014-01-07 237 views
1

通常,我使用14.some numbers and 121.some numbers as map maps on my app。
虽然我发送不同的GPS日志一个新的模块上工作,我得到这个坐标:拆分字符串没有拆分器

1434.7906
12103.5434

起初我以为我的应用程序是不是路由,但后来我看到的坐标给出是关闭的,或者说是直接的,格式错误(小数点右移两次)。模块有问题吗?还是有一个公式将其转换为常规坐标?

编辑更新:我发现上面的格式是14D 34M 7906S-- (从下面的链接得到这个)
最终,给了我一个问题。 更改标题
如何将其转换为小数形式

  • 回答:就像分裂后的字符。 - >我的第一个想法,但..

12103怎么样?我需要它是121和03--这需要在3个字符后分裂。因此,我无法控制字符串的爆发,甚至没有。需要帮忙!感谢

在一天结束的时候,我需要高于2被转换成这样: 14.5798433°, 121.0590567°
Calc Source

enter image description here

+0

_...我发现上面的格式是在14D 34M 7906S ...我觉得你对fromat的假设并不完全正确......你为什么要把2D 11M 46S表示为7906S? –

+0

您的输入似乎有点令人困惑,但您可以通过基于数学限制/数值的规则验证哪些部分可以是度数,分数和秒数,从而以数学方式进行操作。 –

+0

我得到的确切数据是两个上面..现在,我已经研究了一下,如果他们将扩大1434.7906相当于14Degrees,34分钟7906Seconds。 (14°34.79060',121°03.54340') – AdorableVB

回答

2

提供你前导零(对于世界其他地区的事务),长度总是3位(0-180),纬度是2位(0-90)。

的符号才有意义,如果它是关于度+小数分,即

1434.7906 = 14° + 34.79060' = 14 + (34.79060/60) ° 

在C#中,未经测试:

string lat = ..., lon = ...; 

double la = double.Parse(lat.Substring(0, 2)) + double.Parse(lat.Substring(2))/60.0; 
double lo = double.Parse(lon.Substring(0, 3)) + double.Parse(lon.Substring(3))/60.0; 
+0

谢谢!很多..你有深深的理解能力先生:> – AdorableVB

1

我不熟悉的坐标,但它看起来像第一您的值必须是5位数字,第二个值是4位数字。所以我会首先在时段(完全停止)角色上分割。然后,如果第一个值是4位数,则将0置于前面以填充5。然后分割位置,所以你有014和34,然后变成14和34等。

0

壳牌分裂数

$  echo 1434 |sed 's/\(..\)$/ \1/' 
14 34 

$  echo 12103 |sed 's/\(..\)$/ \1/' 
121 03 

如果您需要处理与指望输出全数字:

$  echo 1434.7906 |sed -r 's/(.*)(..)\.(.*)/\1Degress, \2Minutes \3Seconds/' 
14Degress, 34Minutes 7906Seconds 
0

注意,经度和纬度可以是负数。这里有一种功能在类型转换中很麻烦:

Function DecDegree(dd_mm_decmm As String) As String 
     Dim deg As String = dd_mm_decmm.Substring(0, dd_mm_decmm.IndexOf(".") - 2) 
     Dim mm_dec As String = dd_mm_decmm.Substring(dd_mm_decmm.IndexOf(".") - 2) 
     Dim decDegrees As Double = CDbl(deg) + (CDbl(mm_dec/60) * If(CDbl(deg) < 0, -1, 1)) 
     Return FormatNumber(decDegrees, 6) 
    End Function 

拆分是基于小数点的位置。分钟转换的数学检查是否需要添加或减少。该函数返回6个小数点,这对于任何调查级别的GPS都是足够的。

+0

对不起,但我怎么用这个?说,我想转换上面给出的那两个。 – AdorableVB

+0

我会忽略最后一个FormatNumber()并返回decDegrees。 –

+0

转换二:调用func两次 – rheitzman