我有两张纬度和经度的列表,代表了构成地质断层的一堆点。我试图制作一个地图(通过Basemap)将这些断层显示为线,但是,使用pyplot.plot图功能,这些点将连接相距数英里的故障,我不希望这样。你知道吗
到目前为止,我所做的只是把点做得很大,这样看起来就像是一堆线,但当我放大时,它显然是点而不是线。你知道吗
知道构成单一断层的这些点之间相隔50米也可能有用。最初我有一个代码,我用大圆工具确定了这些点之间的距离,并创建了一个新的距离列表:
f_distance = []
c = 0
for i,j in zip(fault_lat,fault_lon):
while c < (len(fault_lon)-1):
location1 = (fault_lat[c],fault_lon[c])
location2 = (fault_lat[c+1],fault_lon[c+1])
distance = great_circle(location1,location2).meters
f_distance.append(distance)
c+=1
如果这个距离小于或等于50,它将绘制它们,并且(希望)绘制它们之间的线,否则它将跳过它。你知道吗
c = 0
for i,j,k in zip(map_q_fault_lon,map_q_fault_lat,q_fault_distance):
if k <= 50:
map.plot(i,j,linestyle = '-',linewidth = 1.00,color = 'black')
c+=1
但遗憾的是,它只是给了我一个空白屏幕。有没有什么我可以重做,这样它将做什么我要求的?你知道吗
对于50米的距离,你真的不需要一个很好的近似圆距离。我假设
fault_lat
和fault_lon
是以弧度表示的numpy数组。如果不是,请将其转换为:现在你可以用一个简单的公式计算距离,这个公式包括地球的半径和适当的纬度比例:
这将创建连续点之间(近似)距离的索引。可以在距离超过某个阈值(如50米)的位置拆分结果:
您可以使用以下公式绘制结果:
你离得很近,你只需要把当前的点和上一个或下一个点传递到
plot()
。如果你把过滤循环改成您应该看到所需的过滤。以下是此方法的结果和一些生成的数据:
相关问题 更多 >
编程相关推荐