我是Node.js的完全新手。我无法使用TopoJson将我的geoJson文件转换为TopoJson格式。我有topojson v3.0.0
我写了一个test.js文件,我正在用node.exe执行。
如下所示:
var tjson = require("topojson")
tjson.topojson -p --no-stitch-poles -o zip3.topo.json -- zip3.geo.json
console.log("hello")
抱怨no-stitch参数。但我尝试了很多东西,现在我怀疑我错过了一些巨大的东西。我查看了github,现在我很确定将geo转换为topo的过程在某些时候发生了变化。也许他可能将功能分解为子部分?我不确定。
节点新手的任何帮助?
我开始对是否从cmd提示符,节点内启动内容或创建js文件并使用节点启动该文件感到困惑。我还是不知道该做什么。我通过创建一个js文件并使用node.exe启动该js获得了最佳结果。但我似乎仍然缺少一些东西。
我尝试了console.log(tjson),它向我展示了topojson的功能列表。但我不知道如何启动这些功能。我试图遵循节点的一些教程,但它们似乎不适用于TopoJson。
感谢您提供了出色的工具和您的帮助。
我一直在看他关于使用geo2topo的教程 https://medium.com/@mbostock/command-line-cartography-part-1-897aa8f8ca2c
https://medium.com/@mbostock/command-line-cartography-part-3-1158e4c55a1e
我认为geo2topo未定义。我只能猜测教程正在做出某种假设,我知道在哪个文件夹中运行这些命令的环境。
答案 0 :(得分:0)
地图教程中的所有代码示例都是命令行片段,与此处的var tjson = require("topojson")
完全不同。如果您只是坚持使用迈克的示例并从CLI启动它们就应该没问题。
geo2topo
是topojson的一部分,您将https://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html作为全局节点包安装,其中包含npm install -g topojson
。
Mike的示例正在使用MacOS(即unixoid)CLI,就像我使用Linux一样 - 因此您可能需要稍微修改语法以使其在Windows上运行或将可执行文件添加到路径环境变量中。但这超出了我的意识。也许nodejs文档是这里的起点!?
答案 1 :(得分:0)
要在nodejs脚本/应用程序中使用它,您需要d3-geo-projection
软件包以及npm install d3-geo-projection topojson-server
软件包(以操纵投影),因此继续安装它们:
const fs = require('fs')
const geostitch = require('d3-geo-projection').geoStitch
const topojson = require('topojson-server')
// read the file
fs.readFile('./zip3.geo.json', {encoding: 'utf-8'}, (err, data) => {
// Treat read exception if any
if (err)
return console.error(err)
// Convert to topo
const topoData = topojson.topology(geostitch(data))
// Now `topoData` contains the topojson we can proceed into saving it into a file
fs.writeFile('zip3.topo.json', topoData, err => {
if (err)
return console.error(err)
return console.log('GeoJson converted to TopoJson, successfully saved at `zip3.topo.json`')
}
})
现在,在您的.js文件上,我们将需要读取文件并将其转换,然后可以将其写入其他文件(请注意,以下代码使用goeStitch投影,您可以使用所需的投影或忽略它,同时验证路径,因为代码使用静态路径)
CTFontManagerRegisterGraphicsFont