【问题标题】:Changing shape file projection for visualisation with D3使用 D3 更改形状文件投影以进行可视化
【发布时间】:2013-03-08 21:49:06
【问题描述】:

我正在尝试制作包含英国地图及其所有约 650 个选区的可视化。我按照这个优秀的教程http://bost.ocks.org/mike/map/ 绘制了地图,效果很好。然而,我能找到选区的唯一来源是军械调查(Natural Earth 有县但没有选区)。 问题是操作系统选区文件不包含相同类型的坐标(您可能会说,我不是 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

【问题讨论】:

  • 几天前我和你在同一个地方,正确的工具确实是 ogr2ogr。我收到了这个 sn-p ogr2ogr output.shp input.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0" 但我不知道这是否适用于你的情况。希望有人能提出更好的答案。如果没有,请尝试gis.stackexchange.com
  • 非常感谢,成功了。您愿意添加为答案吗
  • 这更像是一个巧合而不是一个答案,我会在可能的情况下(48 小时)添加一个赏金,所以这得到了正确的解释,因为我也对答案感到好奇。

标签: javascript maps d3.js geo map-projections


【解决方案1】:

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

定义坐标系和投影不一定困难或工作量大,但需要先完成才能使用。这就是您无法直接使用数据的原因——它使用了 D3 不知道的坐标系(英国国家网格)。因此,您的选择是将其转换为one that D3 does know about,或在 D3 中实现您的坐标系。前者几乎总是更简单的方法。

命令 ogr2ogr output.shp input.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0" 将您的输入 shapefile(地理数据的文件格式)input.shp 转换为通用横轴墨卡托 (UTM) WGS84 格式(这就是 t_srs 字符串的含义,更多 on wikipedia)在 @ 987654328@,与输入中使用的坐标系无关。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-21
    • 2013-03-24
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多