6

我已经修改了这个问题,以反映发现问题的一些进展。我正在使用以下 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 脚本部分,这修复了所有问题。我不确定我是否理解为什么,但如果您遇到类似问题并发现这个问题:尝试更改您的投影或根本不使用投影。

4

1 回答 1

1

可能是您的 SVG 文件中使用的坐标系与纬度和经度不一致。您可能需要知道使用什么投影来生成 SVG 文件,并通过使用该投影的倒数来计算纬度和经度。也许也可以尝试看看Kartograph提供的即用型地图是否会出现同样的问题。

于 2013-11-18T09:31:49.700 回答