我已经修改了这个问题,以反映发现问题的一些进展。我正在使用以下Python代码生成美国大陆的SVG。Shapefile是无关紧要的,因为我描述的问题不管使用什么shapefile都会发生。脚本非常简单。我基本上只是拿到了一个美国的shapefile,并使用边框框选来排除夏威夷和阿拉斯加。
这段代码生成的SVG存在不正确的坐标。当我使用JavaScript尝试在其上映射点时,这些点的纬度是正确的,但经度偏差约100度。当我使用Kartograph的预制SVG时,没有这个问题(但我尚未尝试裁剪阿拉斯加和夏威夷)。因此,我的Python脚本中有一些引起此问题的东西,但我不明白是什么原因。已解决:下面的评论让我想到这可能与投影有关。我删除了Python脚本绘制图形的部分Mercator 投影,这样就解决了所有问题。我不确定为什么会这样,但如果你遇到类似的问题并且看到这篇文章,请尝试更改投影或根本不使用投影。
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脚本绘制图形的部分Mercator 投影,这样就解决了所有问题。我不确定为什么会这样,但如果你遇到类似的问题并且看到这篇文章,请尝试更改投影或根本不使用投影。