使用D3进行可视化时更改shape文件投影

3
我正在尝试制作一个可视化图表,其中包括英国地图和其约650个选区。我通过遵循这个优秀的教程http://bost.ocks.org/mike/map/绘制了地图,并且它的效果非常好。然而,我能够找到的唯一选区数据来源是Ordnance Survey(Natural Earth有县级行政区划但没有选区)。问题在于OS选区文件不包含相同类型的坐标(正如您可能已经注意到的那样,我不是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]]

我的问题是:如何在D3中进行投影转换?我已经安装了ogr2ogr和TopJson,但不确定它们是否能够完成此任务,并且我无法找到任何信息,因为我没有足够的基础知识。

TIA


1
几天前,我和你处于完全相同的位置,正确的工具确实是ogr2ogr。我收到了这个片段ogr2ogr output.shp input.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0"但我不知道它是否适用于你的情况。希望有人能提出更好的答案。如果没有,可以在http://gis.stackexchange.com上尝试。 - methodofaction
非常感谢,那个方法可行。您是否愿意将其添加为答案? - toby
这更像是巧合而不是答案,我会在可能的时候(48小时内)添加赏金以便得到适当的解释,因为我也很好奇答案。 - methodofaction
1个回答

8
空间数据是在特定的坐标系中指定的。这个坐标系统用于将坐标投影到空间中的特定点,例如地图画布。对于地理数据,有成百上千种不同的坐标系统。其中一个原因是,地球对于投影并不好处理 -- 它不是一个完美的球体,不同的坐标系统往往在不同的地方效果最佳("效果最佳"指的是在将一个点投影到地球表面后的精度)。您可以在维基百科上找到更多信息。
定义坐标系统和投影并不一定困难或需要大量工作,但必须在使用之前完成。这就是为什么你无法直接使用你的数据的原因 -- 它使用了D3不知道的坐标系统(英国国家网格)。所以你的选择是将其转换成D3已知的一个坐标系统,或者在D3中实现你的坐标系统。前者几乎总是更容易的方法。
命令ogr2ogr output.shp input.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0"将输入的shapefile文件格式input.shp转换为通用横轴墨卡托(UTM)WGS84格式的output.shp(这就是t_srs字符串的含义,更多信息请参见维基百科),而不考虑输入中使用的坐标系统。
给定给t_srs的目标坐标系参数可以是显式定义(如上例所示)、对众所周知的坐标系的引用或包含定义的文件。例如,可以在此处找到众所周知的坐标系列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接