2017-01-03 15 views
1

我有一个.shp文件,可以读入geopandas数据框。我将坐标参考系统更改为2163,因为我正在制作一些矩形地图,并希望它们看起来有点正常。在地缘和类似幅度的回报点中,shapely的比例函数

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是应该做的,但它似乎很简单。

回答

2

缩放是相对于中心点定义的。实际应用的缩放确实使多边形更小,但将中心点保留在多边形边界框的中心。 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)) 
相关问题