Làm cách nào để tạo giao diện người dùng đơn giản cho cơ sở dữ liệu PostGIS?


21

Tổ chức của tôi thu thập rất nhiều dữ liệu giám sát môi trường (dòng chảy, hóa học nước, v.v.) hầu hết chúng hiện được lưu trữ trong Excel. Tôi muốn đưa mọi thứ vào cơ sở dữ liệu - có thể là PostGIS - nhưng tôi cần dữ liệu có thể truy cập được đối với những người không có kiến ​​thức về các nguyên tắc cơ sở dữ liệu (không có SQL hoặc bất cứ điều gì tương tự).

Tôi muốn có một số loại giao diện đơn giản cho cơ sở dữ liệu của mình, nơi người dùng chọn một trạm theo dõi quan tâm, loại biến (ví dụ: nồng độ nitrat dòng) và khoảng thời gian. Cơ sở dữ liệu sau đó sẽ trả về dữ liệu được yêu cầu ở định dạng csv mà người dùng có thể tải xuống máy tính của họ. Trong một thế giới lý tưởng, mặt trước sẽ hiển thị bản đồ có thể nhấp của tất cả các trạm giám sát, nhưng nếu dễ dàng hơn thì một danh sách thả xuống của các trang web có sẵn sẽ bắt đầu tốt. Tôi đoán phần đầu này có thể là một trang web, nhưng nó không phải như vậy.

Làm thế nào là khó khăn này, xin vui lòng, và các tùy chọn khác nhau của tôi là gì? Tôi không phải là một chuyên gia về cơ sở dữ liệu, nhưng tôi có một nền tảng vững chắc về Desktop GIS và tôi rất vui khi viết các tập lệnh Python đơn giản và chơi với cơ sở dữ liệu địa lý cá nhân PostGIS, SpatiaLite và ESRI. Tôi chưa bao giờ thực hiện bất kỳ phát triển web hoặc web GIS nào, nhưng tôi rất muốn học.

Tôi đã dành một phần của ngày hôm qua để khám phá một số hướng dẫn OpenGeo tuyệt vời . Cách tiếp cận này có vẻ đầy hứa hẹn và ít nhất bây giờ tôi có thể thấy cách để dữ liệu của mình được hiển thị trên một trang web. Điều ít rõ ràng hơn với tôi là cách tôi cho phép người dùng truy vấn cơ sở dữ liệu và lấy lại kết quả.

Câu hỏi của tôi: Tôi nên nghĩ về loại cấu trúc phần mềm nào cho một dự án như thế này? ví dụ

PostGIS + GeoServer + Something else?

Những lựa chọn khác có sẵn mà tôi nên nghiên cứu?

Một giải pháp đơn giản nhưng đầy đủ chức năng sẽ được ưu tiên ban đầu: nếu tôi có thể kết hợp một nguyên mẫu cơ bản, tôi có thể sử dụng nó để biện minh cho việc dành nhiều thời gian hơn để học cách làm mọi thứ đúng cách. Nguồn mở cũng là một yêu cầu vì tôi không có bất kỳ ngân sách nào cho việc này cho đến khi tôi có thể chứng minh một số lợi ích.

Cảm ơn rất nhiều!


2
Nếu bạn rời khỏi bản đồ, bạn có thể hoàn thành tất cả những điều này chỉ với Apache & PHP. Bạn sẽ chỉ phải tạo một biểu mẫu đầu vào cho tập lệnh PHP lấy dữ liệu từ PostGIS. (Bạn có thể thay thế PHP với Python.) ... Nhưng sau đó điều này sẽ không là một câu hỏi cho GIS.SE
Underdark

Cảm ơn rất nhiều cho mọi người đã phản hồi! Đây là tất cả các câu trả lời hữu ích và bạn đã cho tôi rất nhiều thứ để theo dõi. Tôi muốn "chấp nhận" tất cả trong số họ, nhưng tôi đã đưa ra điểm cho @canisrufus vì tôi thấy đoạn cuối của anh ấy rất hữu ích và tôi chưa từng gặp qua web.py trước đây. GeoDango trông cũng tuyệt vời. Chúc mừng!
JamesS

