Các tùy chọn để hiển thị các vectơ PostGIS trong OpenLayers


22

Tôi rất mới với lập bản đồ web, vì vậy câu hỏi này có thể hơi sai.

Tôi muốn có một giao diện web rất đơn giản bằng OpenLayers (hoặc thậm chí Google Maps nếu điều đó sẽ dễ dàng hơn) có thể hiển thị một số bảng điểm và đa giác hiện có trong PostGIS.

Tôi muốn điều này càng đơn giản (và càng ít bảo trì) càng tốt:

  • Tôi không muốn phải tạo gạch (trừ khi có lý do rất chính đáng) hoặc có một lớp trung gian lớn, phức tạp.
  • Hiệu suất không cần phải là hiện tượng, vì điều này là để sử dụng nội bộ và do đó không cần phải mở rộng ra ngoài một vài người dùng đồng thời.
  • Kiểu dáng của các lớp vector là rất quan trọng.
  • Các công cụ nguồn mở được ưa thích hơn nhiều vì tôi gần như không có ngân sách cho việc này.

Cách tiếp cận được đề nghị cho việc này là gì?

Câu trả lời:


14

Cách dễ nhất để thiết lập bản đồ trực tuyến từ các nguồn PostGIS là sử dụng Geoserver. Hướng dẫn sử dụng Geoserver chứa phần giới thiệu tốt về việc sử dụng PostGIS làm nguồn dữ liệu . Về cơ bản, bạn thêm một kho lưu trữ dữ liệu chứa thông tin kết nối và sau đó bạn có thể xuất bản bất kỳ bảng nào chứa hình học. Ngoài PostGIS, bạn cũng có thể sử dụng nhiều nguồn dữ liệu khác:

văn bản thay thế

Từ bên trong giao diện web của Geoserver, bạn cũng có thể xem trước các lớp trên trang web OpenLayers. Bạn có thể sử dụng nguồn của trang xem trước này để xây dựng ứng dụng OpenLayers của riêng bạn.

Geoserver cung cấp nhiều tùy chọn kiểu dáng cho cả dữ liệu vectơ và raster. Để bắt đầu, bạn có thể đủ hạnh phúc khi chỉ cần tùy chỉnh một số kiểu được tạo sẵn đi kèm với cài đặt.

Theo mặc định, Geoserver không lát và OpenLayers không yêu cầu lát. Nếu bạn không cần hiệu suất cao, dù sao bạn cũng không cần bận tâm đến gạch.

Cá nhân, tôi nghĩ rằng OpenLayers dễ sử dụng hơn Google Maps API và bạn sẽ độc lập với Google. Nếu bạn cần một bản đồ nền, thay vào đó bạn có thể muốn xem xét OpenStreetMap.


8

