圆剪辑和投影与D3正射影
Circle clip and projection with D3 orthographic
我正在处理这个问题,我在剪辑红色圆圈元素时遇到了麻烦,因为它们出现在球体上,即使超过90˚剪辑角。还有,有没有一种方法可以将投影应用到红色圆圈上,使它们看起来像相对于正射角在地球表面上?目前,它们只是以相对于屏幕的2d圆圈的形式出现。
代替使用<circle>
元素,您可以使用GeoJSON点几何图形:
{type: "Point", coordinates: [λ, φ]}
这些可以通过D3的投影系统进行剪辑,这取决于你所设置的剪辑角度。所以你可能会写:
var path = d3.geo.path().projection(…);
data.forEach(function(d) {
svg.append("path")
.datum({type: "Point", coordinates: [d.Lon, d.Lat]})
.attr("d", path.pointRadius(d.Magnitude));
});
注意点的半径是如何通过每个点的路径设置的。您还可以将pointRadius设置为一个函数,因此您可以这样做:
var path = d3.geo.path()
.projection(…)
.pointRadius(function(d) { return d.radius; });
svg.selectAll("path.point")
.data(data)
.enter().append("path")
.datum(function(d) {
return {type: "Point", coordinates: [d.Lon, d.Lat], radius: d.Magnitude};
})
.attr("class", "point")
.attr("d", path);
你问题的第二部分是问这些圆是否可以是真正的地理圆。d3.geo。circle可以生成地理圈特征(同样作为GeoJSON),这些特征将被适当地剪切:
var path = d3.geo.path().projection(…),
circle = d3.geo.circle();
svg.selectAll("path.point")
.data(data)
.enter().append("path")
.datum(function(d) {
return circle
.origin([d.Lon, d.Lat])
.angle(d.Magnitude)();
})
.attr("class", "point")
.attr("d", path);
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 如何在d3.js中返回路径的y坐标
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- D3缩放和平移不适用于整个地图,只适用于投影
- 使用d3.js重复世界地图投影
- D3.js zoomTo指向2D地图(投影)
- 使用 QGIS 和 D3 可视化自定义地图.js会受到投影的损害
- D3.js 在画布图像上映射投影
- D3 albersUsa 投影函数返回空值
- 如何计算d3.js卫星投影的投影旋转和网格扩展
- 如何在复制d3,svg地图后更新投影
- 如何在d3 js中为地图重投影做平滑过渡
- 为什么这9个美国城市在D3地图上没有对应它们的实际位置,而我用Albers美国投影来绘制它们
- 在D3 -tip工具提示上应用投影
- 圆剪辑和投影与D3正射影
- 改变形状文件投影的可视化与D3
- 在D3投影上绘图
- 我怎样才能找到现有D3路径的投影
- D3.js和地理投影算法/中心