从矢量数据创建简单图像


14

任何人都可以建议一种快速(最好是开源)的方式从shapefile创建图像的方法。例如,我有一个包含宗地边界的shapefile,我想创建一个描述这些宗地的png文件。该图像所需的符号体系为准(实轮廓和填充)。

我知道MapServer的shp2img可以解决问题。我只是好奇是否还有其他可用的东西。

欢迎使用任何对预编译工具或api / sdks的引用。


也许可以将这个问题改名为“从矢量数据(例如Shape)创建简单图像”,以便它是一个更通用的问题?您仍然可以得到答案,但是其他人也有更多的动力去查看/回答。我也建议出于相同的原因将“和开源”更改为“最好是开源”。
马克·爱尔兰

好点,进行了编辑。
user890 2010年

Answers:


15

您可以使用python(模块:shapleyGDAL / OGRnumpymatplotlib)和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')

正是我所需要的。此方法特别有用,因为它不依赖于shapefile数据源。谢谢。
user890 2010年

6

快速,便宜(又脏):

  • 使用qgisudigopenjump或任何其他免费GIS 打开并符号化您的形状文件,
  • 按“ 打印屏幕 ”按钮,
  • 粘贴在gimp中并另存为png文件。

缺点:当然,图像分辨率不能比屏幕分辨率高。



2

我想这取决于您快速的意思。您是说易于安装还是一旦安装便易于使用。

您提到了MapServer和shp2img。如果安装了MapServer,则可能会编写一个非常简单的MapScript(Python或php)脚本,该脚本将循环遍历shapefile的文件夹并使用默认符号系统来渲染它们的图像。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.