gpt4 book ai didi

image - 如何使用免费工具将 ESRI 或 MapInfo GIS 数据转换为图像?

转载 作者:行者123 更新时间:2023-12-02 09:36:08 26 4
gpt4 key购买 nike

澳大利亚选举委员会免费提供澳大利亚选举边界的 ESRI 和 MapInfo GIS 图层 download 。我想使用免费工具将此数据转换为缩略图多边形图像。

最佳答案

我假设您想要为每个选民提供单独的图像?如果是这样,我将使用 python 采取以下方法:

使用 GDAL/OGR 读取几何图形:

安装GDAL/OGR tools和他们的python bindings 。下载选举边界的 ESRI shapefile。确保您可以使用 OGR 读取多边形几何图形:

import sys
import ogr

ds = ogr.Open( "/path/to/boundary/file.shp" )
if ds is None:
print "Open failed.\n"
sys.exit( 1 )

lyr = ds.GetLayer(0)

lyr.ResetReading()

feat = lyr.GetNextFeature()
while feat is not None:
geom = feat.GetGeometryRef()
if geom is None or geom.GetGeometryType() != ogr.wkbPolygon:
print "no poly geometry\n"

feat = lyr.GetNextFeature()

ds.Destroy()

通过 shapely、descartes 使用 matplotlib 输出几何图形

安装matplotlib , shapelydescartes 。修改上面的脚本,通过 shapely 和 descartes 将每个多边形加载到 matplob 中:

import sys
import ogr
from shapely.wkb import loads
from descartes import PolygonPatch
from matplotlib import pyplot


ds = ogr.Open( "/path/to/boundary/file.shp" )
if ds is None:
print "Open failed.\n"
sys.exit( 1 )

lyr = ds.GetLayer(0)

lyr.ResetReading()

feat = lyr.GetNextFeature()
while feat is not None:
geom = feat.GetGeometryRef()
if geom is None or geom.GetGeometryType() != ogr.wkbPolygon:
print "no poly geometry\n"
else:
# create matplotlib figure:
fig = pyplot.figure(1, figsize = [10,10], dpi = 300) #create 10x10 figure
ax = fig.addsubplot(111) #Add the map frame (single plot)

# add polygon:
patch = PolygonPatch(loads(feature.GetGeometryRef().ExportToWkb()), plus colour and line considerations)
ax.addpatch(patch) # simply add the patch to the subplot

# set plot vars
ax.set_xlim(get xmin and xmax values from data)
ax.set_ylim(get ymin and ymax values from data)
ax.set_aspect(1)

# save as image
pyplot.savefig('somefile.png', some arguments you like)¶

feat = lyr.GetNextFeature()

ds.Destroy()

显然,您需要对此进行一些修复,以使其按照您想要的方式绘制,但一般方法应该是合理的。

关于image - 如何使用免费工具将 ESRI 或 MapInfo GIS 数据转换为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3226018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com