Tạo một dịch vụ lập bản đồ / lát bản đồ web nhỏ


26

Tôi đang tìm kiếm một cách quy mô nhỏ và dễ dàng để trình bày một hoặc nhiều hình dạng đa giác trực tuyến (trên một trang web thành phố mà không có bất kỳ cơ sở hạ tầng máy chủ bản đồ hiện có nào, chính xác). Ngay bây giờ, tôi đang làm tất cả công việc với QGIS và tôi muốn duy trì tất cả nguồn mở (không còn ngân sách cho bất kỳ khoản đầu tư phần mềm lớn nào).

Nghiên cứu chủ đề này dẫn đến vô số cách tiếp cận có thể, và khiến tôi khá bối rối. Những gì tôi đang tìm kiếm là

  • có thể hiển thị các đa giác được phân loại trong bản đồ chuyên đề (- nếu có thể, thật tuyệt khi nhận được cửa sổ bật lên hoặc có thể truy xuất thông tin thuộc tính - nhưng đó là tùy chọn rất cao)
  • Tôi muốn làm hầu hết công việc (tạo kiểu, v.v.) trong QGIS
  • OSM là bản đồ cơ sở sẽ hoàn toàn ổn

Cho đến nay, các lát bản đồ tùy chỉnh trên bản đồ cơ sở OSM trông giống như thứ tôi đang tìm kiếm (hoặc có một giải pháp tốt hơn)? Điều gì sẽ là cách tốt nhất để tạo ra những viên gạch này?


2
Nó có phải là một giải pháp dựa trên Raster (lát gạch Web) không? Nó sẽ ổn cho một giải pháp vector?
Mapperz

Không hoàn toàn không. Tôi chỉ hình dung nó sẽ là cách dễ nhất (tạo gạch, tạo index.htm hoặc khối mã để dán vào trang web hiện có, sao chép vào thư mục máy chủ, xong). Tôi đã làm việc với GMapCreator một lần trước đây trong một dự án tư nhân và đó là một cách rất nhanh để hoàn thành công việc.
SAnderka

Bạn có bao nhiêu đa giác trong shapefile của bạn? Nếu dưới 1000, có thể nhận xét của @ Mapperz về giải pháp vectơ là cách tốt nhất. Giải pháp đơn giản nhất là sử dụng API Google Maps để vẽ đa giác và tạo cửa sổ bật lên thông tin - không cần tạo và lưu trữ hình ảnh lát gạch không tương tác. Hình ảnh lát gạch của bản đồ là tốt nhất cho thông tin dày đặc như hiển thị hình ảnh vệ tinh, đường hoặc ranh giới đường điều tra dân số.
b_dev

Câu trả lời:


13

Đối với một cách đơn giản để thực hiện việc này bắt đầu với QGIS, bạn có thể sử dụng Máy chủ Bản đồ QGIS có thể phục vụ các bản đồ mà bạn thiết kế bằng giao diện QGIS thông thường. Ngoài ra, bạn có thể muốn sử dụng GeoServer dựa trên Java và có thể dễ cài đặt hơn. Vì cả hai chương trình đều phục vụ bản đồ bằng các tiêu chuẩn mở nếu bạn bắt đầu với một và cần chuyển đổi sau đó, không cần thay đổi ứng dụng khách.

Khi bạn đã thiết lập một hệ thống để phân phát các bản đồ WMS, bạn sẽ muốn một giao diện khách. Tôi muốn giới thiệu OpenLayers vì nó khá đơn giản để bắt đầu và dễ dàng mở rộng. Nó xử lý các gạch WMS, WMST và OSM mà không gặp vấn đề gì.

Cuối cùng, bạn có thể cần chuyển sang các lớp xếp cho các lớp WMS của mình (giả sử bạn bắt đầu nhận được hơn 50 - 100 yêu cầu mỗi phút trên phần cứng hợp lý), sau đó bạn sẽ muốn xem xét đặt bộ đệm ẩn trước máy chủ bản đồ. Nếu bạn đã sử dụng GeoServer thì bạn có thể sử dụng GeoWebCache được tích hợp sẵn hoặc bạn có thể sử dụng TileCache .


Vấn đề của tôi là hiện tại tôi đang làm cố vấn tự do trong một chính quyền thành phố. Các nhân viên CNTT địa phương khá dày và cố gắng giữ tất cả các loại công cụ mã nguồn "đáng ngờ" từ máy móc của họ (Tôi đã chiến đấu trong một trận chiến dài cho QGIS). Do đó, tôi thực sự muốn tránh mọi giải pháp cần được cài đặt dưới dạng "phần mềm" trên không gian web của thành phố.
SAnderka

