我已经修改了这个问题,以反映发现问题的一些进展。我正在使用以下 python 代码生成美国大陆的 SVG。shapefile 无关紧要,因为无论我使用什么 shapefile,都会出现我描述的问题。脚本真的很简单。我基本上只是为美国制作一个 shapefile,并使用一个边界框来排除夏威夷和阿拉斯加。
from kartograph import Kartograph
K = Kartograph()
blah={
"layers": [
{
"id":"mylayer",
"src":"/Users/austinc/Documents/shapefiles/states_21basic/states.shp",
}
],
"bounds":{
"mode":"bbox",
"data":[-130,25,-65,50],
},
"proj":{
"id":"mercator"
}
}
K.generate(blah,outfile='/Users/austinc/Desktop/mymap.svg')
问题是此代码生成的 svg 关联的坐标不正确。当我使用 javascript 尝试在其上绘制点时,这些点出现在正确的纬度上,但偏离了大约 100 度的经度。
当我使用来自 Kartograph 的预制 SVG 时,我没有这个问题(我还没有尝试裁剪掉阿拉斯加和夏威夷)。所以关于我的python脚本的一些东西导致了这个,但我不明白是什么。
已修复:下面的评论让我想到这可能与投影有关。我删除了将图形绘制为墨卡托投影的 python 脚本部分,这修复了所有问题。我不确定我是否理解为什么,但如果您遇到类似问题并发现这个问题:尝试更改您的投影或根本不使用投影。