6

問題の発見に関する進歩を反映するために、この質問を修正しました。次の 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 度ずれています。

Kartograph の事前に作成された SVG を使用する場合、この問題は発生しません (アラスカとハワイのトリミングはまだ試していません)。私のpythonスクリプトに関する何かがこれを引き起こしていますが、何がわかりません。

修正済み: 以下のコメントを見て、これはプロジェクションと関係があるのではないかと考えました。グラフをメルカトル図法として描画する python スクリプトの一部を削除すると、すべてが修正されました。理由がよくわかりませんが、同様の問題があり、この質問を見つけた場合は、投影を変更するか、投影をまったく使用しないでください。

4

1 に答える 1

1

SVG ファイルで使用されている座標系が緯度と経度と一致していない可能性があります。SVG ファイルの生成に使用された投影法を知り、その投影法の逆数を使用して緯度と経度を計算する必要がある場合があります。また、Kartograph が提供するすぐに使用できるマップで同じ問題が発生するかどうかも確認してみてください。

于 2013-11-18T09:31:49.700 に答える