2

最近、カルトグラフを使い始めました。私は SVG の経験が浅いため、マップの作成に頭を悩ませています。国境の輪郭を描いた世界地図の作成に最初に問題が発生した後(これに似ています)、その他いくつかのもの (都市地域といくつかの装飾要素) を作成した後、私の問題は文書化されていないものに要約されます - または少なくともドキュメントで見つかりませんでした- エラー。kartograph.py フレームワークに対する私の無知に関連していると思います。

Kartograph に提供する json ファイルは次のようになります。

    {
    "proj": {
        "id": "lonlat",
        "lon0": 20,
        "lat0": 0
    },
    "layers": {
        "background": {
            "special": "sea",
            "charset": "latin-1",
            "simplify": false
        },
        "graticule": {
            "special": "graticule",
            "charset": "latin-1",
            "simplify": false,
            "latitudes": 1,
            "longitudes": 1,
            "styles":{
                "stroke-width": "0.3px"
            }
        },
        "world":{
            "src": "ne_50m_admin_0_countries.shp",
            "charset": "latin-1",
            "simplify": false
        },
        "lakes":{
            "src": "Lakes.shp",
            "charset": "latin-1",
            "simplify": false
        },
        "trees":{
            "src": "Trees.shp",
            "charset": "latin-1",
            "simplify": false
        },
        "depth":{
            "src": "DepthContours.shp",
            "charset": "latin-1",
            "simplify": false
        },
        "cities":{
            "src": "CityAreas.shp",
            "charset": "latin-1",
            "simplify": false
        }
   }

}

出力ファイルが巨大になり、生成に時間がかかることはわかっていますが、これは単なるテストです。後で「単純化」オプションを試してみます。ファイル内のコードの多くは、このチュートリアルに基づいています。また、空の simple 句は必要ないかもしれませんが、オプションがないことを kartograph からクレームがあったので、追加しました。

私が使用するコマンドは次のとおりです。

kartograph world.json -o world.svg

中止する前に、しばらくの間実行されます(すべての入力ファイルなどを解析していると思います)。今、私が直面しているエラーは次のとおりです。

    cli.py, in render_map()
  71: K.generate(cfg, args.output, preview=args.preview, format=format, stylesheet=css)  kartograph.py, in generate()
  46: _map = Map(opts, self.layerCache, format=format)  map.py, in __init__()
  50: me.bounds_poly = me._init_bounds()  map.py, in _init_bounds()
  192: features = self._get_bounding_geometry()  map.py, in _get_bounding_geometry()
  257: charset=layer.options['charset']
get_features() got an unexpected keyword argument 'filter'

エラーをスローするファイル (map.py) を調べてみましたが、ファイル内のやり取りが多すぎて、すぐに把握できないことがすぐにわかりました。

私が提供したデータが、私よりもカルトグラフに精通している誰かがエラーを追跡するのに十分であることを願っています.

更新: エラーはまだ有効です。現在、MacBook Pro と Asus ネットブック (それぞれ Arch と Bodhi Linux) の両方でテストしました。

前もってありがとう、カーソン

4

2 に答える 2

2

私の知る限り、「境界」パラメーターを含めることでその問題を解決できます。ドキュメント(「ドキュメント」と呼ぶのは有効ですか)によると、必要なパラメーターは「レイヤー」のみであるため、このエラーは表示されないため、実際には非常に注意が必要です。また、境界がどのように定義されるかは、選択した投影に明らかに依存します。あなたの例では、単純なポリゴン境界を使用します。

于 2014-06-27T13:32:08.043 に答える
1

私もそのエラーに問題がありました。しかし、すべてをセットアップするために何度も試行錯誤した結果、Kartograph をスクリプト内の Python モジュールとして使用した場合ではなく、Kartograph のコマンドライン バージョンでのみ表示されるようであることに気付きました。つまり、以下の例のように、カルトグラフをインポートする Python スクリプトに json ディクショナリを含めてみてください。

また、Kartograph のコマンド ライン バージョンを使用するときに機能しなかったもう 1 つの問題であるため、記録のために、フィルタリングの例も示しました。

# file: makeMap.py
from kartograph import Kartograph
K = Kartograph()

def myfilter(record):
    return record['iso_a3'] in ["FRA","ITA","DEU"]


config = {
    "layers": {
        "mylayer": {
            "src": "ne_50m_admin_0_countries.shp",
            "filter": myfilter,
            "attributes": {"iso_a3":"iso_a3", "name":"name", "id":"iso_a3"}
        }
    }, 
}

K.generate(config, outfile='world.svg')

次に、スクリプトを Python スクリプトとして実行します。

python makeMap.py
于 2014-04-01T18:28:44.797 に答える