Có một giải pháp FOSS để phân tích cú pháp huyền thoại trong môi trường ánh xạ web không?


14

Các yêu cầu lập bản đồ web của chúng tôi khá chuẩn - một số truy vấn cơ bản và khả năng in ra bản đồ kết quả (hoặc lưu hình ảnh). Thông thường, chúng tôi đã sử dụng các sản phẩm ESRI trong quá khứ (hiện tại chúng tôi đang sử dụng GeoCortex) nhưng chúng tôi vẫn chưa thể giải quyết vấn đề làm thế nào để phân tích thông tin truyền thuyết để khớp với những gì thực sự được hiển thị trên bản đồ. Ví dụ: nếu có bốn đa giác hiển thị trên bản đồ, chỉ nên có bốn mục huyền thoại cho đa giác. Có một giải pháp nguồn mở cho vấn đề này?

EDIT : Hãy xem tôi có thể làm rõ điều này hơn nữa không. Hiện tại, chúng tôi có một lớp địa chất với hơn 33.000 đa giác. Truyền thuyết cho lớp này là một hình ảnh duy nhất và chứa hàng trăm mục chú thích (nghĩa là đó là huyền thoại cho toàn bộ lớp địa chất, được lưu trữ trong JPEG / PNG).

Thông thường, người dùng sẽ phóng to một khu vực (chẳng hạn như một tờ bản đồ NTS hoặc thậm chí nhỏ hơn) và do đó, một tập hợp đa giác địa chất sẽ được hiển thị trên màn hình. Sau đó, họ sẽ lưu bản đồ dưới dạng tài liệu in (PDF hoặc hình ảnh), được tạo bởi GeoCortex / ArcGIS Server. Tài liệu in sẽ chứa một tiêu đề, một hình ảnh của bản đồ và một chú giải. Tuy nhiên, chú giải cho lớp địa chất sẽ là chú giải cho toàn bộ lớp địa chất, chứ không phải những gì thực sự được hiển thị trên bản đồ (tức là một tập hợp con nhỏ hơn nhiều).

Vì vậy, tôi đang tìm kiếm xem có giải pháp FOSS nào cho phép tôi cắt xén hoặc tạo ra khi đang bay một tập hợp con của truyền thuyết địa chất phản ánh các mục thực tế trên màn hình / trên bản đồ, đi cùng với tài liệu in . Tôi hy vọng rằng làm rõ mọi thứ; Tôi xin lỗi nếu nó không!


1
Xin chào ollyoop- Tôi đang có một thời gian khó khăn để hình dung kết quả mong muốn của bạn. Bạn có thể bao gồm một ví dụ về truyền thuyết xấu, và một ví dụ về một huyền thoại tốt? Tôi nghĩ rằng điều đó có thể giúp tôi hoặc người khác đưa ra một câu trả lời. Cảm ơn--
andytilia

tính năng này đã được đưa vào máy chủ Arcgis 10.1, tôi đã thấy nó trong khi trình bày ESRI.
geogeek

Hmmm, tốt, chúng ta sẽ thấy điều đó thực sự diễn ra như thế nào. Trong khi đó, có giải pháp FOSS nào không?
ollyoop

1
Dựa trên FOSS hoặc ESRI, có vẻ như bạn sẽ cần mã tùy chỉnh.
Ragi Yaser Burhum

Chắc chắn Latitude Geographics có thể làm điều này. Bạn đã nói chuyện với họ về điều đó chưa (có hay không trong Geocortex Essentials hoặc nếu họ có kế hoạch triển khai nó)?
Chad Cooper

Câu trả lời:


3

Hoàn toàn có thể làm những gì bạn muốn, tùy thuộc vào điều kiện nhất định. Hãy xem Ứng dụng Flex này tôi đã phát triển vài năm trước: http://india-wris.nrsc.gov.in/LULCApp.html .

Truyền thuyết và Thống kê, thay đổi tùy thuộc vào dữ liệu hiển thị trong phạm vi hiện tại. Thuật toán yêu cầu mỗi lớp có một màu riêng biệt. Ứng dụng Flex biết lớp và màu sắc của nó. Ở mọi mức độ thay đổi, nó chuyển đổi phạm vi bản đồ hiện tại thành bitmap và sau đó tìm ra màu sắc trong đó. Sử dụng điều này, bạn có thể tìm ra màu sắc hoặc các lớp hiện đang hiển thị. Dựa trên thông tin này, huyền thoại được tạo ra một cách linh hoạt.

Tôi đã sử dụng Flex tại thời điểm đó, nhưng điều này cũng có thể sử dụng Canvas trong HTML5. Hoặc bạn có thể sử dụng bất kỳ mã phía Máy chủ nào để thực hiện điều tương tự với hình ảnh bản đồ của mình để có được chú thích được tạo động.


