无法将GeoJSON转换为TopoJOSN

问题描述

我正在尝试将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]
    }
  }
}

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...