Части, которые переводятся в проекцию d3 Альберса, следующие:
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). Затем я сосредоточился на Y. Наконец, я перевожу так, чтобы пересечение центральной долготы и меридиана было центрировано на карте, и применяю соответствующее значение масштаба.
Если я хочу центрироваться в другой области, но оставить проекцию неизменной, я могу изменить projection.center()
, но имейте в виду, что приведенные здесь координаты относятся к повороту. Я также могу использовать projection.fitSize()
или projection.fitExtent()
, которые устанавливают значения «translate» и «scale» для проекции. Ни один из центров / масштабов / сдвигов не изменяет искажения в проекции D3.
Конечно, это не является точной копией вашей проекции, поскольку единицы измерения координат - это пиксели, вы по-прежнему не сможете измерять расстояния в метрах. напрямую, без дополнительной работы.
См. , также