我使用的是python 3,需要使用postgis扩展连接到postgre。
我打算用一个psycopg2驱动程序。
这个PPyGIS是我找到的唯一扩展,但它在python 2.7上工作,而不是3.3.0。
有人知道3.3.0的解决方案吗?
最佳答案
如果您没有对客户端(python)上的几何对象进行任何花哨的操作,那么psycopg2可以使用带有geometry accessors的本地数据类型或其他类似于output formats的gis获取最基本的信息。让服务器(postgresql/postgis)做这项艰苦的工作。
下面是一个随机示例,用于将geojson返回到距离感兴趣点1公里内的形状:
import psycopg2
conn = psycopg2.connect(database='postgis', user='postgres')
curs = conn.cursor()
# Find the distance within 1 km of point-of-interest
poi = (-124.3, 53.2) # longitude, latitude
# Table 'my_points' has a geography column 'geog'
curs.execute("""\
SELECT gid, ST_AsGeoJSON(geog), ST_Distance(geog, poi)
FROM my_points, (SELECT ST_MakePoint(%s, %s)::geography AS poi) AS f
WHERE ST_DWithin(geog, poi, 1000);""", poi)
for row in curs.fetchall():
print(row)