将默认D3投影拟合到Daily Kos Congressional District Hexmap

问题描述

Daily Kos具有一个独特的“ Congressional district Hexmap-CD-仅国会区(50个州)” shapefile-https://docs.google.com/spreadsheets/d/1LrBXlqrtSZwyYOkpEEXFwQggvtR0bHHTxs9kq4kjOjw/edit#gid=1250379179-非常适合我们的用例。但是我遇到了一个问题,以使其适合我们设计的容器大小。传统上,我采用一个TopoJSON文件(即美国),并使用Albers USA投影(或其他)进行投影,然后使用容器的宽度和高度来计算形状的最佳path-见下文。

在这种“国会区域Hexmap”案例中,我认为shapefile已经被投影,因此当我应用Albers或Mercator投影时,它会扭曲其外观。

因此,我想知道是否存在null认投影,这些投影仍将允许我使用fitSize()辅助函数将形状缩放到容器吗?

An Albers US projection applied to a hex congressional district map

解决方法

因此,我想知道是否存在null或默认投影,该投影仍将允许我使用fitSize()帮助函数将形状缩放到容器吗?

null传递到path.projection()对您没有帮助;但是,d3.geoIdentity将。默认情况下,它与空投影相同,因为它采用输入坐标,并且不进行任何变换或投影就将其输出。但是,它确实提供了对许多有用方法的访问,例如scaletranslate以及fitSizefitExtent等(这些方法仅设置了缩放比例并转换了毕竟)。该文档还有更多信息here

但是,根据地理数据的不同,您可能需要反映y坐标,因为地理y值随着向北移动(通常)而增加,而SVG /画布y值随着向下移动(通常向南)而增加。 / p>

因此您可以使用:

var projection = d3.geoIdentity()
                   .reflectY(true) // if needed.
                   .fitSize([width,height],geoJsonObject)

使用路径生成器。

相关问答

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