2016-11-17 15 views
3

我有成千上万NAD83纬度经度值的其中经度值开始以负像-747559718的Python添加到小数经度值

这个特定坐标小数需要处于后4到映射适当使用我使用的应用程序。它应该是-74.7559718

有次在经度值将是-123092886在小数应该是3之后应该-123.092886

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

数字将是9或10位长

我知道我可以做这样的事情,一旦我有一个变量

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

如果它不是为9位数的情况下,你可以只乘以0.00001 –

+0

及为何'-123.092886'有六个小数位,但'-74.02373'只有五? –

+0

如何区分-3.000000和-30.00000? – spectras

回答

1

我已经找到了我的问题,我的经度值:我所有的纬度长坐标是同期美国,我知道,从一个地理空间分析,在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::] 

UPDATE

更好的答案:

longitude = z * 0.0000001 

这也适用于纬度值

+0

它看起来很错,我几乎可以保证这不是如何建立这些值。 – spectras

+0

它为什么看起来不对?有效。“latitudeE7”:402212350, “longitudeE7”:-747559718直接从json文件中获得 – ziggy

+1

这看起来不对,因为没有开发人员通过像这样的字符串函数运行它们来构建数字。因此,我确信您的第一个解决方案假定的数字格式必然会打破一些值。 **您的更新解决方案看起来更好**,就像_“开发人员实际上可以编写的东西”一样。它也简单得多,开发人员倾向于实现需求的最简单方法,因此如果您的解决方案比您正在解决的问题复杂得多,那么您通常会做错了。比较两种解决方案的复杂性和可读性;) – spectras