python - 使用 python 的 plotly cloropleth 绘制 GeoJSON 问题
问题描述
我正在尝试从具有以下结构的 geojson 进行绘图:
import geopandas as gpd
states = gpd.read_file('diamante.geojson')
display(states.head())
这是通过使用 mygeoconverter 从 .shp、shx、prj 等转换获得的。链接列是我稍后使用适当标签与另一个数据框合并的参考。当我从 geopandas 获得基本图时,形状信息似乎很好。
states.plot(aspect=1)
我不知道为什么我需要 aspect=1 参数才能使其工作。当尝试使用 plotly 绘制我的地图时,我得到以下信息:
import pyproj
#states.to_crs(pyproj.CRS.from_epsg(4326), inplace=True)
fig = px.choropleth(states, geojson=states['geometry'], locations=states.index, color=states.varon)
fig.show()
评论行是试图根据另一篇帖子解决问题,这似乎没有做任何事情。我是地图新手,所以我不知道要寻找什么。链接到我的 geojson 文件。
此外,从文档中添加以下行会显示一个空白图表。
fig.update_geos(fitbounds="locations", visible=False)
解决方案
- 你需要制定你的CRS。下面的代码假定您的多边形在 UK UTM CRS 系统中表示。这是对 WSG84 的投影,以便plotly可以使用它
- 你的 CRS 有数百万个单位,所以不是 WSG84
- 没有fitbounds我在世界地图上找不到geojson
import requests, json
import geopandas as gpd
import plotly.express as px
gdf = gpd.GeoDataFrame.from_features(requests.get("https://pastebin.com/raw/GwUsskWs").json()["features"])
gdf = gdf.set_crs("EPSG:32630").to_crs("EPSG:4326").set_index("link", drop=False)
fig = px.choropleth(gdf, geojson=json.loads(gdf.geometry.to_json()), locations="link", color="varon")
fig.update_geos(fitbounds="locations", visible=False)
推荐阅读
- c# - 打包 URI NUnit 测试问题
- ios - 使用 Cocoapods 将多个 dylib 组合到 iOS 的单个框架中
- php - 如何在 PHP 脚本的 SQL 请求中不使用 IN 运算符过滤搜索结果
- c# - C# XML 反序列化为一张表中的 DataSet
- express - Express 中间件,对请求对象的更改不会持续存在
- java - 如何找到字符串中最长的单词?
- terminal - iterm2 问题:创建具有与前一个当前选项卡相同路径的新选项卡但 2 个选项卡是克隆而不是独立的
- javascript - 我在构建作业模块时获得了意想不到的价值
- node.js - 节点快速缓存问题
- path - 关于可执行文件路径的查询