Python 3 kullanıyorum ve postGIS uzantıları ile postGre'ye bağlanmam gerekiyor. Bir psycopg2 sürücüsü kullanmak niyetindeyim.
Bu PPyGIS bulduğum tek eklentidir, ancak python 2.7 değil 3.3.0 üzerinde çalışır.
Herhangi biri 3.3.0 üzerinde çalışan bir çözümü biliyor?Python 3 Üzerinde PostGIS Kullanımı
10
A
cevap
6
istemci tarafında (Python) üzerinde geometri nesnelerle süslü bir şey yapıyor değilseniz, psycopg2 diğer CBS GeoJSON gibi output formatsgeometry accessors ile yerel veri türlerini kullanarak en temel bilgi almak, ya da. Sunucu (PostgreSQL/PostGIS) zor işi yapsın. Aslında Shapely veya GDAL/OGR, ancak her iki kütüphaneler bağımlılıkları uzun bir liste var kullanabilir
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
: Burada
ilgi noktasının 1 km mesafededir şekillere GeoJSON'a dönmek için rastgele bir örnektir .sadece çok az usecases varsa, ayrıca
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)
İlgili konular
- 1. Python 3 ve http.server kullanımı
- 2. Python 3 setuptools mac üzerinde
- 3. Beaglebone Üzerinde Python Tkinter Kullanımı: Ekran Titreme
- 4. Python dizilerle bölme kullanımı
- 5. @RequestParam kullanımı, Spring 3
- 6. tomcat üzerinde jamon.war kullanımı
- 7. LINQ kullanımı XmlNodeList üzerinde
- 8. Python 3'ün readlines() ile Unicode hatası kullanımı
- 9. liste anlamalarının doğru kullanımı - python
- 10. soket getirme web sayfası kullanımı python kullanımı
- 11. Python 3
- 12. Python 3
- 13. Python/PySerial ve CPU kullanımı
- 14. Postgis geometrisinin sınırı üzerinde en yakın iki nokta
- 15. Görüntü kullanımı Python
- 16. Raylar Postgis Yükseltme Sorunları
- 17. PostGIS ve JPA 2.0
- 18. Postgis sözdizimi PARALLEL hatası
- 19. Python üzerinde varyasyon ifadesi
- 20. Python üzerinde lineer cebir
- 21. Python 3.2'de "Sayaç" Kullanımı
- 22. Sayısal dizilerin Python bellek kullanımı
- 23. Python ile pySerial kullanımı 3.3
- 24. PostGIS Çokgenler arasındaki yinelemeli kesişme
- 25. Python 3 hosting
- 26. Python 3 eşdeğer
- 27. Python 3, süper .__ del __()
- 28. Python 3,// dan
- 29. BeautifulSoup's Python 3 uyumluluğu
- 30. Python Cprofile alınamıyor 3
aşağıdaki örnekte olduğu gibi süper kaygan pygeoif kütüphaneye dayalı küçük protokolü kendiniz uygulamak olabilir Olacak temel bir üzerindeki noktalar oluşan bir tabakaya sahiptir harita. Bir seçenek olarak iki nokta arasındaki mesafeyi ölçün. –
@MilleBii Eğer ihtiyacınız olan tek şey mesafe ise, psycopg2 ihtiyacınız olan her şeydir. PPyGIS, sadece PostgreSQL/PostGIS ile sunucu tarafında değil, Python ile istemci tarafında gerçek geometri/coğrafyada bazı özel şeyler yapmanız gerektiğinde kullanışlıdır. –
Ayrıca, coğrafi sorguları _psycopg2_ biçiminde biçimlendirmek için belirli bağdaştırıcıları tanımlayabilirsiniz. Örneğin geometriyi * pygeoif *: def uyarlama noktası (pt): geri dön AsIs ("ST_SetSRID (ST_MakePoint ({}, {}), 4326)". Biçim (adapte (pt.x), adapte (pt. y))); register_adapter (Puan, adapt_point) – Rmatt