使用D3更改形状文件投影以进行可视化

tob*_*oby 3 javascript maps geo map-projections d3.js

我正在尝试制作一个涉及英国地图和所有约650个选区的可视化.我按照这个优秀的教程http://bost.ocks.org/mike/map/绘制了地图,效果很好.然而,我能为选区找到的唯一来源是军械测量(自然地球有县但没有选区).问题是操作系统选区文件不包含它们相同类型的坐标(您可以告诉我,我不是GIS专家),他们使用横向墨卡托投影.以下是我要转换的数据的.prj文件的属性:

PROJCS["British_National_Grid",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000],PARAMETER["False_Northing",-100000],PARAMETER["Central_Meridian",-2],PARAMETER["Scale_Factor",0.999601272],PARAMETER["Latitude_Of_Origin",49],UNIT["Meter",1]]
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在D3中将其转换为投影?我安装了ogr2ogr和TopJson但不确定这些是否可以做到这一点我无法在任何地方找到信息,因为我没有足够的基础知识.

TIA

Lar*_*off 8

空间数据在给定的坐标系中指定.此坐标系用于将坐标投影到空间中的特定点,例如地图画布.实际上有数百种不同的地理数据坐标系.造成这种情况的原因之一是地球在投影方面表现不佳 - 它不是一个完美的球体,不同的坐标系统往往在不同的地方运作得最好("最佳工作"指的是一旦你有多准确将一个点投射到地球表面上).您可以在维基百科上找到更多信息.

定义坐标系和投影不一定困难或工作量很大,但需要在使用之前完成.这就是您无法使用开箱即用数据的原因 - 它使用D3不了解的坐标系统(英国国家电网).因此,您可以选择将其转换为D3确实知道的,或者在D3中实现您的坐标系.前者几乎总是更容易的方式.

该命令ogr2ogr output.shp input.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0"将输入的shapefile(地理数据的文件格式)input.shp转换为Universal Transverse Mercator(UTM)WGS84格式(这是t_srs字符串的含义,更多内容在维基百科上)output.shp,无论输入中使用的坐标系如何.

给定的目标坐标系参数t_srs可以是显式定义(如上例中所示),对已知坐标系的引用或包含该定义的文件.例如,可以在此处找到众所周知的坐标系列表.