我修改了这个问题,以反映发现问题的一些进展.我使用以下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')
Run Code Online (Sandbox Code Playgroud)
问题是此代码生成的svg具有与之关联的不正确坐标.当我使用javascript尝试在其上映射点时,这些点出现在正确的纬度,但是经过大约100度的经度.
当我使用来自Kartograph的预制SVG时,我没有这个问题(我还没有试过去掉阿拉斯加和夏威夷).所以关于我的python脚本的一些事情导致了这个,但我不明白.
固定:下面的评论让我想到这可能与预测有关.我删除了绘制图形作为mercator投影的python脚本部分,这修复了一切.我不确定我理解为什么,但如果你有类似的问题并找到这个问题:尝试更改你的投影或根本不使用投影.
SVG 文件中使用的坐标系可能与纬度和经度不一致。您可能需要知道使用什么投影来生成 SVG 文件,并使用该投影的倒数来计算纬度和经度。也许还可以尝试看看Kartograph 提供的即用型地图是否也出现同样的问题。