Tìm kiếm lời khuyên về lộ trình gói nguồn mở chung? [đóng cửa]


17

Tôi chỉ muốn xin lời khuyên từ các chuyên gia về GIS nguồn mở về một ngăn xếp được đề xuất để sử dụng cho dự án đã hình dung của tôi, vì tôi không hiểu đầy đủ các giới hạn có thể có với hầu hết các gói. Tôi biết tôi có thể làm những gì tôi muốn bằng các gói khác nhau của ESRI, nhưng tôi muốn rẻ hơn và mở cho cả thế giới thấy. Tôi tự tin rằng tôi có thể chấp nhận bất kỳ thử thách nào và học đủ tốt để thực hiện một dự án, tôi chỉ muốn tránh đi vào con đường sai lầm ngay từ đầu.

Tầm nhìn trang web của tôi: Về mặt UI, một trang web tìm kiếm NON-GIS! Một cái gì đó khác dọc theo dòng của whereis.com với mọi thứ (hoặc gần như mọi thứ) đang được thực hiện trên các hộp lơ lửng phía trên bản đồ cơ sở. Các chi tiết cụ thể hiện không quan trọng, chỉ nhấn mạnh không có lớp GIS với các hộp đánh dấu trong một khung riêng biệt, v.v. Về mặt tương tác người dùng, người dùng đã đăng ký có thể tạo các tính năng (như vị trí đài phun nước uống, đường đi bộ, v.v.) trên đỉnh của cơ sở bản đồ, và chỉnh sửa các tính năng riêng của họ. Nếu có thể, hãy CHỈ chỉnh sửa các tính năng của riêng họ mà họ đã tạo. Một bản đồ hợp tác, thực sự.

Tôi vẫn chủ yếu ở chế độ nghiên cứu, chơi xung quanh với các gói khác nhau nhưng chỉ vì mục đích làm quen chung và không thử nghiệm thực sự (sẽ yêu cầu tìm hiểu chúng một cách chi tiết trước!). PostGIS chắc chắn có vẻ là cách đúng đắn để trở thành (các) DB cơ bản, với Geoserver / Mapserver là phần mềm trung gian rất có thể. Openlayers gần như chắc chắn sẽ là bản đồ nhanh, vì tôi đã thoải mái với nó và biết sức mạnh của nó.

Vì vậy, điều đó mang lại cho tôi hai vấn đề chính đòi hỏi phần lớn lời khuyên:

1) UI lớp trên cùng tốt nhất cho một trang web như thế này là gì?

Đây có phải là phiên bản tùy chỉnh của Django (hoặc thậm chí Django-CMS) hay đơn giản là một phiên bản được ghép nối của GeoExt hoặc thư viện khác (không chắc bạn có thể tạo đăng nhập / đăng ký / giao diện người dùng đầy đủ với nó không), một CMS / khung khác ( không, không phải drupal hoặc bất cứ điều gì giới hạn!), hoặc một cái gì đó hoàn toàn khác nhau?

2) Thậm chí có thể có người dùng trang web đã đăng ký chỉ chỉnh sửa các tính năng của họ không?

Tôi muốn tránh những nơi graffiti graffiti hàng loạt như OSM và các dự án hợp tác khác. Dường như từ việc đọc và lời khuyên của tôi trước đây, Geoserver không thể có xác thực người dùng ở cấp tính năng.

Máy chủ có thể?

Tôi thậm chí không biết liệu dân số người dùng của trang web (từ CMS hoặc khung) thậm chí có thể liên kết trực tiếp đến máy chủ địa lý / máy chủ bản đồ hay không.

Nếu một khái niệm như vậy là không thể với các giải pháp nguồn mở, thì có cách nào khác để đạt được mục tiêu đó không?

Người dùng đã xác thực có chỉnh sửa phiên bản chưa xuất bản của lớp tính năng chính (để không làm hỏng bản gốc) và tự động hợp nhất nó với phiên bản đã xuất bản cứ sau 24 giờ trong khi duy trì bản sao lưu hàng ngày của bản gốc?

Sắp xếp mất về cách đạt được ý định này.

Và vâng, tôi cũng đã xem GeoNode, nhưng tôi chỉ muốn một bản đồ tổng thể (giữ cho nó đơn giản) và giao diện người dùng của nó không đủ tương tác (trước khi đi vào GeoExplorer) hoặc quá giống như trong GeoExplorer. Có vẻ như quá đóng hộp một giải pháp cho dự án này.

Xin lỗi vì quá cởi mở đã kết thúc ở đây và mơ hồ, nhưng tôi hy vọng có thể bắt đầu một con đường trong đó có thể ở trên và không chạy vào tường trong vài tháng kể từ bây giờ, chỉ phải bắt đầu lại vì con đường # 1 không bao giờ có chức năng đó từ đầu!

Một trong những ví dụ tốt nhất tôi có thể tìm thấy là http://www.gpsies.com Tôi biết điều này sử dụng tờ rơi, nhưng không chắc chắn về khung và cơ sở dữ liệu cơ bản. Người dùng có thể tạo / tải lên các tính năng của riêng họ, nhưng không thể chỉnh sửa các tính năng khác.


