Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Map d3.js墨卡托投影到纽约地图_Map_D3.js_Map Projections_Mercator - Fatal编程技术网

Map d3.js墨卡托投影到纽约地图

Map d3.js墨卡托投影到纽约地图,map,d3.js,map-projections,mercator,Map,D3.js,Map Projections,Mercator,我正在制作一张纽约各行政区的地图,但我似乎无法正确地进行投影:我得到的只是一张小地图 我尝试重新创建一个示例,这只会让控制台因为错误而变得疯狂,我怀疑这是因为这个等式有问题 当我试图让阿尔伯斯工作时,我尝试了这个问题的答案,但仍然无法让地图工作 With 960/500 height and width, I used: var projection = d3.geo.albers().center([40.71, 73.98]).parallels([29.5, 45.5]).scale(

我正在制作一张纽约各行政区的地图,但我似乎无法正确地进行投影:我得到的只是一张小地图

我尝试重新创建一个示例,这只会让控制台因为错误而变得疯狂,我怀疑这是因为这个等式有问题

当我试图让阿尔伯斯工作时,我尝试了这个问题的答案,但仍然无法让地图工作

  With 960/500 height and width, I used: var projection = d3.geo.albers().center([40.71, 73.98]).parallels([29.5, 45.5]).scale(10000).translate([(width) / 2, (height)/2]);
现在,我正在使用一个横轴墨卡托,下面的代码和我使用其中一个文件创建的topojson

请,请暂停:(


提前感谢!

我与纽约市行政区一起创建了一个bl.ock。正如QGIS中的快速检查所示,您使用WSG84/Mercator的路径是正确的,因为原始数据就是这样

也很好地检查了数据的中心,结果再次是[-73.94,40.70]请注意,这些坐标与你的坐标相反,坐标是lat和long,但d3需要long和lat,如中所述。另外要注意的是负数。北半球是正的,所以北半球的纬度是正的,南半球的纬度是负的。东半球和西半球的eas是负的这不是积极的。当然,这只关系到全球预测,美国阿尔伯斯不会对美国有负面影响。哦,如果不看一眼,任何关于预测的讨论都是不完整的


如果您想使用与您的数据所在的投影不同的投影,我通常认为最好将您的数据预处理到该投影中,QGIS是一个很好的工具,但还有许多其他工具,如gdal。

应该会有所帮助。哇,谢谢!我最后使用了新泽西示例,使用了相应的JSON,并移动了map到纽约坐标。然后我打印出了动态计算的比例和变换,但这当然会吐出不整齐的数字。这最终还是奏效了,但你的答案更有用。+1也是因为我认为没有那么多关于这方面的信息!我不知道怎么做,抱歉!
  var width = 960,
   height = 500;

  var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

  d3.json("nyc-borough.json", function(error, nyb) {

  var boroughs = topojson.feature(nyb, nyb.objects["nyc-borough-boundaries-polygon"]).features;

  var projection = d3.geo.transverseMercator()
.scale(1600)
.rotate([73 + 58 / 60, -48 - 47 / 60]);

var path = d3.geo.path()
.projection(projection);

var g = svg.append("g");

g.append("g")
.attr("id", "boroughs")
.selectAll(".state")
.data(boroughs)
.enter().append("path")
.attr("class", function(d){ return d.properties.name; })
.attr("d", path);

});