Chính xác là như vậy! Tuyệt vời để xem một ví dụ trong thực tế. Nhiều đánh giá cao!!!
ollyoop

5

AFAIK, trong FOSS4G hoặc ESRI, bạn sẽ cần viết mã tùy chỉnh để tạo lớp này.

Nó không phải khó khăn, nhưng nó sẽ đưa bạn nhiều hơn một vài dòng mã.

Đối với ArcMap, điều này được thực hiện bằng cách sử dụng Phần tử tùy chỉnh . Trang web trợ giúp ESRI chứa đầy các ví dụ cũví dụ mới .

Trong quá khứ, tôi đã hoàn thành một cái gì đó tương tự như những gì bạn đã mô tả bằng cách sử dụng Pagelayout Frame Elements .

Nếu bạn chưa bao giờ thực hiện ArcObjects (nhưng đã lập trình), mã bản vẽ có thể hơi rắc rối, nhưng thường phải làm cho một người đạt được "aha!" chốc lát.

Thuật toán rất đơn giản:

  • (1) Lấy đối tượng Bản đồ của PageLayout mà bạn muốn sử dụng làm tài liệu tham khảo để tạo chú giải ... Bạn có thể phải xử lý nhiều khung hình để đến bản đồ mà bạn muốn, bởi vì Pagelayout có thể chứa một số đối tượng Bản đồ khác nhau phạm vi hơi bất thường nếu bạn chưa thực hiện bất kỳ chương trình ArcMap Pagelayout tùy chỉnh nào (hãy nghĩ về các bản đồ nhỏ mà bạn có thể có).

  • (2) Lấy mức độ hiển thị của ActiveView của bản đồ bạn muốn.

  • (3) Sử dụng đó làm hình học bộ lọc truy vấn của bạn để lặp và tìm kiếm trong tất cả các lớp trong bản đồ.

  • (4) Nếu lớp trả về bất kỳ bản ghi nào , bạn phải vẽ nó như thể hiện trong các ví dụ tôi đã đưa cho bạn trước đây.

Xin lỗi tôi không thể cung cấp cho bạn một giải pháp dễ dàng hơn, nhưng ít nhất theo cách này bạn sẽ có thể làm cho nó trông giống như bạn muốn - nó chỉ cần mã hóa.

Cập nhật:

Vì bạn muốn làm điều này trong ngữ cảnh của một ứng dụng Web, tôi đã kiểm tra tài liệu và có một số cách thực hiện bằng thuật toán tương tự.

Một trong số đó là thông qua tiện ích mở rộng đối tượng máy chủ ArcGIS . Bạn sẽ làm tất cả các bước trừ (1) (không cần phải lo lắng về Pagelayout trong bối cảnh này). Đưa ra kết quả bằng REST.

Từ đây, bạn có một số tùy chọn (dựa trên nếu bạn muốn sử dụng Flex hoặc Javascript), nhưng ý tưởng là như nhau - làm mới trên trang gọi dịch vụ web REST mà bạn đã tạo và vẽ chú thích.

Ưu điểm của phương pháp này trái ngược với các phương pháp khác đã được đề xuất là bạn có thể sử dụng bất kỳ biểu tượng nào với các tính năng của mình (và không giới hạn ở các màu riêng biệt cho biểu tượng của tính năng). Bạn có thể sử dụng ngôn ngữ web yêu thích của mình cho mã phía máy khách. Các biểu tượng mà bạn tạo cho chú giải có thể được tạo tự động từ bản đồ.

Nhược điểm là bạn sẽ cần phải viết Phần mở rộng đối tượng máy chủ! May mắn thay, có một mẫu ESRI thực hiện 75% những gì bạn cần và sẽ cung cấp cho bạn một ý tưởng rõ ràng về cách tiếp tục với các nhận xét tôi đã đưa ra ở trên.

Cập nhật 2: Theo như giải pháp FOSS4G cho vấn đề này, cách tiếp cận tương tự cũng sẽ hoạt động với bất kỳ máy chủ FOSS nào, mặc dù API hơi khác nhau đối với mỗi máy chủ.


1
Cảm ơn bạn rất nhiều cho câu trả lời! Có một công cụ gọi là Legend Limiter đã thực hiện điều này cho môi trường ArcGIS. Những gì tôi đang tìm kiếm là khả năng chuyển sang thế giới lập bản đồ web.
ollyoop

@ollyoop Ít nhất cho đến 9.3, tôi biết cách tiếp cận tương tự này sẽ hoạt động hoàn toàn tốt cho ArcGIS Server. Tôi biết đã có những thay đổi đáng kể trong kiến ​​trúc kết xuất máy chủ kể từ 9.3 và tôi thừa nhận đã không theo kịp điều đó. Tôi sẽ ngạc nhiên nếu các yếu tố tùy chỉnh được rút ra khỏi 10.1 mặc dù.
Ragi Yaser Burhum

