【发布时间】:2022-06-23 15:55:40
【问题描述】:
我正在使用 d3js 构建地图。我可以轻松地从此geojson file 渲染美国州地图,并根据需要在其上绘制点数据(未显示)。但我想使用长/纬度值的边界框来剪辑可视化。
我什至不确定在什么阶段或在什么对象上进行剪裁,一般来说。在 d3 API 参考 (for instance here) 上有一些关于裁剪投影方法的简约文档。我不确定剪裁投影是否会有所帮助。
我的地图图像和我想要的地图输出 - 来自Wikle et al. 2019 - 已附上。我的 HTML 骨架很小,它调用了 js 脚本,并为 svg(“svg1”)提供了一个划分。
此消息末尾的代码生成此地图:
过滤掉阿拉斯加和夏威夷不是问题,也不属于这个问题。我想要一个像下面这样的图像(请忽略点数据,我只是对将状态路径剪裁到大小感到好奇):
这是我的js代码:
window.addEventListener("load", main)
function main(){
// base svg and svg props
const width = 400, height = 400;
let facetWidth = width;
let facetHeight = height;
let svg1 = d3.select("#plot").append('svg')
.style("width", width)
.style("height", height)
.attr("id", "svg1");
// projection and generator
let projection = d3.geoAlbersUsa();
let geoGenerator = d3.geoPath().projection(projection);
// state drawing function:
function renderStates(data) {
projection.fitSize([facetWidth, facetHeight], data);
svg1.append('g')
.attr('id','statePaths')
.attr('id','statePaths')
.selectAll('path')
.data(data.features)
.join('path')
.attr('d', geoGenerator)
.attr('fill', '#ffffff')
.attr('stroke', '#000')
};
任何建议将不胜感激。我对使用 d3js 渲染地图还是很陌生。
【问题讨论】:
标签: d3.js