任何人都可以建议一种快速(最好是开源)的方式从shapefile创建图像的方法。例如,我有一个包含宗地边界的shapefile,我想创建一个描述这些宗地的png文件。该图像所需的符号体系为准(实轮廓和填充)。
我知道MapServer的shp2img可以解决问题。我只是好奇是否还有其他可用的东西。
欢迎使用任何对预编译工具或api / sdks的引用。
任何人都可以建议一种快速(最好是开源)的方式从shapefile创建图像的方法。例如,我有一个包含宗地边界的shapefile,我想创建一个描述这些宗地的png文件。该图像所需的符号体系为准(实轮廓和填充)。
我知道MapServer的shp2img可以解决问题。我只是好奇是否还有其他可用的东西。
欢迎使用任何对预编译工具或api / sdks的引用。
Answers:
您可以使用python(模块:shapley,GDAL / OGR,numpy,matplotlib)和GDAL / OGR从几乎所有矢量数据源中绘制图像,在您的情况下为shapefile。也许这会对您有所帮助。
例:
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转换为Images,目前我正在使用它来完成任务:http : //lists.osgeo.org/pipermail/qgis-user/2010-October/010239.html
不久前,我使用两种不同的方法记录了这种解决方法。
一种使用纯Python并可以在任何Python地方运行的代码:http : //geospatialpython.com/2010/12/rasterizing-shapefiles-2-pure-python.html
还有一个使用Python Imaging Library的网站:http : //geospatialpython.com/2010/12/rasterizing-shapefiles.html