@jamesS Tôi sẽ mở rộng đoạn cuối của mình, nhưng nó bắt đầu có vẻ lạc đề. Nếu bạn có câu hỏi hoặc muốn độc thoại dài hơn về cách thiết lập, bạn có thể đánh tôi khi trò chuyện ở đây.
canisrufus

@JamesS Có tiến triển gì về điều đó không? Làm việc trên cùng một topis, tôi mới bắt đầu phát triển một dự án Django
Luca Moiana

Xin chào @Luca Moiana. Là một nguyên mẫu, tôi đã làm theo lời khuyên trong câu trả lời được chấp nhận bên dưới bằng cách sử dụng web.py, Apache và PostGIS (nhưng cuối cùng trang web của tôi không bao gồm bản đồ). Vài năm sau, chúng tôi đã áp dụng Hệ thống thông tin thủy văn CUAHSI , rất tuyệt vời. Nó cần một chút thiết lập, nhưng cung cấp một loạt các công cụ để lưu trữ, tìm kiếm, khám phá, phân tích và trực quan hóa dữ liệu môi trường.
JamesS

Câu trả lời:


13

Nếu bạn đã biết cách của mình xung quanh Python và SQL, sẽ không quá khó để xây dựng một trang web bằng cách sử dụng khung web python. Hai cái đơn giản - cherry.py và web.py - đến với tâm trí. Tôi nghĩ rằng học theo cách của bạn xung quanh người lập bản đồ quan hệ đối tượng của Django có thể sẽ hiệu quả hơn so với giá trị của nó.

Python có một thư viện gọi là psycopg2 (http://initd.org/psycopg/ và hướng dẫn: http://wiki.postgresql.org/wiki/Psycopg2_Tutorial ) cho phép bạn dễ dàng chạy các truy vấn chống lại PostGRESQL / PostGIS. Nó cũng có một mô-đun CSV (http://docs.python.org/l Library / csv.html) sẽ giúp việc tạo CSV của bạn từ truy vấn đã nói trở nên dễ dàng.

Như những người khác đã nói, việc tạo ra một bản đồ ở mặt trước làm tăng thêm sự phức tạp. Bạn sẽ cần một cái gì đó như OpenLayers để hiển thị bản đồ và một cái gì đó như MapServer hoặc GeoServer để tạo hình ảnh bản đồ từ cơ sở dữ liệu của bạn (hoặc các nguồn dữ liệu khác). Điều đó có lẽ sẽ tốt hơn như một bước thứ hai.

Hiện tại, "tất cả" có vẻ như bạn cần là một trang web: một hình thức cho phép bạn chọn đối tượng truy vấn nào bạn muốn. Họ nhấn "gửi", các tham số truy vấn được gửi đến máy chủ (Apache sẽ là một lựa chọn tốt), sau đó chạy tập lệnh của bạn, truy vấn cơ sở dữ liệu, tạo tệp CSV thích hợp và trả lại cho trình duyệt. Dễ như py;)


2
Bạn không CẦN MapServer / GeoServer để tạo hình ảnh. Bạn chỉ có thể lấy dữ liệu trực tiếp từ PostGIS và hiển thị dưới dạng dữ liệu vectơ trên bản đồ của bạn. Tuy nhiên, tùy thuộc vào mức độ phức tạp của dữ liệu của bạn, bạn có thể chuyển một lượng dữ liệu đáng kể. Nó phụ thuộc vào tình hình. Ngoài ra, hiển thị chúng dưới dạng dữ liệu vectơ cho bạn tùy chọn nhấp vào đối tượng để hiển thị / chỉnh sửa dữ liệu của nó.
Mr_Chimp