Giải pháp mơ ước của tôi sẽ là thứ tôi có thể tự chuẩn bị và chỉ cần sao chép vào không gian web của họ, chèn mã html / JS và được thực hiện. Cho dù đó là dữ liệu raster hay vector không thực sự được tính đến cuối cùng. Dù sao tôi cũng là người duy nhất hiểu được sự khác biệt về kỹ thuật ... Và tất cả những người khác quan tâm là một bản trình bày đẹp và dễ dàng về dữ liệu của chúng tôi cho công dân của chúng tôi.
SAnderka

1
bạn chỉ cần giải thích với họ rằng lập bản đồ web không phải là thứ bạn có thể làm dễ dàng mà không cần phần mềm. Chắc chắn bạn có thể ném một số ô đơn giản lên máy chủ web nhưng nó sẽ không đẹp ở mọi quy mô, thật khó để duy trì và khó thêm các tính năng khi thị trưởng muốn nhiều hơn.
Ian Turton

Vì vậy, tôi đã xem xét Geoserver (như một phần của gói Open Geo Suite) và nó trông khá tốt. Tôi đã nhập shapefile của mình, tạo kiểu cho nó, thậm chí có bản xem trước đang chạy trên localhost. Nhưng làm cách nào để có được những bản đồ này trực tuyến trên không gian web của tôi? Tui bỏ lỡ điều gì vậy? Dấu trang, vv rõ ràng sẽ không hoạt động vì chúng đề cập đến ổ cứng cục bộ của tôi. Tôi đã làm việc theo cách của mình thông qua tất cả các hướng dẫn có thể và làm thế nào, nhưng chủ đề đó dường như không bao giờ được thảo luận? ai đó có thể chỉ cho tôi đi đúng hướng?
SAnderka

bạn đặt GeoServer trên máy chủ web của bạn và sao chép thư mục dữ liệu từ máy cục bộ của bạn sang máy từ xa.
Ian Turton

8

có thể hiển thị các đa giác được phân loại trong bản đồ chuyên đề (- nếu có thể, thật tuyệt khi nhận được cửa sổ bật lên hoặc có thể truy xuất thông tin thuộc tính - nhưng đó là tùy chọn rất cao)

Tôi muốn làm hầu hết công việc (tạo kiểu, v.v.) trong QGIS

OSM là bản đồ cơ sở sẽ hoàn toàn ổn

Tất cả điều này có thể được thực hiện trong QGIS và ogr2layersplugin. Quy trình làm việc rất đơn giản:

  1. Phong cách dữ liệu của bạn trong QGIS. Sử dụng hệ thống ký hiệu cũ như tôi gặp vấn đề New Symbologykhi sử dụng ogr2layersplugin.

  2. Khởi chạy ogr2layersplugin và xác định cài đặt trình mở (như kích thước bản đồ, điều khiển bản đồ, sơ đồ cơ sở, v.v.). Điều này sẽ tạo một thư mục chứa index.htmlvà các lớp dữ liệu của bạn được chuyển đổi dưới dạng geojsontệp.

  3. Tải thư mục vào máy chủ web.

Lưu ý rằng điều này chỉ dành cho webmap đơn giản. Để tạo các bản đồ nền tùy chỉnh và các tính năng lập bản đồ web khác, hãy xem câu trả lời của iant và Peter.


1
Sơ đồ web đơn giản có nghĩa là nó vẫn có thể phóng to và có thể cuộn được, đúng không? Nghe có vẻ giống như một cái gì đó tôi nên xem xét khi tôi trở lại văn phòng của tôi.
SAnderka


6

Một tùy chọn khác là TileMill - nó hỗ trợ ốp lát, tương tác và bản đồ trong một giao diện dựa trên web dễ sử dụng, bao gồm các định nghĩa kiểu trong một ngôn ngữ proto-CSS được gọi là cascadenik . Sử dụng TileMill, bạn có thể tạo ra các tập tin mbtiles có thể được sử dụng với một cái gì đó như TileStream . Điều đó nói rằng, vẫn còn một số thủ thuật với việc triển khai các đầu ra được ánh xạ, nhưng điều này sẽ cung cấp cho bạn một nền tảng tốt đẹp để tạo các lát chất lượng cao.


