Cách tốt nhất để hiển thị hàng ngàn đa giác trong Openlayers là gì?


10

Tôi đang cố gắng tạo một bản đồ Openlayers sẽ hiển thị hàng ngàn đa giác. Và khi người dùng nhấp vào từng cái, tôi muốn một số siêu dữ liệu hiển thị. Làm việc với bộ dữ liệu lớn này có vẻ như sẽ rất khó khăn. Nhưng tôi đang cố gắng tìm hiểu xem có cách nào chuẩn để đi về vấn đề này không. Tại thời điểm này, tôi nghĩ rằng tôi nên

  1. hiển thị đa giác của tôi với WMS và sử dụng getfeatureinfo
  2. Hiển thị với WFS, Tải với Strateg.BBOX và sử dụng GetFeature để lấy dữ liệu thịt.

Có cách nào hợp lý tôi đang thiếu để tải tất cả dữ liệu này vào bản đồ và có tốc độ tốt. Tôi đã xem trang này và cố gắng tìm hiểu những gì họ đã làm: http://protectedplanet.net/

Câu trả lời:


5

Tôi không thích chiến lược BBOX vì tôi nghĩ rằng nó có thể chậm do số lượng yêu cầu có thể được tạo.

Tôi sẽ sử dụng kết hợp cả hai điều bạn đã đề cập.

hiển thị đa giác với WMS và sử dụng getfeatureinfo ... sau đó sử dụng WFS, để tải phác thảo tính năng khi nhấp vào và / hoặc nhận thêm thông tin từ cơ sở dữ liệu.

reservedplanet.net không sử dụng openlayers chỉ google maps. Họ có thể đang lưu trữ tất cả thông tin trong KML / KMZ.


Cảm ơn rất nhiều! Tôi đoán tôi đang đi đúng hướng rồi. Nhưng tôi tự hỏi nếu được bảo vệ đang sử dụng KML, tôi có nên làm điều đó vì tốc độ của nó không? Và đó có phải là dữ liệu KML đang được WFS phục vụ không?
KyleK

Tôi không biết chắc chắn nếu đó là KML, chỉ là phỏng đoán. Nhưng nếu nó không được WFS phục vụ vì WFS sử dụng GML. Vấn đề của việc sử dụng google apis và KML là bạn cần phải có KML đó trên một URL công khai nơi MỌI NGƯỜI có thể nhìn thấy nó. Nếu đó không phải là một vấn đề, thì có lẽ bạn có thể thử nó. Điều này là do google hấp thụ KML này vào máy chủ của họ và đưa nó trở lại API. Vì hai lý do này, tôi không thể sử dụng API google maps vì độ nhạy của một số dự án.
CaptDragon

Bạn có thể giới hạn quyền truy cập vào URL KML công khai của mình để chỉ cho phép tác nhân người dùng trình bày chuỗi trình phân tích cú pháp KML của Google.
Sà lan

3

Cách tiếp cận chính ở đây là tách riêng rasterization với sự tương tác. Một cách tiếp cận (mà tôi chịu trách nhiệm một phần) là UTFGrid , được NPR sử dụng , v.v. và được tích hợp vào TileMillMapnik . Nó cũng được CartoDB sử dụng và Google Maps sử dụng một cách tiếp cận tương tự cho Fusion Table.

Hành tinh được bảo vệ cũng sử dụng gạch raster (ví dụ: cái này http://184.73.201.235/blue/8/78/93:) và có một máy chủ trực tiếp đằng sau nó cho các truy vấn dựa trên điểm (ví dụ: cái này ).

Re: CaptDragon: không có WFS hoặc KML liên quan.

WMS và WFS sẽ không cung cấp cho bạn bất cứ nơi nào gần hiệu suất đủ tốt cho một trang web công cộng. Chiến lược BBOX sẽ không hoạt động nếu bạn cho phép người dùng phóng to.


FYI: Bạn có thể lưu trữ một dịch vụ raster WMS sẽ cung cấp cho bạn các ô xếp.
CaptDragon

1
Vâng, nhưng đó không phải là vấn đề chính ở đây, đó là tính tương tác. Bạn không thể lưu trữ bộ đệm theo cách mà WFS / WMS GetFeature hoạt động vì chúng không được thiết kế để được lưu vào bộ đệm.
tmcw

Tôi luôn lưu trữ các kết quả CSW, WFS và WMS GetFeature, GetRecord, v.v. Đây chỉ là các tiêu chuẩn định dạng cho khả năng tương tác và không cho biết nơi nguồn, được lưu trữ hay không được lưu trữ.
CaptDragon

Một yêu cầu WFS GetFeature điển hình là một yêu cầu cho một tọa độ duy nhất; một bộ đệm cho yêu cầu đó chỉ tốt cho các kết quả khớp chính xác - điều hiếm thấy về mặt tương tác của người dùng. Các lựa chọn thay thế như gạch dữ liệu bộ đệm UTFGrid và có thể lấp đầy bộ đệm một cách tối ưu, không giống như bộ đệm cho hàng triệu tọa độ đơn lẻ. Theo cách này, tiêu chuẩn không cho phép thân thiện với bộ đệm.
tmcw

Wow- Cảm ơn tất cả sự giúp đỡ. Vì tôi đang sử dụng OpenLayers và bản đồ của tôi là vào năm 4326 (không được hỗ trợ bởi TileMill), bạn có muốn giới thiệu CartoDB như một phương tiện để lưu trữ và truy cập dữ liệu của tôi không?
KyleK
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.