@mr_chimp Ồ, đó là một điểm tốt. Mối quan tâm của tôi là lớp nền, nhưng người ta chỉ có thể sử dụng Google Maps hoặc OSM hoặc v.v. Trên thực tế, tôi có xu hướng nghĩ rằng lớp vectơ nói chung là một giải pháp đẹp hơn (cho người dùng), nhưng như bạn chỉ ra có những hạn chế. Và tất nhiên, cách đơn giản nhất để chuyển các vectơ sẽ là có một cái gì đó như MapServer hoặc GeoServer phục vụ chúng;)
canisrufus

Như mọi khi, đó là trường hợp sử dụng công cụ phù hợp cho công việc. Vì JamesS đã có cơ sở dữ liệu PostGIS, anh ta cũng có thể lấy dữ liệu từ đó. Trừ khi tôi quên điều gì đó, thiết lập MapServer / bất cứ điều gì sẽ chỉ là một bước bổ sung (mặc dù thông thường tất nhiên đó sẽ là cách nhanh nhất).
Mr_Chimp

8

GeoDjango

Nó khá dễ dàng để thiết lập và có một số chức năng cơ bản. Đó là Python, vì vậy ít nhất bạn đã quen thuộc với ngôn ngữ này. Nó có thể là quá mức cho nhu cầu của bạn. Nhưng, nếu bạn muốn phát triển trang web, bạn sẽ có một khung hoàn thiện để xây dựng.


5

Nếu bạn không muốn / cần tạo bản đồ. Tất cả những gì bạn cần là một máy chủ web và ngôn ngữ lập trình (tôi thích Apache hơn vì nó dễ sử dụng và thiết lập, nhưng có các tùy chọn khác) và sau đó Postgres với PostGIS hoặc một số cơ sở dữ liệu khác.

Nếu các tệp excel của bạn được định dạng độc đáo, việc nhập dữ liệu vào cơ sở dữ liệu sẽ đơn giản. Bạn có thể viết một tập lệnh có thể tạo ra các câu lệnh INSERT. Các truy vấn bạn mô tả âm thanh như chúng cũng có thể quản lý được.

Nếu / khi bạn muốn thực hiện phần ánh xạ, Apache, GeoServer và OpenLayers sẽ là một giải pháp đơn giản và miễn phí. GeoServer (như bạn biết) có thể dễ dàng sử dụng PostGIS cho WMS hoặc định dạng đầu ra khác. Tất cả bạn phải làm là thêm cửa hàng kết nối với PostGIS, sau đó thêm các lớp từ các bảng trong PostGIS.

Các công cụ lập bản đồ miễn phí khác mà bạn có thể xem là Mapserver và MapGuide. Mã nguồn mở MapGuide thực hiện một số nội dung khá hay nhưng phức tạp hơn và tài liệu của nó hơi chậm.

MySQL cũng có một phần mở rộng không gian, nhưng nó không có nhiều tính năng và chức năng không gian như PostGIS làm.

Nếu bạn quen thuộc với python, tôi sẽ xem GeoDjango ... Tôi không biết nhiều về nó nhưng tôi đã nghe thấy những điều tốt


4

Bạn có thể tìm thấy tổng quan về các vấn đề thiết kế và phát triển ứng dụng bản đồ web, hơn nữa là mã nguồn được ghi lại đầy đủ cho một ứng dụng bản đồ web môi trường dựa trên Google Maps và cơ sở dữ liệu không gian tạm thời PostgreQuery / PostGIS, trong luận án gần đây của tôi về luận án Khoa học máy tính: " Thiết kế và phát triển một nguyên mẫu giải quyết việc quản lý, phân tích và phân phối dữ liệu vectơ môi trường theo thời gian sử dụng công nghệ Nguồn mở. Khung chung và nghiên cứu trường hợp tập trung vào quản lý nước ngầm ở khu vực ven biển "

Luận án có thể được tải xuống từ http://www.giscience.it/it/pdf/DissertationMscComputerScience_CrestazEzio_Supervisors.pdf

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.