我正在使用Python 3,需要使用PostGIS擴展連接到postGre。 我打算使用psycopg2驅動程序。
PPyGIS是我發現的唯一擴展,但它適用於python 2.7而不是3.3.0。
任何人都知道在3.3.0上工作的解決方案?在Python 3上使用PostGIS
10
A
回答
6
如果你沒有做任何幻想,而客戶端(Python)的幾何對象,psycopg2可以使用本機數據類型得到最基本的信息與geometry accessors,或其他GIS output formats像GeoJSON。讓服務器(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)
1
您可以實際使用Shapely或GDAL/OGR,但是這兩個庫有依賴的一長串。
如果只有很少的usecases,你也可以實現一個小協議自己的基礎上,超光滑pygeoif庫,如下面
from psycopg2.extensions import register_adapter, AsIs, adapt
from pygeoif.geometry import Point
def adapt_point(pt):
return AsIs("ST_SetSRID(ST_MakePoint({}, {}), 4326)".format(adapt(pt.x), adapt(pt.y)))
register_adapter(Point, adapt_point)
相關問題
- 1. 如何在CakePHP中使用postGIS 3
- 2. python postgis ST_ClosestPoint
- 3. Android 3上使用TerminalIDE的Python 3
- 4. 在Python 3上使用API訪問Autotask
- 5. 使用PostGIS與ormLite
- 6. 使用PostGIS的Rails
- 7. 使用python 3
- 8. 在Raspberry Pi 3 B +上使用Python 3和smbus2操作AD5272 B +
- 9. 在Amazon RDS上設置PostGis
- 10. 在Python 3中使用unicode字符3
- 11. 在Python中使用Pexpect 3
- 12. 在python中使用pyevolve 3
- 13. 在Python 3中使用cElementTree
- 14. 使用地圖在Python 3
- 15. 在python中使用boto 3
- 16. 在Python 3中使用try/
- 17. 使用Python 3風格集在Python 2
- 18. 使用Flex 3(GeoServer,PostgreSQL,PostGIS,php)的Web地圖
- 19. 有使用Python 3
- 20. Python 3在mac上的setuptools
- 21. 在windows上下載python 3
- 22. 使用PostGis安裝Postgres-XL
- 23. 使用postgis的機器
- 24. 的Django和POSTGIS:使用ST_Distance_sphere
- 25. 使用PostGIS的功能
- 26. 3維GiS數據與Django和Postgis
- 27. 使用postgis&geodjango在多邊形邊界上的點
- 28. 無法在Postgresql的Bluemix Compose上使用Postgis
- 29. 使用Postgis + Rails在模型上設置距離屬性
- 30. 在Hibernate中透明地使用PostGIS列
的例子它將基本的,具有點的上一層地圖。作爲選項測量兩點之間的距離。 – 2013-02-19 15:11:37
@MilleBii如果你所需要的只是距離,那麼psycopg2就是你所需要的。如果您需要使用Python在客戶端上對實際幾何體/地理位置做一些自定義的事情,而不是使用PostgreSQL/PostGIS在服務器端進行自定義,PPyGIS纔有用。 – 2013-02-19 17:48:12
您也可以定義特定的適配器,讓_psycopg2_格式化地理查詢。例如,使用* pygeoif *的幾何: def adapt_point(pt): return AsIs(「ST_SetSRID(ST_MakePoint({},{}),4326)」。 Y))); register_adapter(Point,adapt_point) – Rmatt 2017-01-12 17:13:19