小编dai*_*ini的帖子

如何在Python中执行双线性插值

我想用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)

python math interpolation geo coordinates

21
推荐指数
3
解决办法
3万
查看次数

如何使用python连接/合并两个生成器输出

我有两台发电机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]


谢谢您的帮助.

python generator python-itertools

13
推荐指数
1
解决办法
8569
查看次数

pyparsing的例子

这是我第一次尝试使用pyparsing,我想问一下如何过滤这个样本行:

survey = '''GPS,PN1,LA52.125133215643,LN21.031048525561,EL116.898812'''
Run Code Online (Sandbox Code Playgroud)

获得如下输出:1,52.125133215643,21.031048525561,116.898812

一般来说,我有理解pyparsing逻辑的问题,所以对这个例子的任何帮助将不胜感激.谢谢

python pyparsing

8
推荐指数
1
解决办法
6430
查看次数

Python加入csv文件,其中key是第一列值

我尝试加入两个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)

python csv

8
推荐指数
1
解决办法
1万
查看次数

matplotlib坐标格式

我有这样简单的情节:

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

提前致谢

python matplotlib coordinates

6
推荐指数
2
解决办法
2966
查看次数

如何使用python执行坐标仿射变换?

我想为此示例数据集执行转换.
在一个坐标[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 coordinate-transformation

4
推荐指数
1
解决办法
1万
查看次数

如何在python中编写数学公式

我尝试在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)

python math

2
推荐指数
1
解决办法
1万
查看次数

如何在Python中获取Tkinter中多个Checkbuttons的文本值列表?

使用以下代码我尝试获取检查按钮的相应文本值的更新列表,每次检查或取消选中复选框:

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)

但是使用上面的代码我得到了乘法输出,并且检查按钮本身也有问题,它们的状态从头开始检查.任何帮助,将不胜感激.

python checkbox tkinter

2
推荐指数
1
解决办法
3948
查看次数

如何使用 pascal 在执行两个外部程序之间设置延迟/睡眠?

我有这样的代码:

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 后休眠或延迟

freepascal lazarus

1
推荐指数
1
解决办法
8037
查看次数

使用python,如果此行中存在特定字符,如何删除csv文件中的整行?

我有大型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]

python csv

1
推荐指数
1
解决办法
3749
查看次数

如何消除消息框中的{}括号

我有这样的脚本:

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")


如何使{}括号不显示在消息框中?

python msgbox

0
推荐指数
1
解决办法
162
查看次数

如何使用Python替换CSV文件中的特定逗号?

我有一个很大的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 csv

0
推荐指数
1
解决办法
332
查看次数