This is memory consuming way of calculate distance between N points and M points.
Let l_lat and l_lon are vectors for N points and v_lat and v_lon are for M points.
Using numpy array, distance calculation can be written as follows.
#!/usr/bin/env python
#coding:utf-8
import numpy
M = 3
N = 5
# points1
l_lat = numpy.arange(N)
l_lon = numpy.arange(N)
m_l_lat = numpy.tile(l_lat, (M, 1))
m_l_lon = numpy.tile(l_lon, (M, 1))
# points2
v_lat = numpy.arange(M)
v_lon = numpy.arange(M)
m_v_lat_t = numpy.tile(v_lat, (N, 1)).T
m_v_lon_t = numpy.tile(v_lon, (N, 1)).T
distance = numpy.sqrt((m_v_lat_t - m_l_lat) ** 2 + (m_v_lon_t - m_l_lat) ** 2)
print distance
Although code generates lat and lon with numpy.arange(), in real case you should
fill each vector with appropriate lat and lon values.
Below is an output of previous code.
~$ python test_calc_distance.py
[[ 0. 1.41421356 2.82842712 4.24264069 5.65685425]
[ 1.41421356 0. 1.41421356 2.82842712 4.24264069]
[ 2.82842712 1.41421356 0. 1.41421356 2.82842712]]
Could you explain the above on how is the calculations being done here ?
ReplyDelete