誰でもシェープファイルから画像を作成するための迅速な(そして好ましくはオープンソース)方法を提案できますか たとえば、パーセル境界を含むシェープファイルがあり、これらのパーセルを表すPNGファイルを作成したいとします。この画像に必要な記号は、必要最低限(アウトラインと塗りつぶし)になります。
MapServerのshp2imgがうまくいくことを知っています。他に利用できるものがあるかどうか、私は興味があります。
プリコンパイルされたツールまたはapi / sdkへの参照は歓迎します。
誰でもシェープファイルから画像を作成するための迅速な(そして好ましくはオープンソース)方法を提案できますか たとえば、パーセル境界を含むシェープファイルがあり、これらのパーセルを表すPNGファイルを作成したいとします。この画像に必要な記号は、必要最低限(アウトラインと塗りつぶし)になります。
MapServerのshp2imgがうまくいくことを知っています。他に利用できるものがあるかどうか、私は興味があります。
プリコンパイルされたツールまたはapi / sdkへの参照は歓迎します。
回答:
python(モジュール:shapley、GDAL / OGR、numpy、matplotlib)および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')
GeoTools http://geotools.orgにはこれを行うために必要なすべてのビットが含まれていますが、誰かがこれを行うコードをまだ持っていない場合は驚かれることでしょう。
この質問はすでに回答されていますが、誰かに役立つかもしれないので、いくつかの追加情報を掲載します。このメーリングリストでは、SHPを画像に変換する方法について説明しています。現在、私はこれを使用してタスクを完了しています:http : //lists.osgeo.org/pipermail/qgis-user/2010-October/010239.html
私はこのソリューションを2つの異なる方法を使用して少し前に文書化しました。
Pythonがどこでも実行される純粋なPythonを使用するもの:http : //geospatialpython.com/2010/12/rasterizing-shapefiles-2-pure-python.html
Python Imaging Libraryを使用するもの:http : //geospatialpython.com/2010/12/rasterizing-shapefiles.html