PostGIS ile sınırlama kutusu seçerek


12

PostGIS veritabanında büyük bir veri kümem var. GeoJSON olarak veri yükleyen bir web arayüzü üzerinden görüntülüyorum. İstemciye bir kerede vermek için çok fazla veri var (10 MB'lık değer ...) Bu yüzden pencerenin kenarları tarafından oluşturulan sınırlayıcı kutu içinde bir veri alanı almak istiyorum (aşağıdaki resimde noktalı çizgi) ). F ve g noktaları için koordinatları elde etmek kolaydır.

Soru 1: Bu bir şeyler yapmanın iyi bir yolu mu? Bunları fayans olarak önbelleğe almayı mı düşünmeliyim yoksa bu yöntemin yeterince verimli olması muhtemel mi?

Soru 2: Bu sınırlama kutusundaki verileri nasıl alabilirim?

Soru 3: Bir şekil sınırlama kutusunun kenarıyla çakışıyorsa (örneğin aşağıdaki A şekli), ikinci görüntüdeki gibi sorgulandığı gibi kırpmanın basit bir yolu var mı?

resim açıklamasını buraya girin


İstemcide hangi görüntüleyiciyi çalıştırıyorsunuz?
underdark

Mapstraction. Şu anda sağlayıcı olarak OpenLayers kullanıyorum.
Mr_Chimp

Yanıtlar:


8

sadece soruların sırasını değiştirin ve bir prosedürünüz var:

2) Yalnızca bbox ( ST_Intersects) ile kesişenleri seçin .
3) Çokgenleri ( ST_Intersection) kırpmak için bbox ile kesin .
1) Sonuçlar ( CREATE TABLE newtable AS SELECT...) ile yeni bir tablo oluşturun .

ST_Intersection belgeleri bir kod örneği içerir. Uyarlamanız ve bbox olarak ST_PolygonFromText kullanmanız gerekir.


4

Bence çoğu (tüm) web istemcileri (ve masaüstü gis de) bunu yapıyor. Tüm veri kümesini gönderemezsiniz.

Bir tür önbellek oluşturmanız gerekiyorsa, verilerinizin statik olup olmadığına veya değişip değişmediğine bağlıdır.

Bu sınırlayıcı kutuyu yapmak için verileri almak çok hızlı olacaktır (uzamsal bir dizininiz varsa), ancak elbette ücretsiz değildir. Bazı işlemci gücü ile ödeme yapacaksınız.

Daha önce de belirtildiği gibi: Sizin kapsamınızdaki çokgenleri bulmak için ST_Intersects kullanırsınız.

Kapsamınızın içinde yalnızca bir kısmı almak için ST_Intersection kullanın, ancak bunu yapmayın. ST_Intersection maliyetli bir işlemdir. Çok büyük çokgenleriniz olmadığı sürece, tüm çokgenleri göndermenin daha iyi olduğunu düşünüyorum.

Ama sanırım bunu masaya koymak yerine anında yapmak istiyorsun

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.