Python坐标线性插值应用实现


Posted in Python onNovember 13, 2019

一、背景

在野外布设700米的测线,点距为10米,用GPS每隔50米测量一个坐标,再把测线的头和为测量一个坐标。现在需使用线性插值的方法求取每两个坐标之间的其他4个点的值。

Python坐标线性插值应用实现

二、插值原理

使用等比插值的方法

起始值为 a

终止值为 b

步长值为 (a-b)/5

后面的数分别为 a+n, a+2n, a+3n, a+4n

三、代码实习对 x 插值

interx.py

import numpy as np
f = np.loadtxt('datax.txt')
a = f[:, 0]
b = f[:, 1]
for j in np.arange(len(a)):
	aa = a[j]*1000	# np.arrange()会自动去掉小数
	bb = b[j]*1000
	n = (bb-aa) / 5
	x = np.arange(6)
	x[0] = aa
	print(x[0]/1000)
	for i in range(1, 5, 1):
		x[i] = x[i-1]+n
		print(x[i]/1000)
		i = i+1
	# print(bb/1000)
	# print("\n")

datax.txt

514873.536 	514883.939 
514883.939 	514894.358 
514894.358 	514903.837 
514903.837 	514903.807 
514903.807 	514907.179 
514907.179 	514911.356 
514911.356 	514913.448 
514913.448 	514913.315 
514913.315 	514917.344 
514917.344 	514923.684 
514923.684 	514924.801
514924.801	514929.697 
514929.697 	514916.274

对 y 插值

intery.py

import numpy as np
f = np.loadtxt('datay.txt')
a = f[:, 0]
b = f[:, 1]
for j in np.arange(len(a)):
	aa = (a[j] - 2820000)*1000	# 数据太长会溢出
	bb = (b[j]-2820000)*1000
	n = (bb-aa) / 5
	x = np.arange(6)
	x[0] = aa
	print(x[0]/1000+2820000)
	for i in range(1, 5, 1):
		x[i] = x[i-1]+n
		print(x[i]/1000+2820000)
		i = i+1
	# print(bb/1000)
	# print("\n")

datay.txt

2820617.820 	2820660.225 
2820660.225 	2820693.988 
2820693.988 	2820819.199 
2820819.199 	2820831.510 
2820831.510 	2820858.666 
2820858.666 	2820973.487 
2820973.487 	2821017.243 
2821017.243 	2821019.518 
2821019.518 	2821058.223 
2821058.223 	2821097.575 
2821097.575 	2821144.436 
2821144.436 	2821173.356 
2821173.356 	2821218.889

四、最终成果

手动把两次插值结果复制到dataxy中

dataxy.txt

514873.536 	2820617.819 
514875.616 	2820626.300 
514877.696 	2820634.781 
514879.776 	2820643.262 
514881.856 	2820651.743 
514883.939 	2820660.225 
514886.022 	2820666.977 
514888.105 	2820673.729 
514890.188 	2820680.481 
514892.271 	2820687.233 
514894.358 	2820693.987 
514896.253 	2820719.029 
514898.148 	2820744.071 
514900.043 	2820769.113 
514901.938 	2820794.155 
514903.837 	2820819.199 
514903.831 	2820821.661 
514903.825 	2820824.123 
514903.819 	2820826.585 
514903.813 	2820829.047 
514903.807 	2820831.509 
514904.481 	2820836.940 
514905.155 	2820842.371 
514905.829 	2820847.802 
514906.503 	2820853.233 
514907.179 	2820858.666 
514908.014 	2820881.630 
514908.849 	2820904.594 
514909.684 	2820927.558 
514910.519 	2820950.522 
514911.356 	2820973.487 
514911.774 	2820982.238 
514912.192 	2820990.989 
514912.610 	2820999.740 
514913.028 	2821008.491 
514913.448 	2821017.242 
514913.421 	2821017.697 
514913.394 	2821018.152 
514913.367 	2821018.607 
514913.340 	2821019.062 
514913.315 	2821019.518 
514914.120 	2821027.259 
514914.925 	2821035.000 
514915.730 	2821042.741 
514916.535 	2821050.482 
514917.344 	2821058.223 
514918.612 	2821066.093 
514919.880 	2821073.963 
514921.148 	2821081.833 
514922.416 	2821089.703 
514923.684 	2821097.575 
514923.907 	2821106.947 
514924.130 	2821116.319 
514924.353 	2821125.691 
514924.576 	2821135.063 
514924.801 	2821144.436 
514925.780 	2821150.219 
514926.759 	2821156.002 
514927.738 	2821161.785 
514928.717 	2821167.568 
514929.697 	2821173.356 
514927.012 	2821182.462 
514924.327 	2821191.568 
514921.642 	2821200.674 
514918.957 	2821209.780

Python坐标线性插值应用实现

五、画图对比

dataxy.py

import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt
# 解决中文字体显示不出来
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"] = False

a = np.loadtxt("datax.txt")
b = np.loadtxt('datay.txt')
c = np.loadtxt('dataxy.txt')
x = a[: ,0]
y = b[: ,0]
xx = c[:,0]
yy = c[:,1]
plt.plot(x,y,color = 'orange',
		label = '插值线段')
plt.scatter(xx,yy,marker='o',
	c = 'deepskyblue',
	alpha = 0.6,
	label = '实测点位')
plt.legend()
plt.title('Python坐标插值')
plt.grid()
# 保存高清图片,dpi表示分辨率
plt.savefig('out.png',dpi = 600)
plt.show()

Python坐标线性插值应用实现

文件结构

Python坐标线性插值应用实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
python在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
编写简单的Python程序来判断文本的语种
Apr 07 Python
微信跳一跳python辅助脚本(总结)
Jan 11 Python
python list是否包含另一个list所有元素的实例
May 04 Python
python 统计文件中的字符串数目示例
Dec 24 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
Django实现微信小程序支付的示例代码
Sep 03 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
python爬虫爬取某网站视频的示例代码
Feb 20 Python
python如果快速判断数字奇数偶数
Nov 13 #Python
Python 异步协程函数原理及实例详解
Nov 13 #Python
python文字转语音实现过程解析
Nov 12 #Python
python文字转语音的实例代码分析
Nov 12 #Python
Python上下文管理器全实例详解
Nov 12 #Python
python3-flask-3将信息写入日志的实操方法
Nov 12 #Python
Python API自动化框架总结
Nov 12 #Python
You might like
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
一个用于网络的工具函数库
2006/10/09 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
初识Node.js
2015/03/20 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
python使用minimax算法实现五子棋
2019/07/29 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
2019/12/05 Python
python实现吃苹果小游戏
2020/03/21 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
工程地质勘察专业大学生求职信
2013/10/13 职场文书
办公室副主任职责范本
2014/03/08 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
售房协议书范本2014
2014/10/23 职场文书
初中作文评语
2014/12/25 职场文书
入伍通知书
2015/04/23 职场文书
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
新手入门Mysql--sql执行过程
2021/06/20 MySQL