Nếu bạn thực sự không muốn có một lớp phần mềm trung gian lớn, bạn có thể sử dụng TinyOWS ( http://tinyows.org/trac ) - Tôi chưa bao giờ thử nó nhưng nó tuyên bố là nhỏ và nhanh. Thêm vào đó, nó sử dụng các tiêu chuẩn OGC, vì vậy nếu bạn quyết định xuất bản cho đối tượng rộng hơn và không thể tiếp tục chuyển sang GeoServer hoặc MapServer sẽ cho phép bạn tiếp tục sử dụng cùng một mã máy khách mà không thay đổi.


à vâng, quên về tinyOWS, có vẻ hơi khó cấu hình và chỉ dành cho PostGIS
dodobas

câu hỏi chỉ hỏi về postgis
Ian Turton

6

Bạn có thể sử dụng bất kỳ ứng dụng nào có thể phục vụ giao thức WFS. Với Openlayers, bạn có thể dễ dàng sử dụng dữ liệu PostGIS thông qua giao thức WFS. Có rất ít ứng dụng FLOSS có thể làm điều này. Ví dụ, FeatureServer , geoserver , MapServer ... Nếu bạn là người mới đến web-mapping tôi muốn giới thiệu geoserver vì là rất rất dễ dàng để có được nó bắt đầu.

Xem ví dụ về Openlayers này với WFS .


Liên kết cuối cùng bị hỏng.
Adam Matan

1
Tôi đã thử tất cả chúng và chúng hoạt động. Có lẽ cuối cùng là tạm thời xuống.
Mario Miler

4

Openlayers hỗ trợ một số lượng lớn các định dạng dữ liệu vectơ (GeoJSON, GML, KML ..), có thể được hiển thị và tạo kiểu bằng cách sử dụng lớp Vector OpenLayers.

Có lẽ phần mềm trung gian đơn giản nhất có thể là FeatureServer có thể phục vụ dữ liệu PostGIS cho hầu hết các định dạng được hỗ trợ OL. Thật dễ dàng để thiết lập và có hỗ trợ cho các truy vấn không gian / thuộc tính đơn giản.

Nhưng, nếu bạn cần một cái gì đó mạnh mẽ hơn Geoserver có thể là một giải pháp khả thi.


Không có tình yêu cho máy chủ
maps

1
thực sự mapserver là tình yêu đầu tiên của tôi, xuất hiện ở đâu đó khoảng năm 2001, nhưng ... chúng tôi mới bắt đầu chiến đấu rất nhiều, vì vậy chúng tôi phải phanh lại :)
dodobas

Vì vậy, nếu tôi cung cấp cho openlayers một url cho Geojson / gml / kml, nó có thể hiển thị chúng không?
đánh dấu

1
có, nhưng nếu bạn cần lọc, thậm chí bằng hộp giới hạn đơn giản, bạn cần sử dụng WFS
dodobas

4

Bạn có thể cung cấp json, kml amd wkt từ postgis như st_asgeojson (), st_asKML () cho tập lệnh máy chủ PHP hoặc JSP và sau đó sử dụng lớp ajax openlayers để kết nối nguồn dữ liệu từ máy chủ của bạn


Tôi nghĩ phù hợp nhất với trường hợp sử dụng hiện tại của tôi. Nếu quá chậm, tôi sẽ thử TinyOWS và các máy chủ bản đồ hạng nặng khác. Bạn có thể cung cấp một ví dụ mã cho phía openlayers, giả sử tôi có một đoạn mã PHP ở đâu đó trả về Geojson / kml / wkt không?
đánh dấu

@chaipat: Bạn có ví dụ nào không (đoạn mã php và đoạn mã mở tương ứng)?
underdark

2

Bạn có thể dễ dàng thực hiện việc này bằng Geomajas, dữ liệu này sẽ đọc dữ liệu của bạn từ cơ sở dữ liệu bằng Hibernate hoặc Geotools. Đây là toàn Java, có thể vấn đề là bạn thích các ngôn ngữ khác.


1

Vâng, những gì bạn có thể làm là sử dụng thư viện OpenLayers và ngôn ngữ máy chủ để đẩy tất cả các loại hình học postgis vào Openlayers. Bạn sẽ cần:

  • Openlayers.Layer.Vector để tạo một lớp dữ liệu vector
  • Openlayers OpenLayers.Protocol.HTTP để đọc dữ liệu từ máy chủ Postgis
  • OpenLayers.Strargety.Fixed tùy chọn
  • OpenLayers.Feature.Vector tất cả các vectơ là lớp fro mthis tại máy khách
  • OpenLayers.Format.GeoJSON hoặc OpenLayers.Format.JSON
  • Một ngôn ngữ phía máy chủ để yêu cầu Postgis và bơm hình học cho khách hàng
  • Trình phân tích cú pháp JSON trên máy chủ và máy khách để truyền dữ liệu sang định dạng này

Với điều này, bạn có thể rất dễ dàng hiển thị chúng mà không cần thêm bất kỳ phần mềm trung gian nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.