Xem video demo của họ trên trang nhất, nó rất ấn tượng!
joshdoe

6

Tôi quyết định cung cấp một số thông tin về cách cuối cùng tôi đã đi cho dịch vụ bản đồ lát gạch của mình. JavaScript và GeoJSON thuần túy không phải là một giải pháp, bởi vì tôi phải xử lý khoảng 40 nghìn đa giác và 33 nghìn điểm. Vì vậy, tôi đã đi ốp lát. Ồ, và tôi vẫn không có quyền truy cập vào máy chủ gốc, vì vậy tôi không thể thiết lập GeoServer hoặc một cái gì đó tương tự (sẽ không khả thi về mặt tài chính cho một khách hàng tại thời điểm này)

Sau một số nghiên cứu và đọc, cuối cùng tôi đã giải quyết được với OpenLayers (sau một số lần giới thiệu với GMaps). Cuốn sách tuyệt vời "OpenLayers 2.10" của Eric Hazzard thực sự, thực sự đã giúp tôi rất nhiều vì nó cũng bao gồm một số điều cơ bản về JavaScript và các mẹo gỡ lỗi.

Tôi đã làm tất cả dữ liệu vectơ của mình trong QGIS, tất nhiên, đó chắc chắn là cách để đi đến một freelancer nhỏ như tôi (tôi cũng biết khá nhiều công cụ ArcGIS từ trường đại học, nhưng QGIS đã cung cấp tất cả những gì tôi cần cho đến nay).

Tạo kiểu cho bản đồ và tạo ra các viên gạch là một thách thức lớn hơn. Đầu tiên, tôi đã đi cùng với " GMapCreator " của CASA, nhưng việc phân lớp nhiều shapefile tỏ ra tẻ nhạt (tôi phải cung cấp dữ liệu điểm qua đa giác, và sau đó là đường biên giới thành phố bao quanh mọi thứ). Hoàn toàn có thể làm điều này trong GMapsCreator (và tôi đã làm điều đó cho giai đoạn giới thiệu), nhưng phải mất 3 chu kỳ kết xuất hoàn chỉnh (đầu tiên bạn tạo các ô, sau đó các ô hiện có sẽ "rút tiền" với các tính năng sau - hiển thị theo đúng thứ tự là quan trọng!), và các menu kiểu dáng hơi cồng kềnh và khó hiểu. Lưu bản đồ của bạn và chỉnh sửa nó sau này cũng là một vấn đề phức tạp.

TileMill có vẻ rất hứa hẹn, đặc biệt là kiểu dáng giống CSS của họ, vì vậy tôi đã xem xét nó. Thật không may, đó chỉ là Mac hoặc Linux, vì vậy điều đó có thể khiến một số người sợ hãi. Tôi thực sự thích những gì tôi thấy, vì vậy tôi đã thiết lập phân vùng Ubuntu trên ổ cứng, tải xuống và tạo kiểu cho bản đồ của mình. Tài liệu về cú pháp tạo kiểu đôi khi hơi khan hiếm, nhưng xem video demo của họ (được liên kết trên trang web chính) trả lời hầu hết mọi thứ. Bạn có thể thực hiện một số nội dung thú vị với các kiểu lồng nhau và / hoặc có điều kiện và một số hiểu biết CSS cơ bản sẽ thực sự đưa bạn đến nơi bạn muốn.

Cuối cùng, TileMill hiển thị một tệp * .mbtiles đẹp, duy nhất. Tôi không nghĩ có một cách để hiển thị trực tiếp những thứ này trong OpenLayers (ít nhất là tôi không thể tìm thấy?), Vì vậy đã đến lúc sử dụng một công cụ khác: mbutil . Công cụ này "giải nén" mbtiles - Tập tin vào cấu trúc thư mục thông thường có chứa các lát dữ liệu của tôi trên các mức thu phóng đã chọn.

Cuối cùng, tôi đã tải tất cả các tệp này lên Máy chủ FTP của mình, đã đọc rất nhiều trên OL để khởi động sơ đồ web của bạn (bạn thêm các ô được tạo dưới dạng một lớp TMS, nhưng việc đoán đúng url và tên lớp nguồn đã mất một thời gian và googling) và sau đó đốt cháy một vài giờ xung quanh với các vấn đề html / CSS cơ bản. Tôi muốn có một bản đồ 100% chiều rộng / chiều cao với một huyền thoại nổi theo các hướng dẫn nhận dạng "công ty" của khách hàng (đó là một đô thị, như đã đề cập).

