Результаты геопанд sjoin_nearest ⇐ Python
Результаты геопанд sjoin_nearest
У меня есть 3 набора данных для каждой записи набора данных 1, мне нужно найти ближайшую точку в наборах данных 2 и 3.
Первый шаг, который я хотел сделать, — это найти расстояние для всех точек набора данных 1 и 2, а затем точек набора данных 1 и 3. Мне дали широту и долготу для всех трех наборов данных.
Я конвертировал их в crs3857, чтобы иметь возможность использовать единицы измерения в метрах, а затем использовал distance_col из sjoin_nearest, чтобы найти расстояние в метрах.
импортировать геопанды как gp D1df = gp.GeoDataFrame(набор данных1,геометрия=gp.points_from_xy(набор данных1.Долгота,набор данных1.Широта,crs=''EPSG:4326'') D1df = D1df.to_crs(3857) ↑то же самое для наборов данных 2 и 3
каждый набор данных D1df, D2df и D3df представляет собой фрейм данных geopandas в системе координат 3857, столбец геометрии — это точка (долгота, широта)
onetwo= gp.sjoin_nearest(D1df,D2df,distance_col=''расстояниеметры'',how=''left'') Результаты выглядят странно, и я не понимаю, почему, когда я использую широту и долготу и использую пакет hasrsine &geodesic для проверки, но результаты очень разные
импортировать hasrsine как hs loc1=(43.139322,-80.242342) loc2=(43.1391,-80.2440) hs.haversine(loc1,loc2,unit='m') из geopy.distance импорт геодезических геодезический(loc1,loc2).метры haversine и geodesic дают мне 832,627 м и 834,217 м соответственно, но выход geopandas sjoin_nearest 187,632 м Буду признателен, если кто-нибудь поможет мне понять, где я сделал неправильно и как я могу перепроверить.
Похоже, что sjoin_nearest возвращает более 1 результата набора данных 2 для каждой строки набора данных 1, я ожидаю, что при левом соединении каждая запись в наборе данных 1 будет соответствовать только самой близкой.
Версии пакета:
геопанда 0.12.2 география 2.4.0 пожалуйста, дайте мне знать, если вам нужна дополнительная информация, спасибо
У меня есть 3 набора данных для каждой записи набора данных 1, мне нужно найти ближайшую точку в наборах данных 2 и 3.
Первый шаг, который я хотел сделать, — это найти расстояние для всех точек набора данных 1 и 2, а затем точек набора данных 1 и 3. Мне дали широту и долготу для всех трех наборов данных.
Я конвертировал их в crs3857, чтобы иметь возможность использовать единицы измерения в метрах, а затем использовал distance_col из sjoin_nearest, чтобы найти расстояние в метрах.
импортировать геопанды как gp D1df = gp.GeoDataFrame(набор данных1,геометрия=gp.points_from_xy(набор данных1.Долгота,набор данных1.Широта,crs=''EPSG:4326'') D1df = D1df.to_crs(3857) ↑то же самое для наборов данных 2 и 3
каждый набор данных D1df, D2df и D3df представляет собой фрейм данных geopandas в системе координат 3857, столбец геометрии — это точка (долгота, широта)
onetwo= gp.sjoin_nearest(D1df,D2df,distance_col=''расстояниеметры'',how=''left'') Результаты выглядят странно, и я не понимаю, почему, когда я использую широту и долготу и использую пакет hasrsine &geodesic для проверки, но результаты очень разные
импортировать hasrsine как hs loc1=(43.139322,-80.242342) loc2=(43.1391,-80.2440) hs.haversine(loc1,loc2,unit='m') из geopy.distance импорт геодезических геодезический(loc1,loc2).метры haversine и geodesic дают мне 832,627 м и 834,217 м соответственно, но выход geopandas sjoin_nearest 187,632 м Буду признателен, если кто-нибудь поможет мне понять, где я сделал неправильно и как я могу перепроверить.
Похоже, что sjoin_nearest возвращает более 1 результата набора данных 2 для каждой строки набора данных 1, я ожидаю, что при левом соединении каждая запись в наборе данных 1 будет соответствовать только самой близкой.
Версии пакета:
геопанда 0.12.2 география 2.4.0 пожалуйста, дайте мне знать, если вам нужна дополнительная информация, спасибо
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение