我需要可视化的空间数据(20个多边形)从"postgis“数据库(postgresql),与python。我只知道如何用python连接postgresql数据库,但我不知道如何可视化这些多边形。这是我的大学的项目。例如,我们需要使用matplotlib并在python中创建应用程序,这将可视化postgresql数据库中的shapefile (.shp)。
我从这段代码开始,但我不知道如何继续:
import psycopg2
conn = psycopg2.connect("dbname='***' user='***' host='***' password='***'")
print 'Succesfully connected'
cur = conn.cursor()
cur.execute("""SELECT astext(the_geom) from buildings;""")
listpoly = cur.fetchall()
conn.close()
发布于 2009-11-22 04:33:24
当我需要创建光栅(位图)图形时,我很幸运地使用了Python Imaging Library。它有一个非常简单的界面,使得在另一个图像上覆盖图形变得非常容易。不幸的是,PIL并不经常更新。可能是因为它很管用。下面是如何做一个简单的多边形(从Nadia Alrami's excellent little intro to PIL升级而来):
im = Image.new('RGBA', (100, 100), (0, 0, 0, 0)) # Create a blank image
draw = ImageDraw.Draw(im)
lines = [(50, 0), (0, 40), (20, 100), (80, 100), (100, 40)]
draw.polygon(lines, fill="black")
对于更复杂的图像,我倾向于使用python的svgfig包在SVG中呈现它们。因为它是SVG,所以它们非常适合在web浏览器上进行缩放和共享。不幸的是,我不相信svgfig有一个很好的多边形函数,所以你需要通过这样做来修改你自己的函数:
def polygon(points):
for x in xrange(len(points)-1):
line(points[x][0], points[x][1], points[x+1][0], points[x+1][1])
line(points[-1][0], points[-1][1], points[0][0], points[0][1])
发布于 2009-11-22 03:40:30
Python有很多绘图包(当然,它们支持绘制多边形,这是该领域中最基本的特性之一;-),我认为最流行的是matplotlib。
发布于 2009-11-22 03:49:16
通过matplotlib,您可以使用fill() command绘制多边形。
例如,若要创建具有顶点(3,2)、(4,2)、(4,4)、(3,4)的多边形,可以定义x=3,4,4,3、y=2,2,4,4并使用fill(x,y)。例如,
import pylab
z=[(3,2),(4,2),(4,4),(3,4)]
x,y=zip(*z)
pylab.fill(x,y, 'b', alpha=0.2, edgecolor='r')
pylab.show()
有关fill()命令和pylab API的更多信息,请参见http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.fill。
https://stackoverflow.com/questions/1776511
复制相似问题