最近我开始使用 Kartograph。我对 SVG 缺乏经验,所以 map 创建让我很头疼。在创建勾画国家边界的世界地图时遇到了最初的困难 - 类似于 this - 以及其他一些事情(城市地区和一些装饰元素),我的问题归结为无证的 - 或者至少我没有在文档中找到它 - 错误。我想这和我对kartograph.py框架的无知有关。
我提供的 Kartograph 的 json 文件如下所示:
{
"proj": {
"id": "lonlat",
"lon0": 20,
"lat0": 0
},
"layers": {
"background": {
"special": "sea",
"charset": "latin-1",
"simplify": false
},
"graticule": {
"special": "graticule",
"charset": "latin-1",
"simplify": false,
"latitudes": 1,
"longitudes": 1,
"styles":{
"stroke-width": "0.3px"
}
},
"world":{
"src": "ne_50m_admin_0_countries.shp",
"charset": "latin-1",
"simplify": false
},
"lakes":{
"src": "Lakes.shp",
"charset": "latin-1",
"simplify": false
},
"trees":{
"src": "Trees.shp",
"charset": "latin-1",
"simplify": false
},
"depth":{
"src": "DepthContours.shp",
"charset": "latin-1",
"simplify": false
},
"cities":{
"src": "CityAreas.shp",
"charset": "latin-1",
"simplify": false
}
}
}
我知道输出文件会很大并且生成会花费很长时间,但这只是一个测试。稍后我将尝试“简化”选项。文件中的大部分代码基于 this tutorial 。另外,空的简化子句可能不是必需的,但 kartograph 提示缺少该选项,所以我添加了它。
我使用的命令是这个:
kartograph world.json -o world.svg
在中止之前它会运行一段时间(我猜是在解析所有输入文件等)。现在,我面临的错误是:
cli.py, in render_map()
71: K.generate(cfg, args.output, preview=args.preview, format=format, stylesheet=css) kartograph.py, in generate()
46: _map = Map(opts, self.layerCache, format=format) map.py, in __init__()
50: me.bounds_poly = me._init_bounds() map.py, in _init_bounds()
192: features = self._get_bounding_geometry() map.py, in _get_bounding_geometry()
257: charset=layer.options['charset']
get_features() got an unexpected keyword argument 'filter'
我尝试查看引发错误的文件(map.py),但我很快意识到文件中的交互太多,我无法快速掌握内容。
我希望我提供的数据足以让比我更熟悉卡图仪的人找到错误。
更新:错误仍然有效。我现在在 MacBook Pro 和华硕上网本(分别是 Arch 和 Bodhi Linux)上进行了测试。
提前致谢, 卡森
最佳答案
据我所知,您可以通过包含“bounds”参数来解决该问题。这确实非常棘手,因为根据文档(称为“文档”是否有效),这个错误不应该出现,因为唯一需要的参数是“层”。此外,如何定义边界显然取决于所选的投影。对于您的示例,我将使用简单的多边形边界。
关于javascript - Kartograph: map 创建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937077/