ovako, trebala bih napraviti grafičko sučelje u pythonu sa matplotlib.. ili pygame, ili kojim god libraryjem hoću, kako bi mi se prikazali objekti u .shp formatu iz postgresql baze podataka, odnosno postgis (prostorno proširenje postgresql-a). radi se o poligonima koji su u bazi definirani geometrijom (u tablici kolona "the_geom"). postupak konekcije na bazu znam, ali ne znam kako da se vizualno prikažu poligoni. Ne pitajte zašto to radim, jednostavno moram![]()
Ok, hvala! A jel bi mi mogao objasnit kako da se povežem na svoju bazu, tj. kako da primjenim te widgete na poligone u postgresql bazi?
Pretpostavljam da se u spomenutoj tablici u koloni koju imaš nalaze koordinate poligona. Ako je tako, onda je jednostavno modificirati primjer sa tutorijala da crta više poligona. Trivijalni primjer:
Doduše, ne znam u kojem formatu imaš podatke pa ne mogu konkretizirati. U principu selektiraš podatke iz baze, prekonvertiraš ih u koordinate ako treba, pa ih prikažeš. Ne znam koji te dio točno muči, pa bi više detalja bilo povoljno za konkretniji odgovorKod:rows = select_my_rows() for row in rows: w.create_rectangle(row.x1, row.y2, row.x2, row.y2)![]()
Zanima me kako selektirat podatke iz baze i kako ih konvertirat u koordinate, baš kao što si primjetioA poligoni su u .shp formatu (shapefile). Spojim se na bazu pomoću psycopg2 ovako:
E sad ne znam kako dalje.Kod:import psycopg2 conn = psycopg2.connect("dbname='***' user='***' host='***' password='***'") print 'Uspjesno ste se spojili na bazu' cur = conn.cursor() cur.execute("""SELECT astext(the_geom) from zgrade;""") listpoly = cur.fetchall() conn.close()
Čini mi se da je tu sve ok, samo prije conn.close() staviš iteriranje po redovima. Također treba ti library za čitanje shapefile formata. Na google vidim da ih ima par ([Samo registrirani korisnici mogu viditi linkove. ]), ali nemam vremena isprobati koji je dobar a to možeš i ti
Enivej, program bi onda nekak ovak izgledal:
Kod:from Tkinter import * import psycopg2 import neki_shapefile_library try: conn = psycopg2.connect("dbname='***' user='***' host='***' password='***'") except: print 'Neuspjesno spajanje na bazu!' master = Tk() w = Canvas(master, width=200, height=100) w.pack() cur = conn.cursor() cur.execute("""SELECT astext(the_geom) from zgrade;""") listpoly = cur.fetchall() for row in listpoly: coords = read_shapefile(row) w.create_rectangle(coords, fill="blue") mainloop() conn.close()
Trenutno (1) korisnika pregledava ovaj forum. ((2) članova i (3) gosta) span>