5
Một chút về graffiti OpenStreetMap có lẽ là một chút sai lầm; OSM thỉnh thoảng phá hoại nhưng đó là ngoại lệ, không phải là tiêu chuẩn. Quyền của mỗi người dùng có một lỗ hổng rõ ràng là hầu hết người dùng đều thoáng qua và do đó, bạn sẽ có dữ liệu chưa hoàn thành hoặc rác, không có cách nào để người khác hoàn thành hoặc xóa nó.
tmcw

Đó là một điểm rất hợp lệ, và tôi sẽ ghi nhớ. Với các quy trình sao lưu thích hợp tại chỗ, một mô hình mở rộng có thể là phần thưởng xứng đáng nhất. Tôi còn rất xa để phát triển vào thời điểm này, tôi có rất nhiều chỗ để học hỏi và phát triển ý tưởng. Cảm ơn!
Jeremy

Câu trả lời:


8

Vì tôi đang xây dựng một cái gì đó tương tự ngay bây giờ, tôi sẽ nói cho bạn biết tôi đang làm như thế nào và bạn có thể chọn thay đổi bất cứ điều gì bạn muốn từ nó cho một phần khác.

Django (với GeoDjango ) khá tốt vì đây là khung cơ bản cho python (một lần nữa, nếu đó là việc của bạn, bạn có thể làm điều này bằng ngôn ngữ khác).

Cách tiếp cận của tôi đối với các chỉnh sửa ở cấp độ người dùng tương tự như những gì CaptDragon đã mô tả. Tôi đang sử dụng khung xác thực django . Đối với dự án này, các API của tôi đang được tạo bằng Tasty Pie của Django đã có khung cho phép bạn tạo API RESTful phù hợp với xác thực được xem xét khá dễ dàng.

Mapserver của tôi (hoặc geoserver hoặc bất cứ điều gì bạn chọn để sử dụng) không bao giờ được tiếp xúc trực tiếp với thế giới bên ngoài (chỉ máy chủ địa phương có quyền truy cập vào những) ... tất cả các gạch được phục vụ bằng cách sử dụng một máy chủ ngói ( geowebcache , tilecache , tilestache bất cứ điều gì ).

Tôi không cần đề cập đến Openlayers, vì bạn đã chọn nó. Sự lựa chọn tốt.

PostgreSQL / PostGIS là một người không có trí tuệ khác. :)

Là một thư viện javascript, bạn không bao giờ có thể sai với jQuery. Nếu bạn định cho phép một số chỉnh sửa, bạn có thể hưởng lợi từ việc có một số cấu trúc của các đối tượng javascript của bạn bằng cách sử dụng một cái gì đó như backbone.js . Lấy cái này với một hạt muối. Một số người thích nó - những người khác ghét nó.

Nếu bạn không muốn trang web của mình trông thật xấu xí, hãy ưu tiên và sử dụng khung css như Bootstrap hoặc La bàn hoặc thay thế, với giá 20 đô la, chỉ cần mua một trang web từ themeforest hoặc Wrastrap (nếu bạn sẽ mở nguồn muốn xem giấy phép nếu bạn định mua nó). Kết nối một trong số này mất khoảng một ngày và tạo ra sự khác biệt lớn về giao diện trang web của bạn!

Cá nhân, tôi đã xem Django-cms (và Pinax ) nhiều lần và tôi không bao giờ có thể thuyết phục bản thân rằng nó đáng để gặp rắc rối. Tôi chưa bao giờ hối hận vì quyết định đó.

Vì bạn đang chọn một dự án sẽ yêu cầu các phiên bản khác nhau của lược đồ của bạn (bạn càng phát triển, nó sẽ càng thay đổi), chỉ cần sử dụng về phía nam . Đừng ngần ngại về điều đó! Nghiêm túc.

Đó là những gì tôi sẽ sử dụng, nhưng điều đáng yêu về Nguồn mở là bạn có thể thay đổi các bộ phận cho phù hợp với nhu cầu của riêng bạn.


Cảm ơn thông tin tuyệt vời, cùng với những người khác. Điều này chắc chắn giúp thu hẹp sự tập trung của tôi khi tôi tiến về phía trước.
Jeremy

Bootstrap trông tuyệt vời. Bạn có thể chỉ cho chúng tôi bất kỳ trang web ánh xạ ví dụ nào sử dụng nó?
Stephen chì

6

Tôi đang sử dụng một ngăn xếp tương tự như Ragi. Tôi đang ở gần phiên bản alpha của ứng dụng của mình và tại thời điểm này, dường như đó là lựa chọn phù hợp. Đây là giải pháp của tôi:

Tại máy chủ:

  • Máy chủ Ubuntu + máy chủ web apache + tomcat apache.
  • Postgresql + postgis làm cơ sở dữ liệu.
  • Geoserver, (trong trường hợp của tôi, tôi chỉ sử dụng nó cho các trình quét).
  • Khung Django + Tastypie. Tastypie phục vụ tất cả các vectơ thông qua API và người dùng có quyền 'mỗi đối tượng'.
  • python-gsconfig để kiểm soát máy chủ địa lý từ python.
  • jasper báo cáo để tạo pdf.
  • pyjasper để kiểm soát báo cáo jasper từ python.
  • Thư viện địa lý hiệu suất cao cho nội suy.

