Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python向经度值添加小数_Python_Decimal_Latitude Longitude - Fatal编程技术网

Python向经度值添加小数

Python向经度值添加小数,python,decimal,latitude-longitude,Python,Decimal,Latitude Longitude,我有数千个NAD83纬度经度值,其中经度值以负数开始,如-747559718 为了在我使用的映射应用程序中正确使用,小数点必须位于4之后的特定坐标。它应该是-74.7559718 有时,经度值将为-123092886,小数点应在3之后。它应该是-123.092886 我通过JSON文件读取这些坐标,出于某种原因,它们没有小数。我正在寻找一个纯python的解决方案,在正确的位置插入小数 数字的长度为9或10位 我知道我可以在变量中输入经度值 s = longitude s[:3] + '.'

我有数千个NAD83纬度经度值,其中经度值以负数开始,如-747559718

为了在我使用的映射应用程序中正确使用,小数点必须位于4之后的特定坐标。它应该是-74.7559718

有时,经度值将为-123092886,小数点应在3之后。它应该是-123.092886

我通过JSON文件读取这些坐标,出于某种原因,它们没有小数。我正在寻找一个纯python的解决方案,在正确的位置插入小数

数字的长度为9或10位

我知道我可以在变量中输入经度值

 s = longitude
 s[:3] + '.' + s[3:]

我已经解决了我的问题:我所有的纬度坐标都在同一时期,作为一名地理空间分析员,我知道NAD83投影中的任何经度值都在同一时期,从1位开始,在第3位之后都会有一个小数位。在美国,其余的经度值要么以7、8或9开头,这些值在第二位之后总是有一个小数点。我不确定这个解决方案是否会在世界其他地方奏效,但它在这里就完成了

以下是我的解决方案,z是包含经度值的变量:

if str(z)[1:2] == '1':
    longitude = str(z)[0:4]+'.'+str(z)[4::]
else:
    longitude = str(z)[0:3]+'.'+str(z)[3::]
更新

更好的答案是:

longitude = z * 0.0000001

这也适用于纬度值

如果不是9位的情况,你可以只乘以0.00001,为什么
-123.092886
有六位小数,而
-74.02373
只有五位?你如何区分-3.000000和-30.00000?@taylorswift这就是文件中给出坐标的方式。有时它有5或6个小数位。数字总是有9位数,这很奇怪。我的意思是,小于100的坐标比大于等于100的坐标精度更高。你确定吗?此外,无法判断
-123092886
-123.092886
还是
-12.3092886
它看起来非常错误,我几乎可以保证这些值不是这样生成的。为什么它看起来是错误的?成功了。“latitudeE7”:402212350,“longitudeE7”:-747559718直接来自json文件它看起来是错误的,因为没有开发人员会通过这样的字符串函数来生成数字。因此,我确信您的第一个解决方案所采用的数字格式肯定会在某些值上被破坏。更新后的解决方案看起来更好,如“开发人员可以编写的东西”。它也简单得多,开发人员倾向于使用最简单的方法来满足需求,因此,如果您的解决方案比您正在解决的问题要复杂得多,那么您通常是做错了。比较两种解决方案的复杂性和可读性;)