问题描述
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()
辅助函数将形状缩放到容器吗?
解决方法
因此,我想知道是否存在null或默认投影,该投影仍将允许我使用fitSize()帮助函数将形状缩放到容器吗?
将null
传递到path.projection()
对您没有帮助;但是,d3.geoIdentity
将。默认情况下,它与空投影相同,因为它采用输入坐标,并且不进行任何变换或投影就将其输出。但是,它确实提供了对许多有用方法的访问,例如scale
和translate
以及fitSize
,fitExtent
等(这些方法仅设置了缩放比例并转换了毕竟)。该文档还有更多信息here。
但是,根据地理数据的不同,您可能需要反映y坐标,因为地理y值随着向北移动(通常)而增加,而SVG /画布y值随着向下移动(通常向南)而增加。 / p>
因此您可以使用:
var projection = d3.geoIdentity()
.reflectY(true) // if needed.
.fitSize([width,height],geoJsonObject)
使用路径生成器。