现有的Vega-lite地图突然看起来非常放大-发生了什么事?

问题描述

我有一幅旧的topojson格式的地图,曾经与Vega-Lite一起使用。现在我们只在this editor gist.

中看到一个紫色正方形

我用相同的代码重建了地图,但是在vega编辑器和saved as a gist here中更新了topojson。

在新的vega版本中,似乎我需要对topojson文件进行不同的格式设置,首先是弧,例如mapshaper.org导出输出。为什么是这样?它破坏了几个现有的网络地图,使我花了几个小时才弄清楚。似乎我可以通过更改工作流程来解决它,但我很好奇。

解决方法

Topojson数据遵循投影数据的左手规则(外环为顺时针方向,内环为逆时针方向),其中,topojson文件中的数据是根据右手规则(外环为逆时针方向)构造的环和顺时针方向表示内部环)。多边形的顺序似乎可以忽略不计,但是它定义了多边形的“内部”和“外部”。

您可以做两件事:

  1. 请勿使用地理投影,而应使用类似于笛卡尔的identity投影。
  2. 按正确的顺序强制您的源数据。

示例1:

"projection": {"type": "identity","reflectY": true},

see Vega Editor

enter image description here


示例2:

使用MapShaper或Python以正确的顺序强制您的数据。这是使用Python的示例

import topojson as tp
import geopandas as gpd
gdf = gpd.read_file('https://raw.githubusercontent.com/nycehs/NeighborhoodReports/master/visualizations/json/UHF42.topo_old.json')
tp.Topology(gdf).to_json('UHF42.topo_new.json')

see Vega Editor

enter image description here


之前我为Altair和Python Topojson写过一些关于它的内容

D3的Mike Bostock

相关问答

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