Сценарий Python картографа генерирует SVG с неправильными координатами широты и долготы
Я изменил этот вопрос, чтобы отразить некоторый прогресс в обнаружении проблемы. Я использую следующий код Python для генерации SVG континентальной части США. Шейп-файл не имеет значения, поскольку описанная мною проблема возникает независимо от того, какой шейп-файл я использую. Сценарий действительно прост. Я просто беру шейп-файл для США и использую ограничивающий прямоугольник, чтобы исключить Гавайи и Аляску.
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 градусов долготы.
Когда я использую готовый SVG из Картографа, у меня нет этой проблемы (я еще не пробовал обрезать Аляску и Гавайи). Так что-то в моем скрипте на python вызывает это, но я не понимаю, что.
ИСПРАВЛЕНО: Комментарий ниже заставил меня задуматься, что, возможно, это как-то связано с проекцией. Я удалил часть скрипта Python, которая рисует график как проекцию меркатора, и это все исправило. Я не уверен, что понимаю почему, но если у вас возникла похожая проблема, и вы нашли этот вопрос: попробуйте изменить свой прогноз или вообще не использовать его.
1 ответ
Возможно, система координат, используемая в вашем SVG-файле, не совпадает с широтой и долготой. Возможно, вам понадобится узнать, какая проекция использовалась для генерации файла SVG и вычисления широт и долгот с использованием обратной проекции. Возможно также попытайтесь увидеть, возникает ли та же проблема с готовыми картами, предоставленными Картографом.