Ồ, và cho đến nay tôi sử dụng Google Maps làm các lớp cơ sở, nhưng điều đó có thể sớm được thay thế bằng một số hình ảnh trên không tùy chỉnh được cung cấp qua WMS (không phải do tôi cung cấp, nhưng là khảo sát và quản lý geodata của nhà nước).

Tôi hy vọng tôi đã không quên bất cứ điều gì quan trọng, nhưng nếu tôi đã làm, xin vui lòng hỏi! Thỉnh thoảng tôi sẽ kiểm tra chủ đề này.


Tilemill hiện cũng có sẵn cho Windows. Ngoài ra còn có một chủ đề tương đối gần đây trong danh sách gửi thư của Người dùng Openlayers về việc sử dụng mbtiles làm nguồn dữ liệu (chưa thử nó).
mờ Wilkie

Ah, cảm ơn, tốt để biết. Chắc chắn phải thử điều đó, thật khó chịu khi phải chuyển đổi giữa win7 và ubfox toàn bộ thời gian.
SAnderka

3

Nếu bạn có dưới 1000 đa giác, hãy xem xét nhận xét của @ Mapperz về giải pháp vectơ - không cần tạo và lưu trữ hình ảnh lát gạch không tương tác nếu bạn chỉ có một vài đa giác.

Hình ảnh lát gạch là tối ưu cho thông tin dày đặc như hiển thị hình ảnh vệ tinh, đường hoặc 50.000 đa giác đường điều tra dân số.

Giải pháp đơn giản nhất cho một số lượng nhỏ đa giác là chuyển đổi shapefile thành KML và tải nó lên Google My Maps.

Nếu bạn viết mã bằng Javascript, giải pháp tương tác nhiều nhất là API Google Maps (hoặc OpenLayers) để vẽ đa giác và tạo cửa sổ bật lên thông tin. Bạn có thể bắt đầu bằng cách chuyển đổi các đa giác shapefile, sử dụng thư viện GDAL, thành tệp GeoJSON (một cách lưu trữ thông tin địa lý Javascript).

Hoặc nếu bạn đã đi theo con đường lát gạch, bạn có thể lưu trữ các ô trên Amazons hoặc đám mây của Google mà không gặp rắc rối trong nhà.

Mục blog Bản đồ chuyên đề này có một bản tóm tắt hay về những lợi thế của phương pháp vectơ so với phương pháp gạch mà bạn đang xem xét.

Chúc may mắn!


Tôi thấy rằng khoảng 500 điểm được coi là vectơ trên một chế độ xem có xu hướng làm mọi thứ chậm lại khi thu thập dữ liệu. Chúng tôi gạch mọi thứ hơn 500 điểm.
Michalis Avraam

1

Tôi cảm thấy cho bạn đời của bạn, vì tôi đã dần dần làm việc theo cách của tôi để đi đến kết luận tương tự. Học được QGIS, tôi đã thử quantamnik và mapnik. Nhưng trong khi nó sẽ chuyển kiểu dáng của qgis thành một chuyến đi một chiều và các hệ thống kiểu dáng không có 1 cho 1 do đó bạn phải tìm hiểu kiểu dáng mapnik. Tôi đoán rằng điều tương tự cũng áp dụng cho chức năng xuất bản đồ qgis mapserver. Dường như không có một "cách dễ dàng" để nâng cao trình độ trên máy chủ bản đồ, chỉ cần cuốc nó và cho phép nhiều thời gian.

Mapnik, máy chủ địa lý, máy chủ bản đồ, có vẻ như tín đồ của mỗi người nhưng máy chủ bản đồ dường như là đường giữa.

Phải nói rằng có một lối tắt tôi tìm thấy và đó là qgis có một tùy chọn dòng lệnh để rasterize bản đồ qgis thành độ phân giải và giới hạn của sự lựa chọn của bạn và tạo ra một worldfile. Với điều này, bạn có thể sử dụng maptiler hoặc gdal2tiles để xếp từng lớp một. Rõ ràng sẽ không tốt cho 20 mức thu phóng, tôi cũng không biết giới hạn kích thước png tối đa là bao nhiêu.


2
MapServer của QGIS khác với MapServer.
Ian Turton

2
Do khả năng gây nhầm lẫn này, nên được gọi là Máy chủ QGIS.
underdark
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.