【问题标题】:Use topojson to project shapefiles with different extents使用 topojson 投影不同范围的 shapefile
【发布时间】:2014-05-04 01:31:01
【问题描述】:

我有从 1790 年到 1860 年每个十年的美国人口普查 shapefile。由于美国在增长,这些 shapefile 的范围是不同的。这里使用 ogrinfo -so -al 是 1790、Extent: (-94.732708, 30.355644) - (-66.949831, 48.999992) 和 1860、Extent: (-124.762578, 24.521051) - (-66.949831, 49.384358) 的范围。

我想使用topojson--projection 标志将这些投影到屏幕坐标。运行此命令适用于每个文件:

topojson -o us_1790.json --simplify-proportion 0.10 \
  --projection 'd3.geo.albers()' \
  --width 960 \
  --height 500 \
  --margin 10 \
  -- shp/epsg4326/county_1790.shp

然后我可以在 d3 中显示地图。难点在于美国的每张地图都是居中的,也就是说1790年的美国地图和1860年的地图不对齐,以此类推。这就是我的意思:

我尝试使用--bbox 标志并将边界框设置为 1860 年的范围,但这不起作用。我还尝试寻找一种使用ogr2ogr 设置范围的方法。

如果需要,我可以在浏览器中进行投影,但我更愿意预先投影它们,以便地图尽可能快。我该怎么办?

【问题讨论】:

  • 这里的关键是需要将较小的地图投影到比完整地图更小的宽度和高度。如果您假设当前美国的全部范围对应于您的全屏宽度和高度,您应该能够计算出较小部分对应的屏幕尺寸。

标签: gdal topojson


【解决方案1】:

不要使用--width--height;指定投影的比例并改为平移,您将获得一个固定投影,该投影对于所有输入都是相同的。事实上,由于默认的 d3.geo.albers 缩放和平移被设计为适合 960×500 的视口,您可以简单地说:

topojson \
  -o us_1790.json \
  --simplify-proportion 0.10 \
  --projection 'd3.geo.albers()' \
  -- shp/epsg4326/county_1790.shp

【讨论】:

  • 效果很好,它还让我可以指定以像素为单位的简化阈值,正如您在 topojson 文档中所写的那样。谢谢。
猜你喜欢
  • 2014-10-07
  • 2017-02-20
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
相关资源
最近更新 更多