第十一章 D3地理

d3绘制地图思路

绘制思路:

  1. 首先 定义地图的投影和地理路径生成器:
  2. 获取Json文件,
  3. 拿到geojson.features添加path标签,调用地理路径生成器绘制
//定义地图的投影
var projection = d3.geoAlbers(),
//地理路径生成器
    path = d3.geoPath(projection);
svg.selectAll('path')
    .data(data.features)
    .enter()
    .append('path')
    .attr('d',path)  // 调用地理路径生成器绘制

TopoJSON对GeoJSON的扩展,

  • 优点:文件小(geo:topo=5:1)
  • 缺点:需要用插件转换回geojson
    使用TopoJson时需要将则需要使用topojson.js转换
var georoot = topojson.feature(toporoot,toporoot.objects.china); 

d3投影方式类

方法:
invert() 根据坐标点返回经纬度
clipAngle() 设置或获取投影的裁剪大圆的角度
clipExtent() 设置或获取投影的视口裁剪范围
scale() 设置或获取投影的缩放因子
center()
rotate() (控制三维的旋转)
fitExtent()
fitSize()


裁剪角度的意义

方位角投影(直接将球体投影到平面上)

等面积投影:

  • d3.geoAzimuthalEqualArea()
  • d3.geoAzimuthalEqualAreaRaw()

等距投影:

  • d3.geoAzimuthalEquidistant()
  • d3.geoAzimuthalEquidistantRaw()

球心投影:

  • d3.geoGnomonic()
  • d3.geoGnomonicRaw()

正交投影:

  • d3.geoOrthographic()
  • d3.geoOrthographicRaw()

球面投影:

  • d3.geoStereographic()
  • d3.geoStereographicRaw()

复合投影

  • d3.geoAlbersUsa()

圆锥投影将球面覆盖到一个圆锥上,然后在展开到平面上

阿尔伯斯投影

  • d3.geoAlbers()

兰伯特正形圆锥投影(双标准纬线默认为[30°, 30°])

  • d3.geoConicConformal()

双标准纬线等积圆锥投影

  • d3.geoConicEqualArea()
  • d3.geoConicEqualAreaRaw()

双标准纬线等距圆锥投影

  • d3.geoConicEquidistant()
  • d3.geoConicEquidistantRaw()

圆柱投影

普通圆柱投影:

  • d3.geoEquirectangular()
  • d3.geoEquirectangularRaw()

默认[projection.clipExtent]为±85°经度的墨卡托投影

  • d3.geoMercator()
    横向墨卡托投影。
    d3.geoTransverseMercator()
    d3.geoTransverseMercatorRaw()

d3路径生成类

d3.geoPath()

  • projection() 设置投影方式
  • context() 设置canvas上下文
  • area() 计算投影面积
  • bounds() 计算几何边界框
  • centroid() 计算几何中心点,(加载标签)
  • pointRadius() 设置点的半径 适用于Point MultiPoint

经纬线

d3.geoCircle() 创建一个圆生成器
.center()
.radius()
.precision()
d3.geoGraticule() 创建一个经纬度网格生成器: 默认的网格在±80°之间每隔10度有一个维度线。
.lines() 经线和纬线的GeoJSON LineString几何对象
.outline() 返回一个GeoJSON Polygon几何对象表示轮廓
.extent() 设置或获取球面网格的范围,等于同时设置major和minor
.extentMajor()
.extentMinor()
.step() 设置或获取步长,等于同时设置major 和 minor的步长,默认为⟨10°, 10°⟩.
precision() 设置或获取网格线的经度,默认为2.5°.

球面数学

d3.geoArea(feature) 返回指定的GeoJSON特征代表的球面的面积
d3.geoBounds(feature) 返回指定GeoJSON特征的包围框
d3.geoCentroid(feature) 返回指定GeoJSON特征几何中心
d3.geoDistance(a, b) 返回a到b之间的弧度距离
d3.geoLength(feature) 返回指定GeoJSON的弧长(对于多边形则返回周长)
d3.geoInterpolate(a, b) 返回一个介于a和b之间的插值器
d3.geoRotation(angles)根据指定的角度返回一个旋转函数

d3.geoTransform(methods)
d3.geoIdentity() 恒等转化可以被来缩放,平移和平面的裁剪
.reflectX([reflect])设置或获取x方向的反射 reflect
.reflectY([reflect])设置或获取x方向的反射 reflect

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容