首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >d3墨卡托几何界到像素界

d3墨卡托几何界到像素界
EN

Stack Overflow用户
提问于 2014-03-30 11:04:12
回答 1查看 1.8K关注 0票数 0

我想知道是否有一个D3-API调用将d3.geo.bounds()数组转换为给定映射的宽度和高度的path.bounds像素数组?

我在API文档中找不到这样的调用。我知道有一些投影应该符合这个技巧,但是我没有从一个地理界得到实际的像素界。

另外,是否有计算一系列特性的lat/long质心的API实现?

我很感激你的帮助!

示例

假设用户希望将德国和波兰放大到全屏。我的计算长的边界是:

代码语言:javascript
复制
lat:47.27148371456806 long: 5.850585058505857
(1321.6041604160416,246.58117844670664)
lat:55.06843452896922 long: 24.140414041404142
(1451.6651665166517,157.87336991900156) 

检查谷歌地图,长的坐标是正确的。然而,计算像素值(使用来自https://stackoverflow.com/a/14457180/974815的方法)对我来说似乎很奇怪。屏幕分辨率为2560x1258。

为了计算墨卡托投影的偏移量,我想将长时间的边界转换为像素边界:

代码语言:javascript
复制
var offset = [
               this.width - (bounds[0][0] + bounds[1][0])/2,
               this.height - (bounds[0][1] + bounds[1][1])/2
             ];   

return d3.geo.path().projection(
                                 d3.geo.mercator()
                                   .center(this.__computeCentroid(features))
                                   .scale(scale)                                
                                   .translate(offset)
                               );

最好,塞巴斯蒂安

EN

回答 1

Stack Overflow用户

发布于 2014-03-30 12:29:29

使用可用的投影之一将特征的地理坐标转换为像素(投影)坐标。您可以使用投影将地理边界转换为投影边界,也可以直接使用path.bounds()获取该信息。也就是说,不是将特性传递给d3.geo.bounds(),而是将其传递给使用投影的d3.geo.path().bounds()方法。

没有计算一系列特征的质心的函数。您可以将这些特性组合成一个(最好是使用一个GIS程序)并获得其中的质心,或者获取所有特征的质心,然后通过平均坐标得到质心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22743203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档