@ollyoop đã thêm một cách tiếp cận sẽ hoạt động với ArcGIS Server
Ragi Yaser Burhum

3

Khi bạn xuất thành tệp PDF với Geocortex Essentials, chú giải được tạo bởi một báo cáo con trong mẫu in. Báo cáo con này nhận tất cả các lớp có thể nhìn thấy được sử dụng để tạo hình ảnh bản đồ và tất cả các mẫu màu trong truyền thuyết được tạo bởi ArcGIS Server. Nó không đưa ra bất kỳ truy vấn không gian nào để xác định xem có bất kỳ lớp nào trong chú giải thực sự được vẽ ở phạm vi khu vực in hay không.

Vì vậy, nếu bạn muốn thay đổi hành vi của chú giải, bạn có thể tùy chỉnh báo cáo con của chú giải hoặc bạn có thể sử dụng một hình ảnh thay vì một biểu tượng con để đưa chú giải vào mẫu in. Nếu bạn đã tạo một hình ảnh huyền thoại bằng cách nào đó để sử dụng trong trình xem của mình, bạn sẽ có thể sử dụng lại dịch vụ đó từ công cụ in.

Truyền thuyết đã chứa một số mã nội tuyến được nhúng để bật định dạng cho văn bản chú giải dựa trên việc mẫu màu dành cho một lớp hoặc cho một lớp trong lớp. Bạn có thể thấy mã nội tuyến khi chuyển sang tab "Tập lệnh" trong trình thiết kế báo cáo.

(Tôi làm việc tại Latitude Geographics)


1

Về "lập bản đồ web" với đầy đủ "giải pháp FOSS" ... Cân nhắc:

  • "Giải pháp FOSS" phải là "phổ biến" (có một cộng đồng lớn và có tổ chức) để được an toàn, ổn định, v.v.
  • Một khái niệm quan trọng trong FOSS và GIS là tiêu chuẩn hóa : các giải pháp tốt nhất áp dụng các tiêu chuẩn, giống như các tiêu chuẩn OGC .
  • Ngày nay, các "giải pháp web" phổ biến là OpenLayers, Mapserver, GeoServer, PostGIS, v.v ... Tất cả chúng đều có một số lõi tuân thủ OGC. Giải pháp "GeoCortex / ArcGIS Server" không phải là FOSS, nhưng, có lẽ, tuân thủ OGC.

Và xem xét kỹ thuật: bạn đang sử dụng "bảo hiểm" (?), Vì vậy một tiêu chuẩn OGC tốt để truy xuất thông tin không gian của bạn là WMS .


Một giải pháp đơn giản tuân thủ OGC cho vấn đề của bạn , là sử dụng các dịch vụ WMS GetCapabilitiesGetLegendGpson , trả về một mô tả chú giải tiêu chuẩn vào một tệp XML và hình ảnh với các huyền thoại.

LƯU Ý: khi bạn nghĩ về một số giải pháp GIS / FOSS, trước tiên bạn có thể nghĩ đến các tiêu chuẩn, sau đó vấn đề được giảm xuống thành "vấn đề mảnh LEGO nổi tiếng" và các mảnh ghép đến từ bất kỳ nhà cung cấp nào.

ArcGIS 10+ có GetLegendGpson , nhưng kiểm tra xem bạn có thể chỉ định BBOX chỉ hiển thị một tập hợp con huyền thoại hay không.


Nếu bạn muốn xây dựng bố cục bản đồ với chú giải , có một phần khác của "giải pháp FOSS LEGO" này:

Bất kỳ máy chủ bản đồ FOSS nào, như MapServer (và tôi nghĩ rằng các giải pháp ESRI cũng vậy), có thể cung cấp hình ảnh JPEG dưới dạng yêu cầu bản đồ WMS (không được lát gạch) - xem dịch vụ GetMap của WMS .

PS: nó không phải là một tiêu chuẩn, nhưng có lẽ máy chủ của bạn có thể được cấu hình để cung cấp bản đồ với chú giải , bằng các công cụ mẫu, như MapServer.

Để xây dựng bố cục "bản đồ với chú giải", bạn có thể tạo HTML (hoặc "tệp PDF khi đang di chuyển") bằng Javascript, PHP hoặc ngôn ngữ khác thực hiện các yêu cầu dịch vụ web (REST) cho bản đồ và chú giải.

Tôi thích tạo PDF từ HTML: bạn có thể sử dụng wkHtmlToPdf , một giải pháp FOSS để hội tụ HTML-to-PDF. Để sản xuất bố trí nghèo, với "trên ruồi JPEG bố trí", bạn có thể sử dụng một bộ công cụ phần mềm nguồn mở tiêu chuẩn, như ImageMagick , tại máy chủ.

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.