【发布时间】:2023-03-18 07:00:02
【问题描述】:
我正在尝试创建美国学区的 TopoJSON 文件。我的工作流程如下:
- 从人口普查局下载并解压缩单个 TIGER 形状文件(24 个 ESD,19 个 SSD,56 美元)
- 用ogr2ogr批量合并这99个文件
- 将合并的 shapefile 转换为 GeoJSON
- 将 GeoJSON 转换为 TopoJSON(理想情况下,我也会在此处将状态边界添加到文件中)
第 4 步是什么导致我出现问题,我正在使用以下批处理脚本:
call topojson ^
-o SDs11_Topo.json ^
-p NAME ^
--simplify-proportion .1 ^
--id-property GEOID ^
-- ^
ESDs11.json ^
SSDs11.json ^
USDs11.json
pause
但是我遇到了以下致命的内存错误:
FATAL ERROR: CALL_AND_RETRY_0 Allocation failed - process out of memory
这让我对如何继续感到有些不知所措,如果有人能就更好的工作流程或在转换为 topojson 时更好地管理内存的方法提出建议,我将不胜感激。谢谢。
【问题讨论】:
-
输入的 GeoJSON 文件有多大?如果它们接近约 1GB,则必须使用 shapefile 输入而不是 GeoJSON,因为 shapefile 更紧凑并且可以流式传输。 (Node.js 的最大缓冲区大小为 1GB,这使得解析大于该大小的 JSON 文件变得困难。)您还可以使用
node --max-old-space-size=XXXX bin/topojson增加可用内存量,其中 XXXX 是大量兆字节。跨度> -
谢谢,使用 shapefile 作为输入似乎已经解决了这个问题(json 文件是 365、39 和 18 MB 文件)不幸的是,我现在遇到了一个不同的错误:
ReferenceError: distance is not defined,我将为此创建一个单独的问题
标签: javascript d3.js gis topojson