【问题标题】:How to work with a shapefile (shp) with folium?如何使用带有folium的shapefile(shp)?
【发布时间】:2022-08-17 15:10:08
【问题描述】:

我正在尝试将我在 Qgis 上创建的 shp 文件与我用 Folium 创建的地图集成。

我的 shp 文件 (gdf) 显示铁路,如下所示:

    id  EF  geometry
0   None    RS105   LINESTRING (179594.484 -3547126.500, 157006.06...
1   None    RS103   LINESTRING (-235587.484 -3365437.750, -298682....
2   None    RS101   LINESTRING (-30771.531 -3357265.750, -79628.46...
3   None    RS106   LINESTRING (206456.641 -3299645.250, 219854.21...
4   None    RS102   LINESTRING (267157.688 -3326829.750, 269737.11...

我正在尝试使用以下代码在 folium 地图上查看这些铁路:

map = folium.Map(location=[-14.235004, -51.92528],
                      zoom_start=4)


folium.GeoJson(data=gdf[\"geometry\"]).add_to(map)

但是,它不起作用。我收到以下错误:

CRSError: Invalid projection: EPSG:4326: (Internal Proj Error: proj_create: SQLite error on SELECT name, type, coordinate_system_auth_name, coordinate_system_code, datum_auth_name, datum_code, area_of_use_auth_name, area_of_use_code, text_definition, deprecated FROM geodetic_crs WHERE auth_name = ? AND code = ?: no such column: area_of_use_auth_name)

起初,我认为问题是由我安装 Geopandas(使用 Anacondas)的方式产生的,但我不再那么确定了。

  • 我认为发生错误是因为地图的坐标系与 folium 可以处理的格式不同。试试下面的代码。 import pyproj;gdf.to_crs(pyproj.CRS.from_epsg(4326), inplace=True):m=folium(...);folium.PolyLine(gdf[\'geometry\'],...)
  • 对不起。我不明白你的建议是什么。请给它作为代码?干杯。
  • 这是一个安装问题。尝试重新安装 pyproj 包并检查他们的文档以进行故障排除。

标签: python geopandas folium


【解决方案1】:

我是新手,但请尝试将 crs 分配给数据。

import geopandas as gpd

gdf = gpd.GeoDataFrame(gdf, crs='epsg:4326')
folium.GeoJson(data=gdf["geometry"]).add_to(map)

【讨论】:

    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多