指定Geopandas对象的所需crs格式

时间:2017-02-10 14:34:11

标签: python shapefile geopandas fiona

我使用geopandas' to_file()方法将shapefile读入geopandas对象。 shapefile具有带有ESRI WKT样式投影信息的有效.prj文件:

PROJCS["Slovenia_1996_Slovene_National_Grid",GEOGCS["GCS_Slovenia 1996",DATUM["D_Slovenia_Geodetic_Datum_1996",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",15],PARAMETER["scale_factor",0.9999],PARAMETER["false_easting",500000],PARAMETER["false_northing",-5000000],UNIT["Meter",1]]

有了这个,创建的地理数据框将crs属性设置为字典,与proj4字符串或epsg代码相比,我发现它很难处理:

{u'lon_0': 15, u'k': 0.9999, u'ellps': u'GRS80', u'y_0': -5000000, u'no_defs': True, u'proj': u'tmerc', u'x_0': 500000, u'units': u'm', u'lat_0': 0}

Geopandas projection docs明确表示.crs方法接受许多不同形式的crs信息(epsg代码,字典,proj4字符串......),但似乎没有控制权将geopandas写入shapefile时所需的格式。

问题: 有没有办法指定所需的crs格式或任何内置方法来切换crs属性的不同格式?

2 个答案:

答案 0 :(得分:0)

不确定我是否在这里遗漏了什么,但是您是否尝试过像下面这样to_file()之前在数据帧中设置crs:

gdf = geopandas.GeoDataFrame(df, geometry='geometry')

gdf.crs = {'init' :'epsg:4326'} # or whatever

答案 1 :(得分:0)

  

有什么方法可以指定所需的crs格式

shapefile prj文件必须为WKT格式。看到: https://gis.stackexchange.com/questions/114835/is-there-a-standard-for-the-specification-of-prj-files#114851

  

有什么内置方法可以在crs属性的不同格式之间进行切换?

Geopandas使用pyproj作为依赖项。如果您使用pyproj 2+,则可以使用pyproj.CRS类来转换格式。看到: https://pyproj4.github.io/pyproj/stable/examples.html

此外,您可以直接使用pyproj.CRS类来检查不同CRS输入是否相等。