Kartograph python脚本使用不正确的lat/long坐标生成SVG

2024-05-12 20:12:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我修改了这个问题,以反映在发现问题方面取得的一些进展。我使用下面的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脚本中将图形绘制为墨卡托投影的部分,这修复了所有问题。我不知道为什么,但是如果你有类似的问题,并且发现这个问题:试着改变你的投影或者根本不使用投影。在


Tags: 代码svg脚本idusers边界投影blah
1条回答
网友
1楼 · 发布于 2024-05-12 20:12:25

可能是SVG文件中使用的坐标系与经纬度不一致。您可能需要知道生成SVG文件所使用的投影,以及使用该投影的逆投影计算纬度和经度。 也许也可以试着看看是否同样的问题也发生在由Kartograph提供的ready-to-use maps上。在

相关问题 更多 >