擅长:python、mysql、java
<p>对于50米的距离,你真的不需要一个很好的近似圆距离。我假设<code>fault_lat</code>和<code>fault_lon</code>是以弧度表示的numpy数组。如果不是,请将其转换为:</p>
<pre><code>fault_lat = np.radians(fault_lat)
fault_lon = np.radians(fault_lon)
</code></pre>
<p>现在你可以用一个简单的公式计算距离,这个公式包括地球的半径和适当的纬度比例:</p>
<pre><code> r = 6378000
dist = r * np.sqrt(np.diff(fault_lat)**2 + (np.diff(fault_lon) * np.cos(0.5 * (fault_lat[1:] + fault_lat[:-1])))**2)
</code></pre>
<p>这将创建连续点之间(近似)距离的索引。可以在距离超过某个阈值(如50米)的位置拆分结果:</p>
<pre><code>threshold = 50
indices = np.flatnonzero(dist > threshold) + 1
lat_segments = np.split(fault_lat, indices)
lon_segments = np.split(fault_lon, indices)
</code></pre>
<p>您可以使用以下公式绘制结果:</p>
<pre><code>for lat, lon in zip(lat_segments, lon_segments):
map.plot(lon, lat)
</code></pre>