OpenLayers'da PostGIS vektörlerini görüntülemek için seçenekler


22

Web haritalama konusunda çok yeniyim, bu yüzden bu soru biraz yanlış yönlendirilmiş olabilir.

OpenLayers kullanarak (veya daha kolay olacaksa Google Maps bile) kullanan ve şu anda PostGIS'te bulunan çok sayıda nokta ve poligon tablosunu gösterebilen çok basit bir web arayüzüne sahip olmak istiyorum.

Bunun mümkün olduğunca basit (ve düşük bakım) olmasını istiyorum:

  • Döşemeler yapmak zorunda kalmak istemiyorum (çok iyi bir neden olmadığı sürece) veya çok büyük, karmaşık bir katman katman katmanına sahip olmak istemiyorum.
  • Performansın içsel kullanım için olduğu gibi olağanüstü olması gerekmez ve bu nedenle birkaç eşzamanlı kullanıcının ötesinde ölçeklendirme gerekmez.
  • Vektör katmanlarının şekillendirilmesi asgari öneme sahiptir.
  • Açık kaynak araçları, bütçem neredeyse hiç bütçem olmadığı için çok tercih ediliyor.

Bunun için önerilen yaklaşım nedir?

Yanıtlar:


14

PostGIS kaynaklarından çevrimiçi bir harita oluşturmanın en kolay yolu Geoserver'ı kullanmaktır. Geoserver Kullanıcı El Kitabı, PostGIS'i veri kaynağı olarak kullanmak için iyi bir giriş içerir . Temel olarak bağlantı bilgilerini içeren bir veri deposu eklersiniz ve bundan sonra geometri içeren herhangi bir tabloyu yayınlayabilirsiniz. PostGIS dışında, diğer birçok veri kaynağını da kullanabilirsiniz:

alt metin

Geoserver'ın web arayüzünün içinden katmanları bir OpenLayers web sayfasında da önizleyebilirsiniz. Kendi OpenLayers uygulamanızı oluşturmak için bu önizleme sayfasının kaynağını kullanabilirsiniz.

Geoserver, hem vektör hem de raster veriler için birçok şekillendirme seçeneği sunar. Başlangıç ​​için, yalnızca kurulumla birlikte verilen hazır stillerin bazılarını özelleştirmekle yeteri kadar mutlu olabilirsiniz.

Varsayılan olarak, Geoserver döşeme yapmaz ve OpenLayers döşeme istemez. Yüksek performansa ihtiyacınız yoksa yine de çinilerle uğraşmanıza gerek yok.

Şahsen, OpenLayer'in Google Haritalar API'sinden daha kolay olduğunu ve Google'dan bağımsız olacağınızı düşünüyorum. Bir arka plan haritasına ihtiyacınız varsa, bunun yerine OpenStreetMap’e bakmak isteyebilirsiniz.


8

Gerçekten büyük bir katman katmanını istemiyorsanız, TinyOWS ( http://tinyows.org/trac ) 'ı kullanabilirsiniz - Asla denemedim ama küçük ve hızlı olduğunu iddia ediyor. Ayrıca OGC standartlarını kullanır, böylece daha geniş bir kitleye yayınlamaya karar verirseniz ve GeoServer veya MapServer'a geçmeye devam edemezseniz, aynı müşteri kodunu hiçbir değişiklik yapmadan kullanmanıza izin verir.


ah evet, tinyOWS'i unuttum, yapılandırması biraz zor görünüyordu ve yalnızca PostGIS için
dodobas

soru sadece postgis hakkında soruldu
Ian Turton

6

WFS protokolünü sunuculayabilen herhangi bir uygulamayı kullanabilirsiniz. Openlayers ile PostGIS verilerini WFS protokolü ile kolayca kullanabilirsiniz. Bunu yapabilen birkaç FLOSS uygulaması vardır. Örneğin, FeatureServer , Geoserver , MapServer ... Eğer web-haritalamada yeniyseniz, Geoserver'i tavsiye ederim çünkü başlaması çok kolay.

WFS ile bu Openlayers örneğine bakın .


Son bağlantı koptu.
Adam Matan

1
Hepsini denedim ve çalışıyorlar. Belki de sonuncusu geçici olarak geçiciydi.
Mario Miler

4

Openlayers, OpenLayers Vector katmanı kullanılarak görüntülenebilen ve stillendirilebilen çok sayıda vektör veri formatını (GeoJSON, GML, KML ..) destekler.

Belki de en basit ara katman FeatureServer olabilir. PostGIS verilerini OL destekli biçimlerin çoğunda sunabilen olabilir. Kurulumu kolaydır ve basit mekansal / nitelik sorgularını destekler.

Ancak, daha güçlü bir şeye ihtiyacınız olursa Geoserver uygulanabilir bir çözüm olabilir.


Harita sunucusu için sevgi yok :(
dassouki

1
aslında mapserver ilk aşkımdı, 2001'de bir yerlere aitti, ama ... çok kavga etmeye başladık, bu yüzden frenlemek zorunda
kaldık

Eğer openlayers'a bir geojson / gml / kml için bir URL verirseniz, bu sadece onları oluşturabilir mi?
saat

1
evet, ama sen WFS kullanmak gerekir daha bile basit bir bağlayıcı kutuyla, filtreleme gerekiyorsa
dodobas

4

Json, kml amd wkt komutunu, st_asgeojson (), st_asKML () gibi postgis'ten PHP veya JSP sunucu betiği için besleyebilir ve ardından sunucunuzdan connect veri kaynağı için openlayers ajax sınıfını kullanabilirsiniz.


Sanırım şu anki kullanım durumuma en uygun olanı. Çok yavaşsa, TinyOWS ve diğer daha ağır harita sunucularını deneyeceğim. Geojson / kml / wkt kodunu döndüren bir PHP betiğimi olduğunu varsayarsak, openlayers tarafı için bir kod örneği verebilir misiniz?
45’de

@chaipat: Eldeki bir örneğiniz var mı (php betiği ve karşılık gelen openlayers snippet'i)?
underdark

2

Bunu, Hibernate veya Geotools kullanarak verilerinizi veritabanından okuyacak Geomajas kullanarak kolayca yapabilirsiniz. Bu tamamen Java, başka bir dili tercih ediyorsanız sorun olabilir.


1

Yapabileceğiniz şey, tüm postgis geometri türlerini Openlayers'a yerleştirmek için OpenLayers kütüphanesini ve bir sunucu dilini kullanmak. İhtiyacın olacak:

  • Openlayers.Layer.Vector vektör veri katmanı oluşturmak için
  • PostGis sunucusundan veri okumak için OpenLayers.Protocol.HTTP açın.
  • OpenLayers.Strategy.Fix isteğe bağlı
  • OpenLayers.Feature.Vector tüm vektörler istemcide bu sınıfa uygun
  • OpenLayers.Format.GeoJSON veya OpenLayers.Format.JSON
  • Postgis'e istekte bulunacak bir sunucu tarafı dili ve müşteriye geometrileri pompalama
  • Verileri bu formata aktarmak için sunucu ve istemci üzerinde bir JSON ayrıştırıcısı

Bununla, ara katman yazılımı kullanmadan bunları kolayca görüntüleyebilirsiniz.

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.