Cách phổ biến nhất để hiển thị geodata từ Postgis trên Tờ rơi là gì?


18

Ví dụ: trong cơ sở dữ liệu của tôi, tôi có một số điểm có tọa độ địa lý. Tôi muốn hiển thị chúng trên lớp JS của tờ rơi. Những dụng cụ nào tôi nên sử dụng? Có lẽ có một số API ...


Chào mừng bạn đến với GIS SE? Câu hỏi của bạn có thực sự là "Làm thế nào để hiển thị các điểm PostGIS bằng Tờ rơi?" Nếu vậy, bạn có thể chỉnh sửa câu hỏi của mình để làm cho câu hỏi rõ ràng hơn bởi vì tôi không chắc ý của bạn là "công cụ" trong ngữ cảnh này.
PolyGeo

Câu trả lời:


22

Để nhận dữ liệu từ cơ sở dữ liệu vào trình duyệt web, bạn cần sử dụng tập lệnh phía máy chủ. Điều này có thể khó thực hiện vì bạn cần nhận thức được các lỗ hổng, như SQL tiêm. Một số điều quan trọng nhất cần lưu ý là bạn nên sử dụng các truy vấn được tham số hóa và đảm bảo rằng người dùng cơ sở dữ liệu của bạn không có đặc quyền, chỉ có quyền truy cập đọc vào các bảng mà bạn muốn công khai.

Cách dễ dàng để có quyền truy cập API vào cơ sở dữ liệu là sử dụng một chút phần mềm như GeoServer, nhưng đó là một ứng dụng rất lớn để sử dụng cho vấn đề nhỏ tiềm ẩn.

Một phương pháp khác là có một tập lệnh phía máy chủ kết xuất dữ liệu vào tệp GeoJSON theo định kỳ, tùy thuộc vào tần suất thay đổi dữ liệu của bạn, điều này có thể là hàng giờ, hàng ngày, hàng tuần. Hãy nhớ rằng trang web của bạn có thể không hoạt động trong khi tệp đang viết.

Một phương pháp khác là sử dụng PHP hoặc Python làm tập lệnh CGI để xây dựng API của riêng bạn.

Ví dụ:

Khi bạn có GeoJSON, dù là động hay tĩnh, bạn có thể tải nó rất dễ dàng bằng cách sử dụng Leaflet: http://leafletjs.com/examples/geojson.html .


1
Cảm ơn về câu trả lời. Tôi nghiêng để sử dụng GeoJSON. Bây giờ tôi muốn sử dụng tệp CSV thay vì Postgis, chuyển đổi nó thành GeoJSON và sau đó hiển thị dữ liệu bằng Tờ rơi.
John Smith

1
sử dụng sau đó ogr2ogr đọc csv để chuyển đổi dễ dàng sang GeoJSON
Jorge Sanz

1
Nếu dữ liệu của bạn quá lớn và mất quá nhiều thời gian để tải dưới dạng JSON, hãy xem TopoJSON. github.com/mbostock/topojson
Alex Leith

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.