给定一个 shapefile:
Natural_earth / ne_10m_admin_0_sovereignty.zip
鉴于我们想为 D3js 数据可视化重新投影它,我们可以在不同的层次上重新投影。
1.使用以下方法获取重新投影的 shapefile ( 1 ) ogr2ogr
:
ogr2ogr -f 'ESRI Shapefile' -t_srs 'EPSG:...' output.shp input.shp
或2.使用 (npm)获取重新投影的 topojson ( 2 ) topojson.js
:
topojson \
-o output.topo.json
--projection 'd3.geo.albersUsa()' \
-q 1e5 \
-s 1 \
-- input.shp
或3.获取重新投影的 D3js 数据/SVG ( 1 ),D3js 代码包括:
var path = d3.geo.path()
.projection(d3.geo.albersUsa()) // unsure of this syntaxe, confirmation welcome, just delete this comment.
概述:
Mike Bostock > Projected Topojson告诉我们,第一种和第二种方式“消除了在渲染时投影几何图形的需要,提高了性能 [...] 因为每个点的重要性是在屏幕上的区域而不是地球表面上测量的。” 总之,最终像素质量/文件权重比更好。
另一方面,在渲染时重新投影几何体可以在最后一刻进行更灵活的投影。
了解更多?
这就是我所知道的。如果有人可以对这些方式进行更多解释,分享有关参数的帮助资源(ogr 的 EPSG 列表,d3js 投影列表),以及每种方式的各自优势/劣势,这可能是一本非常有趣的并行手册。
注意:我会给出我的答案,但我只是开始挖掘它。我想周围有更多有经验的人。