geopandas 中 shapely 的比例函数 returns 个相似大小的点
shapely's scale function in geopandas returns points of similar magnitude
我有一个 .shp 文件,我将其读入 geopandas 数据框。我将坐标参考系统更改为 2163,因为我正在制作一些矩形地图并希望它们看起来有些正常。
geo_df = geo.GeoDataFrame.from_file('path to shp files here')
geo_df = geo_df.to_crs(epsg=2163)
数据框看起来像这样:
In [10]: geo_df.geometry
Out[10]:
0 POLYGON ((1189879.121395004 -1019103.847184072...
1 POLYGON ((1220434.289428635 -1303875.122589418...
2 POLYGON ((1210969.088787247 -1295221.772496042...
3 POLYGON ((1217371.162725744 -1300978.843646188...
现在我正在计算成对距离矩阵,但是由于这些坐标以米为单位给出,因此数字非常大,我 运行 遇到了溢出问题。所以我试试这个:
geo_df.geometry = geo_df.geometry.scale(xfact=1/10000, yfact=1/10000, zfact=1.0)
但是我的多边形坐标并没有变小(只是稍微移动了一点,这很好)。打印据称重新缩放的数据框给出了这个:
In [12]: geo_df.geometry.scale(xfact=1/10000, yfact=1/10000, zfact=1.0)
Out[12]:
0 POLYGON ((1197230.99656014 -1026296.564074459,...
1 POLYGON ((1221475.564597901 -1304490.752661498...
2 POLYGON ((1215982.083961291 -1290526.930856638...
3 POLYGON ((1223839.012413891 -1292585.80012823,...
我希望得到这样的东西。
Out[12]:
0 POLYGON ((119.723099656014 -102.6296564074459,...
1 POLYGON ((122.1475564597901 -130.4490752661498...
2 POLYGON ((121.5982083961291 -129.0526930856638...
3 POLYGON ((122.3839012413891 -129.258580012823,...
也许我只是不明白 shapely's scaling function 应该做什么,虽然它看起来很简单。
缩放是相对于中心点定义的。您应用的缩放实际上确实使多边形变小,但将中心点保持在多边形边界框的中心。 shapely.affinity.scale
中的origin
关键字参数默认为多边形中心;要将坐标值减少 10000 倍,可以设置 origin=(0, 0)
,如下:
geo_df.geometry = geo_df.geometry.scale(xfact=1/10000, yfact=1/10000, zfact=1.0, origin=(0, 0))
我有一个 .shp 文件,我将其读入 geopandas 数据框。我将坐标参考系统更改为 2163,因为我正在制作一些矩形地图并希望它们看起来有些正常。
geo_df = geo.GeoDataFrame.from_file('path to shp files here')
geo_df = geo_df.to_crs(epsg=2163)
数据框看起来像这样:
In [10]: geo_df.geometry
Out[10]:
0 POLYGON ((1189879.121395004 -1019103.847184072...
1 POLYGON ((1220434.289428635 -1303875.122589418...
2 POLYGON ((1210969.088787247 -1295221.772496042...
3 POLYGON ((1217371.162725744 -1300978.843646188...
现在我正在计算成对距离矩阵,但是由于这些坐标以米为单位给出,因此数字非常大,我 运行 遇到了溢出问题。所以我试试这个:
geo_df.geometry = geo_df.geometry.scale(xfact=1/10000, yfact=1/10000, zfact=1.0)
但是我的多边形坐标并没有变小(只是稍微移动了一点,这很好)。打印据称重新缩放的数据框给出了这个:
In [12]: geo_df.geometry.scale(xfact=1/10000, yfact=1/10000, zfact=1.0)
Out[12]:
0 POLYGON ((1197230.99656014 -1026296.564074459,...
1 POLYGON ((1221475.564597901 -1304490.752661498...
2 POLYGON ((1215982.083961291 -1290526.930856638...
3 POLYGON ((1223839.012413891 -1292585.80012823,...
我希望得到这样的东西。
Out[12]:
0 POLYGON ((119.723099656014 -102.6296564074459,...
1 POLYGON ((122.1475564597901 -130.4490752661498...
2 POLYGON ((121.5982083961291 -129.0526930856638...
3 POLYGON ((122.3839012413891 -129.258580012823,...
也许我只是不明白 shapely's scaling function 应该做什么,虽然它看起来很简单。
缩放是相对于中心点定义的。您应用的缩放实际上确实使多边形变小,但将中心点保持在多边形边界框的中心。 shapely.affinity.scale
中的origin
关键字参数默认为多边形中心;要将坐标值减少 10000 倍,可以设置 origin=(0, 0)
,如下:
geo_df.geometry = geo_df.geometry.scale(xfact=1/10000, yfact=1/10000, zfact=1.0, origin=(0, 0))