我有一个大的点文件,我试图找到这些点与另一组点之间的距离。最初我使用to_crs
geopandas 的功能来转换 crs,这样我就可以在我做的时候以米为单位获得准确的距离测量df.distance(point)
。但是,由于文件很大,仅仅转换文件的crs就花了很长时间。该代码运行了 2 个小时,但仍未完成转换。因此,我改用了这段代码。
inProj = Proj(init='epsg:4326')
outProj = Proj(init='epsg:4808')
for index, row in demand_indo_gdf.iterrows():
o = Point(row['origin_longitude'], row['origin_latitude'])
o_proj = Point(transform(inProj, outProj, o.x, o.y))
for i, r in bus_indo_gdf.iterrows():
stop = r['geometry']
stop_proj = Point(transform(inProj, outProj, stop.x, stop.y))
print ('distance:', o_proj.distance(stop_proj), '\n\n')
我认为单独转换 crs 并执行我的分析可能会更快。对于这组点:
o = (106.901024 -6.229162)
stop = (106.804 -6.21861)
我将此 EPSG 4326 坐标转换为本地投影 EPSG 4808,得到了:
o_proj = (0.09183386384156803 -6.229330112968891)
stop_proj = (-0.005201753272169649 -6.218776788266844)
这给出了 0.09760780527657992 的距离测量值。谷歌地图给了我一个距离测量,坐标o
和stop
10.79 公里。看起来我的代码的距离测量给出的答案比实际距离小 10^-3 倍。为什么呢?我的代码正确吗?