我有两个纬度和经度列表,代表构成地质断层的一堆点。我正在尝试制作一张 map (通过 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
但遗憾的是它只是给了我一个空白屏幕。无论如何,我可以重新设计它,以便它能够满足我的要求吗?
最佳答案
你已经非常接近了,你只需要将当前点和上一个或下一个点传递给plot( )
。如果您将过滤循环更改为更像
for ii in range(len(map_q_fault_lon)):
if q_fault_distance[ii] <= 50 and ii > 0:
map.plot(map_q_fault_lon[ii-1:ii+1], map_q_fault_lat[ii-1:ii+1], 'k-', lw=1.0)
您应该会看到所需的过滤。以下是此方法的结果以及一些生成的数据:
关于python - 绘制故障线而不将每条线连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349517/