Tự mình lưu trữ OpenStreetMap

OpenStreetMap (OSM) là bản đồ thế giới miễn phí được mọi người trên toàn thế giới cùng nhau tạo ra – miễn phí, mở và độc lập. Trong khi Google Maps, với tư cách là công ty dẫn đầu thị trường, thường là lựa chọn đầu tiên cho bản đồ kỹ thuật số, OSM lại dựa trên một nguyên tắc hoàn toàn khác: một cộng đồng hợp tác thu thập, cải thiện và cung cấp dữ liệu địa lý miễn phí.


Tại sao điều này lại quan trọng? Bởi vì bản đồ là kiến thức – và kiến thức phải miễn phí. Đối với các ứng dụng riêng lẻ, việc tự lưu trữ dữ liệu OSM có thể hữu ích để phát triển các giải pháp bản đồ tùy chỉnh và duy trì quyền kiểm soát dữ liệu cũng như cách trình bày dữ liệu. OSM tự lưu trữ mang lại nhiều lợi thế:

  • Sự độc lập: Bạn không phụ thuộc vào các dịch vụ bên ngoài và có toàn quyền kiểm soát dữ liệu thẻ.
  • Khả năng thích nghi: Bạn có thể tùy chỉnh kiểu dáng bản đồ và dữ liệu hiển thị theo nhu cầu của riêng bạn.
  • Bảo vệ dữ liệu: Tất cả dữ liệu được lưu trữ cục bộ. Không có API bên ngoài nào được gọi.

Có hai phương pháp chính để hiển thị bản đồ:

  • Ô lưới: Tệp hình ảnh được tạo sẵn cho nhiều mức thu phóng khác nhau. Chúng dễ triển khai nhưng kém linh hoạt trong việc tùy chỉnh kiểu bản đồ.
  • Gạch vector: Chứa dữ liệu địa lý dưới dạng vectơ (điểm, đường, đa giác) được hiển thị ở phía máy khách. Điều này cho phép điều chỉnh thiết kế bản đồ một cách linh hoạt và hiển thị sắc nét ở mọi mức thu phóng. Tuy nhiên, việc kết xuất đòi hỏi nhiều sức mạnh tính toán hơn trên thiết bị khách hàng.

Gạch vector đặc biệt phù hợp để tự lưu trữ vì chúng cung cấp nhiều tùy chọn tùy chỉnh hơn và hiệu quả hơn. Đối với các bản đồ khu vực có diện tích nhỏ hơn, thường thì dung lượng ổ cứng khoảng 1 GB là đủ. Sử dụng ổ SSD có vẻ hợp lý vì chúng mang lại lợi thế về tốc độ khi tải dữ liệu. Các ô vector tĩnh không yêu cầu máy chủ bản đồ đang chạy (ví dụ: TileServer GL hoặc Mapnik), có yêu cầu bảo trì thấp hơn và tải máy chủ ít hơn - chúng lý tưởng cho các dự án nhỏ hơn với các phần bản đồ cố định.

Gói nhỏ của tôi người trợ giúp thẩm thấu tạo điều kiện thuận lợi cho quá trình tạo và triển khai các ô vector từ .osm.pbfTập tin. Các hộp giới hạn tùy chỉnh cho phép các nhà phát triển trích xuất các khu vực địa lý cụ thể và tạo các tệp mẫu phù hợp có thể tải trực tiếp lên máy chủ. Điều này giúp việc tích hợp dữ liệu OSM vào các dự án web dễ dàng hơn nhiều. Để sử dụng osmhelper, bạn cần phải chuẩn bị một số thứ. Thư viện dựa trên các công cụ như osmi, mbutilthợ làm gạch phải được cài đặt.

Lắp đặt osmium

osmium là một công cụ mạnh mẽ để xử lý dữ liệu OSM.

mkdir osmium
cd osmium
wget https://github.com/osmcode/osmium-tool/archive/refs/tags/v1.16.0.tar.gz
tar -xzf v1.16.0.tar.gz
cd osmium-tool-1.16.0
apt-get install libosmium2-dev libprotozero-dev nlohmann-json3-dev libboost-program-options-dev libbz2-dev zlib1g-dev liblz4-dev libexpat1-dev cmake pandoc
mkdir build
cd build
cmake ..
make
make install
cd ..
cd ..
rm -rf ./osmium
exec env -i HOME=$HOME bash -l
osmium --version

Cài đặt mbutil

mbutil là công cụ dựa trên Python để làm việc với MBTiles.

git clone https://github.com/mapbox/mbutil.git
cd mbutil
python setup.py install
cd ..
rm -rf ./mbutil
exec env -i HOME=$HOME bash -l
mb-util --version

Lắp đặt máy lát gạch

tilemaker là một công cụ mã nguồn mở chuyển đổi dữ liệu OSM trực tiếp thành các ô vector.

apt install build-essential libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-system-dev lua5.1 liblua5.1-0-dev libshp-dev libsqlite3-dev rapidjson-dev
git clone https://github.com/systemed/tilemaker.git
cd tilemaker
make
make install
cd ..
rm -rf ./tilemaker
exec env -i HOME=$HOME bash -l
tilemaker --help

Tải xuống tập lệnh chuyển đổi

mkdir openstreetmap
cd openstreetmap
wget -O ./convert.sh https://raw.githubusercontent.com/vielhuber/osmhelper/refs/heads/master/convert.sh
chmod +x convert.sh

Sử dụng osmhelper

Sau khi cài đặt các công cụ cần thiết, osmhelper có thể được sử dụng để tạo các ô vector và chuẩn bị chúng để lưu trữ:

./convert.sh \
    --url https://download.geofabrik.de/europe/germany-latest.osm.pbf \
    --lat-min 47.27 \
    --lon-min 8.97 \
    --lat-max 50.57 \
    --lon-max 13.84 \
    --compress

Quá trình này giúp cung cấp các phần bản đồ tùy chỉnh một cách hiệu quả và không cần đến máy chủ bản đồ động. Việc tích hợp dữ liệu OpenStreetMap vào các dự án của riêng bạn có thể phức tạp, đặc biệt là khi liên quan đến việc lưu trữ và triển khai. Vì Google Maps độc quyền về các giải pháp lập bản đồ nên nhiều nhà phát triển đang tìm kiếm các giải pháp thay thế. osmhelper giúp bạn dễ dàng hơn trong việc bắt đầu lưu trữ dữ liệu OpenStreetMap của riêng mình. Điều này giúp bạn kiểm soát hoàn toàn bản đồ của mình, không có giới hạn API và khả năng thêm các lớp dữ liệu của riêng bạn.

Hầu hết mọi người đều biết Google Maps là giải pháp tiêu chuẩn cho bản đồ kỹ thuật số. Nhưng ít người biết rằng OpenStreetMap là một giải pháp thay thế tuyệt vời – không có hạn chế thương mại hoặc chi phí ẩn. Trong khi Google Maps tính phí sử dụng API và thu thập dữ liệu người dùng, OSM miễn phí, mở và được cộng đồng toàn cầu hỗ trợ. OSM là Wikipedia của thế giới bản đồ – bất kỳ ai cũng có thể đóng góp, thêm đường, đường mòn đi bộ hoặc POI (Điểm ưa thích) và do đó cải thiện bản đồ thế giới miễn phí.

Trở lại