Tại khách hàng:

  • ExtJs 4 -> Thật tuyệt vời, extjs hoạt động rất tốt với ngon miệng và bạn có nhiều thứ hoạt động tốt, như cửa sổ và bàn. Tôi bắt đầu sử dụng nó trong mã thuần túy nhưng tôi không sử dụng Sencha Architect 2, nó giúp ích rất nhiều.
  • OpenLayers -> Với hai phương thức được chèn vào một cửa hàng extjs và một phương thức trong lớp openlayers, bạn có chúng cập nhật lẫn nhau về thay đổi dữ liệu.

Tôi chắc chắn sẽ nghiên cứu tùy chọn ngon miệng, có vẻ đầy hứa hẹn. Rất hữu ích!
Jeremy

4

Thậm chí có thể có người dùng trang web đã đăng ký chỉ chỉnh sửa các tính năng của riêng họ?

Có vẻ như điều này là có thể sử dụng Cartaro. Nó dựa trên Drupal (tôi biết, bạn đã nói không có gì giới hạn như Drupal, nhưng hãy nghe tôi nói!) Và nó cho phép người dùng chỉ chỉnh sửa các tính năng của riêng họ, trong số các tùy chọn khác. Dưới đây là ảnh chụp màn hình được chụp từ trang Mọi người khi đăng nhập với tư cách quản trị viên, hiển thị các loại quyền có thể được đặt cho người dùng:

Quyền Cartaro

Ngoài ra, Cartaro chạy trên PostGIS, GeoServer và OpenLayers, vì vậy nó có khả năng có thể có tất cả những gì bạn đang tìm kiếm.

UI lớp trên cùng tốt nhất cho một trang web như thế này là gì?

Tôi không biết lớp trên cùng "tốt nhất" là gì, nhưng có vẻ như Cartaro có thể cung cấp những gì bạn đang tìm kiếm vì Drupal có nhiều tùy chọn UI. Có vẻ như Cartaro đã sớm phát triển (cá nhân tôi không biết ai đang sử dụng nó), nhưng nó có tiềm năng.


1
Tôi đánh giá cao thông tin, tôi không biết Cartaro có khả năng đó. Bây giờ tôi sẽ theo mô hình cơ bản mà những người khác đã đề cập (ít nhất là từ góc độ nghiên cứu / học tập), nhưng tôi có thể nhìn sâu hơn một chút vào CMS này. Tôi đã cho nó khoảng một giờ đáng giá vài giờ trở lại và ban đầu ít ấn tượng hơn, nhưng công bằng mà nói, tôi đã không cho nó nhiều cơ hội vào thời điểm đó.
Jeremy

3

Tôi sẽ giải quyết câu hỏi số 2 Đây là cách tôi khắc phục vấn đề cho phép người dùng chỉnh sửa hồ sơ của chính họ.

Tôi tạo các dịch vụ web của riêng mình RESTFUL hoặc SOAP (sự lựa chọn của bạn), chẳng hạn như UpdateUserRecord(string WKTLocation, string otherArg)liên kết với cơ chế xác thực của trang web của bạn.

Cả OpenLayers và PostGIS đều đọc và viết Văn bản nổi tiếng (WKT) cũng như GML và các định dạng tiêu chuẩn khác nhưng cá nhân tôi sử dụng WKT để chuyển thông tin hình học trở lại và hình thành từ ứng dụng của tôi, thông qua dịch vụ web và vào PostGIS DB.

Ngoài ra, các phương thức web của tôi như UpdateUserRecordchỉ có thể được gọi bởi người dùng phiên xác thực. A 401 Unauthorizedđược trả lại nếu bất cứ ai khác cố gắng gọi dịch vụ web này. Trong trường hợp của tôi, tôi sử dụng .NET và FormsAuthentication với tùy chọn xác thực bằng OpenAuth2 (Google, Facebook, Twitter, v.v.). Điều này cũng có thể được thực hiện trong PHP, Java, v.v.

Vì vậy, bạn có thể tạo các phương thức web gọi trực tiếp cơ sở dữ liệu PostGIS và cập nhật hoặc chèn bản ghi theo cách bạn muốn. Và đó là cách tôi đã làm nó.

Sau đó, tôi đã sử dụng GeoServer cho các khả năng truy vấn WFS, WMS và dễ dàng hiển thị thông tin trên bản đồ nơi tôi sẽ cung cấp UserID nếu truy vấn yêu cầu.

Hi vọng điêu nay co ich.


Điều này đã giúp rất nhiều, bên cạnh nhiều người có cùng các nguyên tắc cơ bản. Tôi có thêm một chút tự tin tôi có thể thực hiện điều này với sự tập trung học tập đúng đắn. Cũng cảm ơn!
Jeremy
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.