问题描述
我正在尝试将GeoJSON转换为TopoJOSN,以便放入Vega-Lite。因此,我可以绘制地图。
我使用https://geojson-maps.ash.ms/下载了地图大洋洲(低分辨率)的 .json ,然后将此文件放入了https://mapshaper.org/我可以再次将其导出为 .topojson
但是,即使我选择导出为.topojson ,该文件仍然给我 .json 。 因为当我将该URL放入Vega-Late时,它无法显示大洋洲地图。(我的代码在问题的最底部)
任何人都知道如何转换为topojson吗?甚至我的网址可能有问题?
解决方法
您的规范有几个问题:
- 您的GeoJSON文件不包含名为
"states"
的功能。它包含一个名为"custom"
的功能。 - 您正在使用
albersusa
投影,该投影仅显示美国,并且您的GeoJSON在此边界内没有数据。
解决这些问题,并使用以澳大利亚为中心的正交projection,可以为您提供更好的图表(view in editor):
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json","width": 500,"height": 300,"layer": [
{
"data": {
"url": "https://raw.githubusercontent.com/BocongZhao823/My_First_Webpage-/main/Ausmap.geo.json","format": {
"type": "topojson","feature": "custom"
}
},"mark": {
"type": "geoshape","fill": "lightgray","stroke": "white"
}
},{
"data": {
"url": "https://raw.githubusercontent.com/BocongZhao823/My_First_Webpage-/main/rainfall_tidy.csv"
},"mark": "circle","encoding": {
"longitude": {
"field": "longitude","type": "quantitative"
},"latitude": {
"field": "latitude","size": {"value": 10},"color": {"value": "steelblue"}
}
}
],"config": {
"projection": {
"type": "orthographic","rotate": [-140,30,0]
}
}
}