У меня большой массив точек, и я пытаюсь найти расстояние между этими точками и другим набором точек.Изначально я использовал функцию геопандий to_crs
для преобразования 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.Карты Google дали мне меру расстояния, для координат o
и stop
, 10,79 км.Похоже, мера расстояния моего кода дает ответ, который в 10 ^ -3 раза меньше, чем фактическое расстояние.Почему это так?Мой код правильный?