我有LineString和Point,我想以米为单位计算它们之间的距离:
- line=LINESTRING(7.301606 52.5602366,7.300065099999999 52.5587741(
- 点=点(8.02 52.303333(
我用的是:线.距离(点(。我有一个距离,但我不知道如何转换为米或公里。我用的地球标准,我读到单位是CRS。任何帮助都将不胜感激。
- 根据注释,您需要指定CRS我正在使用地质标准,我读到该单位是CRS我假设您的意思是WSG84 CRS,即EPSG:4326
- 给定地质标准每个GeoDataFrame只有一个几何列的限制,已将LINESTRING和POINT放入单独的数据帧中
- 从WSG84到UTM CRS的项目https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system.这意味着坐标以米为单位。如果LINESTRING和POINT位于不同的UTM区域,这将不起作用
- 那么它的使用非常简单https://geopandas.readthedocs.io/en/latest/docs/reference/api/geopandas.GeoSeries.distance.html
import shapely.wkt
import geopandas as gpd
gdfl = gpd.GeoDataFrame(geometry=[shapely.wkt.loads("LINESTRING (7.301606 52.5602366, 7.300065099999999 52.5587741)")], crs="EPSG:4326")
gdfp = gpd.GeoDataFrame(geometry=[shapely.wkt.loads("POINT (8.02 52.303333)")], crs="EPSG:4326")
utm = gdfl.estimate_utm_crs()
gdfl.to_crs(utm).distance(gdfp.to_crs(utm))
输出
56592.878178