python - 插值经度和纬度坐标的数据系列 - 输入数据中的错误
问题描述
我想根据一组经度和纬度值执行插值。
我用库 SciPy.interpolate 试过这个。下面显示的代码也适用于简单的数据系列。
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate
import csv
csv_file = csv.DictReader(open(file=file_path))
longitude = []
latitude = []
for row in csv_file:
longitude.append(float(row['longitude']))
latitude.append(float(row['latitude']))
plt.scatter(longitude, latitude, color='blue', label='given')
tck, u = interpolate.splprep([longitude, latitude], s=0.0)
x_i, y_i= interpolate.splev(np.linspace(0, 1, 100), tck)
plt.plot(x_i, y_i, color='green', label='calculated')
plt.legend()
plt.show()
如果我尝试使用真实的经度和纬度值执行代码,我会得到一个我无法解释其含义的异常。
在第 15 行抛出异常:
(tck, u = interpolate.splprep([longitude, latitude], s=0.0))
它说:ValueError: Invalid inputs.
但我只是不知道哪些输入应该是无效的。读入的所有值都是浮点值,None 值也不存在。插值应该在大约 900 个坐标上执行。但即使有 50 个坐标,也会引发此异常。我的代码中是否有任何限制可以解释这种异常?
非常感谢你!
解决方案
csv 导入一定有问题,我只是按原样运行了 1000 个随机浮点对的代码,它执行时没有任何错误。尝试初始化你的数组
for i in range(0, 1000):
longitude.append(random.randrange(0.0, 120.0))
latitude.append(random.randrange(0.0, 89.0))
而不是导入 csv 并查看您的问题是否仍然存在。
推荐阅读
- javascript - 如何在 Jison(或 Bison)中进行链式比较
- html - 为什么我的收藏图标没有显示在移动搜索结果中?
- discord - 我想在 discord.js 中创建一个 eval 命令
- sql - 使用array_agg和struct后如何在列中查找值?
- php - 抓取 DuckDuckGo 的 HTML 的多个页面
- html - jquery不会从另一个图像设置图像src
- r - 数据点未显示在 R Shiny 散点图中
- javascript - p5 绘画应用程序:更精确的铅笔可能吗?最近的 pmouseX/Y?
- python - CS50 credit.py 尝试通过转换为整数来添加字符串的总和
- c++ - C++ MySql 连接器问题