这是用于这里还翻译成Proj.4字符串的阿尔贝尔斯conicEqualArea的标准MKT表达式( 巴西官方统计网格 )。
PROJCS["Conica_Equivalente_de_Albers_Brasil",
GEOGCS["GCS_SIRGAS2000",
DATUM["D_SIRGAS2000",
SPHEROID["Geodetic_Reference_System_of_1980",6378137,298.2572221009113]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Albers"],
PARAMETER["standard_parallel_1",-2],
PARAMETER["standard_parallel_2",-22],
PARAMETER["latitude_of_origin",-12],
PARAMETER["central_meridian",-54],
PARAMETER["false_easting",5000000],
PARAMETER["false_northing",10000000],
UNIT["Meter",1]]基准是WGS 84 ("SIRGAS2000“是它的别名)。
如何将所有细节转换到parametrization? D3.js v5
我尝试明显的,作为中心和平行,但它是不够的。
var projection = d3.geoConicEqualArea()
.parallels([-2,-22]) // IS IT?
.scale(815)
//.rotate([??,??]) // HERE THE PROBLEM...
.center([-54, -12]) // IS IT?PS:它的D3文档在哪里?D3源代码的geoConicEqualArea()没有线索。
发布于 2019-10-28 15:08:14
转换为d3 Albers投影的部分如下:
PROJECTION["Albers"],
PARAMETER["standard_parallel_1",-2],
PARAMETER["standard_parallel_2",-22],
PARAMETER["latitude_of_origin",-12],
PARAMETER["central_meridian",-54],你有平行的,现在你需要旋转。还要注意,对于任何D3投影,旋转都适用于中心坐标。通常,您希望在x上旋转,在y上中心旋转:
d3.geoAlbers()
.parallels([-2,-22])
.center([0,-12])
.rotate([54,0])
.translate([width/2,height/2])
.scale(k)我沿着x轴向相反的方向旋转(旋转我下面的地球,使我超越了中央子午线,因此我的自转是-x)。最后,我翻译了中心经度和子午线的交点在地图的中心位置,并应用了一个合适的比例值。
如果我想以不同的区域为中心,但保持投影不变,我可以修改projection.center(),但请记住,这里提供的坐标是相对于旋转的。我还可以使用projection.fitSize()或projection.fitExtent(),这两种方法都为投影设置了“转换”和“缩放”值。中心/比例/平移都不会改变D3投影中的失真。
当然,这不是投影的真实复制,因为坐标空间单位是像素,如果没有额外的工作,您将无法直接测量米的距离。
请参阅也是
https://stackoverflow.com/questions/58588668
复制相似问题