Kartograph python脚本使用不正确的纬度/长度坐标生成SVG

时间:2013-11-17 16:13:09

标签: python kartograph

我修改了这个问题,以反映发现问题的一些进展。我使用以下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脚本的一些原因导致了这一点,但我不明白。

固定:下面的评论让我想到这可能与预测有关。我删除了绘制图形作为mercator投影的python脚本部分,这修复了一切。我不确定我理解为什么,但如果你遇到类似的问题并找到这个问题:尝试改变你的投影或者根本不使用投影。

1 个答案:

答案 0 :(得分:1)

可能是SVG文件中使用的坐标系与纬度和经度不一致。您可能需要知道用于生成SVG文件的投影,以及使用该投影的倒数来计算纬度和经度。 也许还会尝试查看Kartograph提供的ready-to-use maps是否出现同样的问题。