【问题标题】:An existing vega-lite map suddenly seems very zoomed-in - what is happening?现有的 vega-lite 地图突然看起来非常放大 - 发生了什么?
【发布时间】:2020-09-02 23:26:08
【问题描述】:

我有一张曾经使用 Vega-Lite 的旧 topojson 格式的地图。现在我们在this editor gist.中只看到一个紫色方块

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

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

【问题讨论】:

    标签: format topojson vega-lite


    【解决方案1】:

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

    你可以做两件事:

    1. 不要使用地理投影,而是使用类似笛卡尔的identity 投影。
    2. 强制您的源数据按正确的顺序排列。

    1 的例子:

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

    see Vega Editor


    示例 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


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

    D3 的 Mike Bostock

    【讨论】:

    • 这是一个优秀而全面的答案,对我和我的团队来说是一个很好的参考,也确实提高了我对topojson的理解。我现在将使用 python sn-p 重新缠绕我所有的 NYC topojson ......感谢您向我介绍身份投影,这对于国家平面工作非常有用。唯一我仍然不清楚的是是什么促使了这种变化(旧的右手规则 topojson 以前工作过......)但也许只是为了强制一致性而进行的改变?
    • 不客气,但不知道变化。据我所知,对于 topojson 结构化的输入数据,总是就是这样。无论如何,快乐的映射!
    猜你喜欢
    • 2012-11-19
    • 2012-09-02
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多