Cách nhanh nhất (hiệu suất-khôn ngoan) để phục vụ các tính năng của PostGIS là gì?


12

Tôi quan tâm đến cách nhanh nhất để phục vụ các tính năng của PostGIS. Tôi có thể tìm thấy một số cải tiến và giải pháp thay thế WMS (MapProxy, TileCache, Mapnik ...) nhưng không có nhiều cải tiến và giải pháp thay thế nguồn mở WFS. Tôi không quan tâm đến gạch, nhưng trong đa giác trên lớp cơ sở của tôi. Phục vụ nhanh.

Bạn có thể vui lòng cho tôi chỉ đúng hướng?


Cập nhật:

Tôi quên đề cập rằng ứng dụng của tôi hiển thị thông tin địa chính. Và đa giác địa chính phải được chọn (không thể chỉnh sửa, chúng chỉ được tô sáng khi bạn nhấp vào chúng).

Hiện tôi đang sử dụng hỗn hợp WMS + Django tạo các đối tượng GeoJSON khi người dùng nhấp vào một phần của bản đồ, để tránh các tình huống như hàng ngàn đa giác cùng lúc trong máy khách (OpenLayers).

Tôi không biết liệu tôi có đang đi đúng hướng hay không (tôi có nên tránh các tình huống khó khăn tiềm tàng như hàng ngàn khẩu súng trong máy khách bằng cách hiển thị chúng qua WMS hoặc bất kỳ giải pháp nào khác không? Tôi có nên cải thiện cách phục vụ đa giác không?)


1
Bạn có phần cứng gì?
Mapperz

Ubuntu 10.04 32 bit RAM 512 MB, chạy trong Máy chủ VMWare. Đó là một cỗ máy phát triển, nhưng tôi chưa có quyền truy cập vào một cái khác. Nó sẽ hoạt động hợp lý tốt ở đây (một điều cần thiết)
Jorge Arévalo

Câu trả lời:


6

Còn việc đơn giản hóa hình học thì sao?

http://www.bostongis.com/postgis_simplify.snippet

/programming/1849928/how-to-intellectently-degrade-or-smooth-gis-data-simplifying-polygons

Hoặc có thể là sự kết hợp của WFS, WFS với các tính năng đơn giản và WMS?


Âm thanh tốt. Ngay bây giờ, tôi đang kết xuất các khẩu súng và phục vụ chúng thông qua WMS. Tôi nghĩ rằng khách hàng sẽ không xử lý hàng triệu đa giác cùng một lúc, nhưng tôi có thể sai ...
Jorge Arévalo

6

GeoServer cung cấp một cài đặt người dùng để kiểm soát số lượng vị trí thập phân trong hình học được đặt ở đó để tăng tốc độ phục vụ WFS.

Ngoài ra, hãy đảm bảo rằng máy chủ chỉ nén đầu ra nếu máy khách của bạn có thể giải nén nó một cách hiệu quả.

Cuối cùng tôi đã nghe thấy những điều hay về OWS nhỏ bé về tốc độ.


Tôi đã nghe nói về OWS nhỏ nhưng chưa bao giờ sử dụng nó. Cảm ơn đã gợi ý!
Jorge Arévalo

6

Bộ nhớ đệm WFS có thể phù hợp với nhu cầu của bạn. Theo như tôi biết, có hai giải pháp nguồn mở cung cấp bộ nhớ đệm WFS: TileStacheGeoWebCache .

Trong trang chủ của TileStache, phần tính năng có ghi "Tạo các ô vector từ các nguồn dữ liệu OGR trong GeoJSON có thể sử dụng được trong Polymaps"

GeoWebCache có một số khả năng lưu trữ bộ đệm WFS kể từ phiên bản 1.1.0 (phiên bản hiện tại là 1.2.6):

GeoWebCache 1.1.0 (cuối cùng) được phát hành

...

1.c Bộ nhớ đệm WFS cơ bản GeoWebCache 1.1.0 hỗ trợ bộ đệm ẩn WFS rất cơ bản. Các kết quả từ các truy vấn được lưu trữ vào đĩa, hiện tại không có chức năng kiểm tra chúng hoặc lập trình loại bỏ chúng. Thuật toán dựa trên các giá trị băm được tính toán và không kiểm tra tính duy nhất, do đó có một cơ hội cho các va chạm. Động lực cho sự phát triển này là dạng đầu ra SHP-ZIP (nén shapefile) trong GeoServer. Những tập tin này có thể rất lớn và cực kỳ tốn kém để tính toán. Dịch vụ WFS này, ở trạng thái hiện tại, không có ý định sử dụng cho các trường hợp phức tạp hơn.

http://old.nabble.com/GeoWebCache-1.1.0-(finally)-release-td22870524.html

Thật không may, tôi chưa bao giờ làm việc với TileStache và GeoWebCache, vì vậy tôi không thể chia sẻ bất kỳ kinh nghiệm nào về bộ nhớ đệm WFS.


Cảm ơn. Tôi đang xem xét 2 tùy chọn: hiển thị đa giác của mình và phục vụ chúng thông qua bộ đệm WMS + (có hàng triệu trong số chúng, có thể quá nhiều cho máy khách ...) hoặc thử phục vụ đa giác của tôi thông qua bộ đệm WFS +. Tôi đang làm việc với tùy chọn đầu tiên ngay bây giờ.
Jorge Arévalo

1
Tôi khuyên bạn nên tùy chọn đầu tiên (kết xuất WMS ở phía máy chủ + bộ đệm). Tùy chọn WFS ngụ ý rằng kết xuất sẽ được thực hiện ở phía máy khách. Theo kinh nghiệm của tôi, đây là một vấn đề đối với người dùng có trình duyệt web hoặc máy tính cũ, một biến mà bạn không thể kiểm soát.
dariapra

3

Tôi đang phát triển một web-gis lớn, tôi làm việc với rất nhiều dữ liệu (khoảng 700.000 tính năng trên mỗi lớp) Giải pháp duy nhất là giải pháp mà bạn đang làm, WMS để hiển thị các tính năng và WFS để nhận thông tin về tính năng. Tôi đang làm gì (với hiệu suất tốt) là:

  • Geoserver (với thư viện JAI bản địa )
  • Khi người dùng nhấp vào bản đồ, wms getfeatureinfo được sử dụng để lấy thông tin (cả hình dạng và dữ liệu) của tính năng đã chọn (ở đây bạn nên triển khai một số tính năng lọc, nếu bạn có các tính năng chồng chéo)
  • Kết quả của getFeatureInfo được thêm vào dưới dạng tính năng trên một lớp khác để mô phỏng "vùng chọn nổi bật"

Cảm ơn! Dự án cuối cùng đã bị hủy bỏ, nhưng tôi nghĩ giải pháp của bạn là một giải pháp tốt.
Jorge Arévalo

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.