ベクターデータからシンプルな画像を作成する


14

誰でもシェープファイルから画像を作成するための迅速な(そして好ましくはオープンソース)方法を提案できますか たとえば、パーセル境界を含むシェープファイルがあり、これらのパーセルを表すPNGファイルを作成したいとします。この画像に必要な記号は、必要最低限​​(アウトラインと塗りつぶし)になります。

MapServerのshp2imgがうまくいくことを知っています。他に利用できるものがあるかどうか、私は興味があります。

プリコンパイルされたツールまたはapi / sdkへの参照は歓迎します。


おそらく、この質問のタイトルを「ベクターデータ(単純な図形など)から単純な画像を作成する」に変更することで、より一般的な質問になるでしょうか。あなたはまだ答えを得ることができますが、他の人々が見たり答えたりするインセンティブもあります。同じ理由で、「そしてオープンソース」を「できればオープンソース」に変更することもお勧めします。
マークアイルランド

良い点、編集が適用されました。
user890

回答:


15

python(モジュール:shapleyGDAL / OGRnumpymatplotlib)およびGDAL / OGRを使用して、ほぼすべてのベクターデータソース(場合によってはシェープファイル)から画像を描画できます。たぶんこれはあなたを助けるでしょう。

例:

from shapely.geometry import Polygon
from shapely.wkb import loads
from osgeo import ogr
from matplotlib import pyplot

def drawPoligon(poligon,graf):
    xLista,yLista = poligon.exterior.xy
    graf.fill(xLista,yLista,"y")
    graf.plot(xLista,yLista, "k-")

fig = pyplot.figure(figsize=(4, 4),dpi=180)
ax = fig.add_subplot(111)
file1 = ogr.Open("d:\\temp02\\datafile.shp")

layer = file1.GetLayerByName("datafile")
parcel = layer.GetNextFeature()

while parcel is not None:
    geometryParcel = loads(parcel.GetGeometryRef().ExportToWkb())
    drawPoligon(geometryParcel , ax)
    parcel = layer.GetNextFeature()


pyplot.savefig('datafile.png')

まさに私が必要なもの。このアプローチは、シェープファイルデータソースに関連付けられていないため、特に便利です。ありがとう。
user890

6

早くて安い(そして汚い):

  • qgisudigopenjumpまたは他の無料のGISでシェイプファイルを開いてシンボル化し、
  • 画面の印刷」ボタンを押して、
  • gimpに貼り付けて、pngファイルとして保存します。

欠点:もちろん、画像の解像度を画面の解像度よりも高くすることはできません。



2

それはあなたが迅速に何を意味するかにかかっていると思います。簡単にインストールできるもの、またはインストール後に使いやすいものを意味しますか?

MapServerとshp2imgに言及します。MapServerがインストールされている場合は、シェープファイルのフォルダーをループし、デフォルトのシンボルでそれらの画像をレンダリングする非常に単純なMapScript(Pythonまたはphp)スクリプトを作成できます。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.