我想用python进行blinear插值.
我要插入高度的示例gps点是:
B = 54.4786674627
L = 17.0470721369
Run Code Online (Sandbox Code Playgroud)
使用具有已知坐标和高度值的四个相邻点:
n = [(54.5, 17.041667, 31.993), (54.5, 17.083333, 31.911), (54.458333, 17.041667, 31.945), (54.458333, 17.083333, 31.866)]
Run Code Online (Sandbox Code Playgroud)
z01 z11
z
z00 z10
Run Code Online (Sandbox Code Playgroud)
这是我的原始尝试:
import math
z00 = n[0][2]
z01 = n[1][2]
z10 = n[2][2]
z11 = n[3][2]
c = 0.016667 #grid spacing
x0 = 56 #latitude of origin of grid
y0 = 13 #longitude of origin of grid
i = math.floor((L-y0)/c)
j = math.floor((B-x0)/c)
t = (B - x0)/c - j
z0 = (1-t)*z00 …Run Code Online (Sandbox Code Playgroud) 我有两台发电机g1和g2
for line in g1:
print line[0]
Run Code Online (Sandbox Code Playgroud)
[a,a,a]
[b,b,b]
[c,c,c]
for line1 in g2:
print line1[0]
Run Code Online (Sandbox Code Playgroud)
[1,1,1]
[2,2,2]
[3,3,3]
for line in itertools.chain(g1, g2):
print line[0]
Run Code Online (Sandbox Code Playgroud)
并[a,A,A]
[B,B,B]
[C,C,C]
[1,1,1]
[2,2,2]
[3,3,3]
怎么样
得到如下输出:
[a,a,a],[1,1,1]
[b,b,b],[2,2,2]
[c,c,c],[3,3, 3]
或
并[a,A,A,1,1,1]
[B,B,B,2,2,2]
[C,C,C,3,3,3]
谢谢您的帮助.
这是我第一次尝试使用pyparsing,我想问一下如何过滤这个样本行:
survey = '''GPS,PN1,LA52.125133215643,LN21.031048525561,EL116.898812'''
Run Code Online (Sandbox Code Playgroud)
获得如下输出:1,52.125133215643,21.031048525561,116.898812
一般来说,我有理解pyparsing逻辑的问题,所以对这个例子的任何帮助将不胜感激.谢谢
我尝试加入两个csv文件,其中key是第一列的值.没有标题.
文件具有不同数量的行和行.
必须保留文件的顺序.
档案a:
john,red,34
andrew,green,18
tonny,black,50
jack,yellow,27
phill,orange,45
kurt,blue,29
mike,pink,61
Run Code Online (Sandbox Code Playgroud)
文件b:
tonny,driver,new york
phill,scientist,boston
Run Code Online (Sandbox Code Playgroud)
期望的结果:
john,red,34
andrew,green,18
tonny,black,50,driver,new york
jack,yellow,27
phill,orange,45,scientist,boston
kurt,blue,29
mike,pink,61
Run Code Online (Sandbox Code Playgroud)
我检查了所有相关的线程,我相信你们中的一些人会将这个问题重复,但我还没有找到解决方案.
我抓住了基于字典的解决方案,但这种方法不处理从文件'a'条件保留行顺序.
import csv
from collections import defaultdict
with open('a.csv') as f:
r = csv.reader(f, delimiter=',')
dict1 = {}
for row in r:
dict1.update({row[0]: row[1:]})
with open('b.csv') as f:
r = csv.reader(f, delimiter=',')
dict2 = {}
for row in r:
dict2.update({row[0]: row[1:]})
result = defaultdict(list)
for d in (dict1, dict2):
for key, value in d.iteritems():
result[key].append(value) …Run Code Online (Sandbox Code Playgroud) 我有这样简单的情节:
matplotlib.pyplot as plt
pt_no = [1,2,3]
coord_x = [6035763.111, 6035765.251, 6035762.801]
coord_y = [6439524.100, 6439522.251, 6439518.298]
fig, ax = plt.subplots()
ax.scatter(coord_y, coord_x, marker='x')
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False)
for i, txt in enumerate(pt_no):
ax.annotate(txt, (coord_y[i], coord_x[i]))
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是当您在图形上移动或按住光标时,坐标显示在绘图窗口右上角的坐标看起来像6.43953e + 06.
如何让我的输入坐标完全按原样显示,例如
6439518.298而不是6.43953e + 0
?
提前致谢
我想为此示例数据集执行转换.
在一个坐标[primary_system]系统中有四个已知点坐标x,y,z,并且接下来四个已知点具有属于另一个坐标系[secondary_system]的坐标x,y,h.那些点对应; 例如,primary_system1 point和secondary_system1点完全相同,但我们在两个不同的坐标系中有它的坐标.所以我在这里有四对调整点,并希望根据调整将另一个点坐标从主系统转换到二次系统.
primary_system1 = (3531820.440, 1174966.736, 5162268.086)
primary_system2 = (3531746.800, 1175275.159, 5162241.325)
primary_system3 = (3532510.182, 1174373.785, 5161954.920)
primary_system4 = (3532495.968, 1175507.195, 5161685.049)
secondary_system1 = (6089665.610, 3591595.470, 148.810)
secondary_system2 = (6089633.900, 3591912.090, 143.120)
secondary_system3 = (6089088.170, 3590826.470, 166.350)
secondary_system4 = (6088672.490, 3591914.630, 147.440)
#transform this point
x = 3532412.323
y = 1175511.432
z = 5161677.111<br>
Run Code Online (Sandbox Code Playgroud)
目前我尝试使用四对点中的每一对来平均x,y和z轴的平移,如:
#x axis
xt1 = secondary_system1[0] - primary_system1[0]
xt2 = secondary_system2[0] - primary_system2[0]
xt3 = secondary_system3[0] - primary_system3[0]
xt4 = secondary_system4[0] - primary_system4[0]
xt …Run Code Online (Sandbox Code Playgroud) 我尝试在python中编写这些公式,但没有运气
我在代码中没有错误,但我知道计算结果不正确,所以我猜我
在公式的实现上有问题.
import math
lat = 54.5917455423
lon = 17.2078876198
B = math.radians(lat)
L = math.radians(lon)
h = 55.889
pi = math.pi
a = 6378137
b = 6356752.3141
f = 1/298.257222101
ba = 1 - f# should be b/a = 1 - f
e = 0.006694380036
Da = 108
Df = - 4.80812 * 10 **-7
m = 0.000004848#one second in radians
dX = -23.74
dY = +123.83
dZ = +81.81
sin = math.sin
cos = math.cos
Rn = …
Run Code Online (Sandbox Code Playgroud) 使用以下代码我尝试获取检查按钮的相应文本值的更新列表,每次检查或取消选中复选框:
import Tkinter as tk
opt = []
def chkbox_checked():
for ix, item in enumerate(cb):
opt.append(cb_v[ix].get())
print opt
root = tk.Tk()
mylist = [
'NR',
'ECEF X',
'ECEF Y',
'ECEF Z',
'height'
]
cb = []
cb_v = []
for ix, text in enumerate(mylist):
cb_v.append(tk.StringVar())
cb.append(tk.Checkbutton(root, text=text, onvalue=text, variable=cb_v[ix], comand=chkbox_checked))
cb[ix].grid(row=ix, column=0, sticky='w')
label = tk.Label(root, width=20)
label.grid(row=ix+1, column=0, sticky='w')
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
例如,如果从第一个到最后一个检查所有按钮,我想要的输出将是:
['NR']
['NR','ECEF X]
['NR','ECEF X','ECEF Y']
['NR','ECEF X','ECEF Y','ECEF Z]
['NR','ECEF X','ECEF Y','ECEF Z','height',]
Run Code Online (Sandbox Code Playgroud)
但是使用上面的代码我得到了乘法输出,并且检查按钮本身也有问题,它们的状态从头开始检查.任何帮助,将不胜感激.
我有这样的代码:
begin
RunProgram:=TProcess.Create(nil);
RunProgram.Commandline:='calc.exe';
RunProgram.Execute;
RunProgram.Commandline:='notepad.exe';
RunProgram.Execute;
RunProgram.Free;
end.
Run Code Online (Sandbox Code Playgroud)
我想在执行 calc.exe 后休眠或延迟
我有大型csv文件,216961行:
9808,54,43,59,999,17,10,59,999,-1,0,0
9809,54,43,59,999,17,12,0,-1,0,0
9810,54,43,59,999,17,13,0,001,-1,0,0
9811,54,43,59,999,17,13,59,999,-1,0,0
9812,54,43,59,999,17,15,0,-1,0,0
9813,54,43,59,999,17,16,0,001,0,0,0
9814,54,43,59,999,17,16,59,999,0,0,0
9815,54,43,59,999,17,18,0,0,0,0
9816,54,43,59,999,17,19,0,001,0,0,0
9817,54,43,59,999,17,19,59,999,0,0,0
9818,54,43,59,999,17,21,0,0,0,0
9819,54,43,59,999,17,22,0,001,0,0,0
9820,54,43,59,999,17,22,59,999,0,0,0
Run Code Online (Sandbox Code Playgroud)
我需要筛选文件并删除所有存在-1的行,大约6900行,所以我想请求你的帮助
我的尝试:
import csv
reader = csv.reader(open("file.csv", "rb"), delimiter=',')
for line in reader:
match = line[7]
if match not in '-1':
print line
Run Code Online (Sandbox Code Playgroud)
但-1并不总是在线[7]
我有这样的脚本:
rp_1st_name = 1000
rp_last_name = 2000
rp_1st_val = 5555
rp_last_val = 6666
fdh = 200
dif = (rp_1st_val - rp_last_val) - fdh
teor = rp_1st_val - rp_last_val
m1='wysokosc reperu poczatkowego:',rp_1st_val,'mm \n'
m2='wysokosc reperu koncowego:',rp_last_val, 'mm \n'
m3='przwyzszenie na ciagu: \n'
m4='teoretyczne =',teor,'mm \n'
m5='obliczone = ',fdh,'mm \n'
m6='fdh =',dif,'mm \n'
from easygui import *
msgbox((m1, m2, m3, m4, m5, m6),"SUMMARY", ok_button="Exit")
我有一个很大的CSV文件,其中行的长度各不相同:
215080,49,3,0.0,22,42,0.0
215082,49,3,0.0,22,43,59.999
215083,49,3,0.0,22,45,0.0
215085,49,3,0.0,22,46,59.999
215086,49,3,0.0,22,48,0.0
215087,49,3,0.0,22,49,0.001
215088,49,3,0.0,22,49,59.999
215089,49,3,0.0,22,51,0.0
215090,49,3,0.0,22,52,0.001
215688,49,1,59.999,22,49,0.001
215689,49,1,59.999,22,49,59.999
215690,49,1,59.999,22,51,0.0
215691,49,1,59.999,22,52,0.001
216291,49,1,0.001,22,51,0.0
216292,49,1,0.001,22,52,0.001
216293,49,1,0.001,22,52,59.999
Run Code Online (Sandbox Code Playgroud)
例如,我想,用分号(;)替换每行中的第四个逗号().我怎样才能最有效地完成这项工作?
python ×11
csv ×3
coordinates ×2
math ×2
checkbox ×1
freepascal ×1
generator ×1
geo ×1
lazarus ×1
matplotlib ×1
msgbox ×1
pyparsing ×1
tkinter ×1