Python 带有OpenStreetMap数据的Choropleth地图
我的目标是得到德国邮政编码地区的所谓“choropleth地图”(我猜)。我找到了python包“folium”,但它似乎需要一个.json文件作为输入: 在OpenStreetMap上,我只看到shp.zip和.osm.pbf文件。在shp.zip归档文件中,我找到了各种我从未听说过的文件结尾,但没有.json文件。如何使用OpenStreetMap中的数据来输入folium?我走错方向了吗 编辑/解决方案: 我转到(它通过一种特定的查询语言QL从openstreetmap检索数据),并点击运行以下代码:Python 带有OpenStreetMap数据的Choropleth地图,python,openstreetmap,choropleth,overpass-api,folium,Python,Openstreetmap,Choropleth,Overpass Api,Folium,我的目标是得到德国邮政编码地区的所谓“choropleth地图”(我猜)。我找到了python包“folium”,但它似乎需要一个.json文件作为输入: 在OpenStreetMap上,我只看到shp.zip和.osm.pbf文件。在shp.zip归档文件中,我找到了各种我从未听说过的文件结尾,但没有.json文件。如何使用OpenStreetMap中的数据来输入folium?我走错方向了吗 编辑/解决方案: 我转到(它通过一种特定的查询语言QL从openstreetmap检索数据),并点击
[timeout:900];
area[name="Deutschland"][admin_level=2][boundary=administrative]->.myarea;
rel(area.myarea)["boundary"="postal_code"];
out geom;
您可以“导出到geojson”,但在我的例子中,这不起作用,因为太多的数据无法在浏览器中处理。但导出“原始数据”是可行的。所以我这样做了,然后我用“osmtogeojson”来获得正确的格式。在此之后,我能够将openstreetmap数据提供给folium,如folium教程中所述。我自己没有这样做,但有各种解决方案可以将OSM文件(.OSM或.pbf)转换为(geo)json。例如在OSM wiki的页面上可以找到更多工具。如果要创建choropleth地图,必须遵循以下步骤:
.json
文件,但是,实际上地图通常使用许多文件格式。在您的情况下,需要将OSM形状文件(.shp
)转换为更现代的文件类型,如.geojson
。谢天谢地,我们必须完成最后一部分:
ogr2ogr-f GeoJSON-t_srs EPSG:4326-simplify 1000[name].GeoJSON[name].shp
建议:您还可以从以下网站提取管理边界:
.csv
文件)。显然,该文件必须有一列包含该国家的邮政编码import folium
import pandas as pd
osm = folium.Map([43, -100], zoom_start=4)
osm.choropleth(
geo_str = open('US_states.json').read(),
data = pd.read_csv("US_unemployment.csv"),
columns = ['State', 'Unemployment'],
key_on = 'feature.id',
fill_color = 'YlGn',
)
输出:
import folium
import pandas as pd
osm = folium.Map([43, -100], zoom_start=4)
osm.choropleth(
geo_str = open('US_states.json').read(),
data = pd.read_csv("US_unemployment.csv"),
columns = ['State', 'Unemployment'],
key_on = 'feature.id',
fill_color = 'YlGn',
)
以前没有这样做过,但我也会很快需要它。如果它有助于查看关于类似主题的帖子。“这个答案提供了一个示例.json文件,但您也可以从形状文件(.shp)创建此文件。”->这基本上是我的问题:如何处理openstreetmap数据以将其提供给folium?你能提供这部分的更多细节吗?地图是自动从OpenStreetMap中提取的。像
.json
这样的文件只包含关于边框的信息。您想知道如何将.shp
文件转换为.json
文件吗?是的,我想这是我需要完成的步骤。使用folium本身似乎很简单。我需要从openstreetmap(无论是什么文件)中获取邮政编码边框信息,将其转换为.json,然后使用tutroial/your post中的代码。您可以使用我发布的小程序提取管理边框线。有很多方法可以做到这一点,但大多数都不是微不足道的。那么我需要从openstreetmap下载哪个文件呢?我需要一个包含邮政编码区域边界的。我找不到它。之后我想我可以试试那些转换工具。这是一个不同的问题。通常,OSM文件包含OSM中可用的所有信息。如果您只需要邮政编码,那么可以从OSM文件中提取邮政编码(例如通过osmium),或者首先使用Overpass API只下载邮政编码。不管怎样,评论都不适合详细解释这些步骤。另外,关于只下载特定OSM数据的问题已经被回答了好几次(在这里和help.openstreetmap.org上)。@user3182532:@scai是对的,这是一个不同的问题。您询问了如何使用.shp
文件来馈送文件。从OSM中提取管理边界线并非易事。