Opcje wyświetlania wektorów PostGIS w OpenLayers

22

Jestem zupełnie nowy w tworzeniu map internetowych, więc to pytanie może być nieco mylące.

Chcę mieć bardzo prosty interfejs sieciowy wykorzystujący OpenLayers (lub nawet Mapy Google, jeśli będzie to łatwiejsze), który może wyświetlać wiele tabel punktów i wieloboków, które są obecnie w PostGIS.

Chcę, aby było to tak proste (i możliwie jak najmniejsze utrzymanie):

  • Nie chcę tworzyć kafelków (chyba że jest to bardzo ważny powód) ani mieć ogromnej, złożonej warstwy oprogramowania pośredniego.
  • Wydajność nie musi być fenomenalna, ponieważ jest przeznaczona do użytku wewnętrznego, a zatem nie musi być skalowana poza kilku równoczesnych użytkowników.
  • Stylowanie warstw wektorowych ma minimalne znaczenie.
  • Narzędzia typu open source są bardzo preferowane, ponieważ prawie nie mam na to budżetu.

Jakie jest zalecane podejście do tego?

fmark
źródło

Odpowiedzi:

14

Najłatwiejszym sposobem skonfigurowania mapy online ze źródeł PostGIS jest użycie Geoserver. Podręcznik użytkownika Geoservera zawiera dobre wprowadzenie do używania PostGIS jako źródła danych . Zasadniczo dodajesz magazyn danych zawierający informacje o połączeniu, a następnie możesz opublikować dowolną tabelę zawierającą geometrie. Oprócz PostGIS możesz również korzystać z wielu innych źródeł danych:

alternatywny tekst

W interfejsie internetowym Geoservera można również wyświetlić podgląd warstw na stronie internetowej OpenLayers. Możesz użyć źródła tej strony podglądu, aby zbudować własną aplikację OpenLayers.

Geoserver oferuje wiele opcji stylizacji dla danych wektorowych i rastrowych. Na początek możesz być zadowolony z dostosowywania niektórych gotowych stylów dostarczanych wraz z instalacją.

Domyślnie Geoserver nie kafelkuje, a OpenLayers nie żąda kafelków. Jeśli nie potrzebujesz wysokiej wydajności, i tak nie musisz zawracać sobie głowy kafelkami.

Osobiście uważam, że OpenLayers jest łatwiejszy w użyciu niż interfejs API Map Google i będziesz niezależny od Google. Jeśli potrzebujesz mapy w tle, możesz zamiast tego zajrzeć do OpenStreetMap.

podmrok
źródło
8

Jeśli naprawdę nie chcesz dużej warstwy oprogramowania pośredniego, możesz użyć TinyOWS ( http://tinyows.org/trac ) - nigdy tego nie próbowałem, ale twierdzi, że jest mały i szybki. Ponadto korzysta ze standardów OGC, więc jeśli zdecydujesz się opublikować szerszej publiczności i nie będzie w stanie przejść na GeoServer lub MapServer, będziesz mógł nadal używać tego samego kodu klienta bez żadnych zmian.

Ian Turton
źródło
ah tak, zapomniałem o tinyOWS, wydawało się trochę trudne do skonfigurowania, a dotyczy tylko PostGIS
dodobas
pytanie dotyczyło tylko postgis
Ian Turton
6

Możesz użyć dowolnej aplikacji obsługującej protokół WFS. Dzięki Openlayers możesz łatwo korzystać z danych PostGIS za pośrednictwem protokołu WFS. Jest kilka aplikacji FLOSS, które mogą to zrobić. Na przykład FeatureServer , Geoserver , MapServer ... Jeśli jesteś nowy w mapowaniu stron internetowych, poleciłbym Geoserver, ponieważ bardzo łatwo go uruchomić.

Zobacz ten przykład Openlayers z WFS .

Mario Miler
źródło
Ostatni link jest zepsuty.
Adam Matan
1
Próbowałem ich wszystkich i one działają. Może ostatni był chwilowo wyłączony.
Mario Miler,
4

Openlayers obsługuje wiele formatów danych wektorowych (GeoJSON, GML, KML ..), które można wyświetlać i stylizować za pomocą warstwy Vector OpenLayers.

Być może najprostszym oprogramowaniem pośrednim może być FeatureServer który może obsługiwać dane PostGIS do większości obsługiwanych formatów OL. Jest łatwy w konfiguracji i obsługuje proste zapytania przestrzenne / atrybuty.

Ale jeśli potrzebujesz czegoś mocniejszego, Geoserver może być realnym rozwiązaniem.

dodobas
źródło
Brak miłości do
serwera map
1
właściwie mapserver był moją pierwszą miłością, datowaną gdzieś około 2001 roku, ale ... właśnie zaczęliśmy dużo walczyć, więc musieliśmy
przerwać
Więc jeśli podam openlayersowi adres URL do geojson / gml / kml, może po prostu je wyrenderować?
fmark
1
tak, ale jeśli potrzebujesz filtrowania, nawet prostego obwiedni, niż musisz użyć WFS
dodobas
4

Możesz karmić json, kml i wkt z postgis takich jak st_asgeojson (), st_asKML () dla skryptu serwera PHP lub JSP, a następnie użyć klasy Openlayers ajax do połączenia źródła danych z serwera


źródło
Myślę, że najlepiej pasuje do mojego obecnego przypadku użycia. Jeśli będzie za wolny, wypróbuję TinyOWS i inne, bardziej wytrzymałe serwery map. Czy możesz podać przykład kodu dla strony openlayers, zakładając, że mam gdzieś skrypt PHP zwracający geojson / kml / wkt?
fmark
@chaipat: Czy masz pod ręką przykład (skrypt php i odpowiedni fragment kodu openlayers)?
podmrok
2

Możesz to łatwo zrobić za pomocą Geomajas, który odczytałby twoje dane z bazy danych za pomocą Hibernacji lub Geotools. To jest w całości Java, co może być problemem, jeśli wolisz inne języki.


źródło
1

Cóż, co możesz zrobić, to użyć biblioteki OpenLayers i języka serwera, aby wypchnąć wszystkie typy geometrii Postgis do Openlayers. Będziesz potrzebować:

  • Openlayers.Layer.Vector, aby utworzyć warstwę do danych wektorowych
  • Openlayers OpenLayers.Protocol.HTTP do odczytu danych z serwera Postgis
  • OpenLayers.Strategy.Fixed opcjonalny
  • OpenLayers.Feature.Vector wszystkie wektory są z tej klasy u klienta
  • OpenLayers.Format.GeoJSON lub OpenLayers.Format.JSON
  • Język po stronie serwera do wysyłania zapytań do Postgis i pompowania geometrii do klienta
  • Parser JSON na serwerze i kliencie do przesyłania danych do tego formatu

Dzięki temu możesz bardzo łatwo wyświetlać je bez pośredniego oprogramowania.

Cavila
źródło