肆:炒菜篇
1、通过之前介绍的读取shape文件的py脚本,以下面方式将坐标值转换成wkb格式列表
def ShpToCoord(fileIn):
shpFile=ogr.Open(fileIn)
shpLayer=shpFile.GetLayer()
shpExtent=shpLayer.GetExtent()
frame.sketch.SetExtent(shpExtent)
#print shpExtent
shpFeature=shpLayer.GetNextFeature()
while shpFeature:
geoFeature=shpFeature.GetGeometryRef()
geoWKB=geoFeature.ExportToWkb()
geoList=WkbUnPacker(geoWKB)
if geoList[1]==1:
tmpList=[]
tmpList.extend(geoList[2])
frame.sketch.GetLines(tmpList,'D')
#print 'single dot'
if geoList[1]==2:
tmpList=geoList[2].tolist()
frame.sketch.GetLines(tmpList,'L')
#print 'single polyline'
if geoList[1]==3:
tmpList=geoList[2][0].tolist()
tmpList.extend(tmpList[:2])
frame.sketch.GetLines(tmpList,'P')
#print 'single polygon'
if geoList[1]==4:
for i in range(len(geoList[2])):
tmpList=[]
tmpList.extend(geoList[2][i])
frame.sketch.GetLines(tmpList,'D')
#print 'multi dots '+str(len(geoList[2]))
if geoList[1]==5:
for i in range(len(geoList[2])):
tmpList=geoList[2][i].tolist()
frame.sketch.GetLines(tmpList,'L')
#print 'multi polylines '+str(len(geoList[2]))
if geoList[1]==6:
for i in range(len(geoList[2])):
tmpList=geoList[2][i][0].tolist()
tmpList.extend(tmpList[:2])
frame.sketch.GetLines(tmpList,'P')
#print 'multi polygons '+str(len(geoList[2]))
else:
pass
shpFeature=shpLayer.GetNextFeature()
2、接下来建立窗口,初始化工作包括:
def __init__(self, parent, ID):
wx.Window.__init__(self, parent, ID)
self.SetBackgroundColour("White")#底色
self.color = "Black"#边线颜色
self.brush = wx.Brush("Blue")#填充颜色
self.thickness = 2#边线粗细
self.pen = wx.Pen(self.color, self.thickness, wx.SOLID)#1 创建一个wx.Pen对象
self.lines = []#存储一个图层坐标
self.curLine = []#存储一个feature的坐标
self.pos = (0, 0)
self.size = []
self.extent = []#用以存储图层外接多边形坐标
self.ratio = 0.0#用以存储缩放比例
self.InitBuffer()#执行上篇所述重读缓存数据的函数
3、设置外接多边形的exte (本文已被浏览 次) | | |