Từ OpenStreetMap đến Power BI: Hướng dẫn tạo bản đồ các điểm bơi hoang dã

15 tháng 4, 2026·7 phút đọc

Bài viết này chia sẻ quy trình chi tiết cách sử dụng dữ liệu OpenStreetMap và Overpass API để xây dựng bản đồ tương tác các điểm bơi lội hoang dã trên Power BI. Bạn sẽ học cách truy vấn dữ liệu, xử lý thông tin và trực quan hóa vị trí cùng hình ảnh minh họa một cách chuyên nghiệp.

Từ OpenStreetMap đến Power BI: Hướng dẫn tạo bản đồ các điểm bơi hoang dã

Tôi đam mê bản đồ! Môn thể thao chính của tôi là định hướng (orienteering), và bất cứ khi nào lên kế hoạch cho một kỳ nghỉ, món đồ đầu tiên tôi mua luôn là một tấm bản đồ của điểm đến đó. Tôi thích nghiên cứu nó, quyết định nơi sẽ đi, và tìm kiếm các chi tiết thú vị. Sau đó, tôi sẽ mua thêm các loại bản đồ chuyên biệt hơn, chẳng hạn như bản đồ của các công viên quốc gia.

Tôi cũng yêu thích việc bơi lội hoang dã! Những điểm bơi nước lạnh, trong vắt ở các dòng sông miền núi luôn mang lại niềm vui đặc biệt. Một ngày nọ, khi đang khám phá OpenStreetMap (vâng, tôi thực sự rất thích bản đồ!) để tìm kiếm những điểm đến mới, tôi nhận ra rằng hầu hết các địa điểm này đều thiếu hình ảnh. Và thật ngạc nhiên, trong một số trường hợp, tôi lại chính là người sở hữu những bức ảnh về những nơi đó!

Vì vậy, tôi quyết định đây là cơ hội tuyệt vời để thử sức với OpenStreetMap và Power BI, nhằm tạo ra một công cụ giúp tôi khám phá các điểm bơi hoang dã hiện có và bổ sung hình ảnh khi cần thiết.

Giao diện Overpass TurboGiao diện Overpass Turbo

Tìm hiểu cơ bản về OpenStreetMap (OSM)

Hy vọng rằng bạn đều biết OpenStreetMap (OSM) là một dự án bản đồ thế giới mã nguồn mở do cộng đồng đóng góp. OSM được ví như Wikipedia của bản đồ; giống như người anh em bách khoa toàn thư này, bất kỳ ai cũng có thể đóng góp dữ liệu. Việc cập nhật hoặc thêm dữ liệu rất dễ dàng, nhưng người chỉnh sửa cũng cần có trách nhiệm lớn vì các thay đổi sẽ xuất hiện ngay lập tức mà không có kiểm soát tự động.

OSM là một dự án khổng lồ với nhiều chức năng, nhưng cho dự án của chúng ta, chúng ta chỉ cần hiểu một vài khái niệm cốt lõi.

Nodes, Ways, Relations và Tags

  • Nodes (Điểm): Là khối xây dựng cơ bản nhất của OSM. Một node là một điểm đơn trên bề mặt Trái đất.
  • Ways (Đường nét): Là một chuỗi các nodes tạo thành các đường hoặc hình dạng. Nếu node đầu và node cuối của một way trùng nhau, nó sẽ trở thành một đa giác dùng để biểu diễn các khu vực như tòa nhà hoặc hồ nước.
  • Relations (Quan hệ): Dùng để liên kết các yếu tố phức tạp không thể mô tả bằng một node hoặc way duy nhất (ví dụ: tuyến xe buýt đi qua nhiều đường).

Mỗi phần tử có thể mang các Tags (Thẻ). Một tag là sự kết hợp key=value. Ví dụ, amenity=restaurantname=Central Pub cho chúng ta biết điểm đó là một nhà hàng tên là Central Pub.

Trong dự án này, chúng ta sẽ quan tâm đến các tags: name, description, leisureimage.

  • Leisure: Theo OSM, key này dùng cho các địa điểm liên quan đến hoạt động giải trí. Chúng ta sẽ lọc các đối tượng có leisure=bathing_place (nơi tắm công cộng tự nhiên) hoặc leisure=swimming_area (khu vực bơi trong khuôn viên).
  • Image: Dùng để liên kết hình ảnh minh họa cho đối tượng.

Truy vấn dữ liệu với Overpass API

Overpass là một API chỉ đọc (read-only) cho OpenStreetMap, giúp chúng ta lấy thông tin mà không lo làm hỏng dữ liệu gốc. Để truy vấn, chúng ta sử dụng Overpass Query Language (Overpass QL).

Chúng ta sẽ sử dụng Overpass Turbo, một giao diện web, để xây dựng và kiểm tra truy vấn trước khi đưa vào Power BI.

Mục tiêu của chúng ta là lấy tên, mô tả, hình ảnh, vĩ độ và kinh độ của các điểm bơi hoang dã tại Bồ Đào Nha và Tây Ban Nha.

Dưới đây là ví dụ về truy vấn để lấy các khu vực bơi tại Tây Ban Nha:

area["ISO3166-1"="ES"];
nwr[leisure=swimming_area](area);
out center;

Để mở rộng sang Bồ Đào Nha và bao gồm cả bathing_place, chúng ta viết như sau:

(
area["ISO3166-1"="PT"];
area["ISO3166-1"="ES"];
)->.iberia;
nwr[leisure=bathing_place](area.iberia)->.bath;
nwr[leisure=swimming_area](area.iberia)->.swim;
(.bath;.swim;);
out center;

Kết quả truy vấn trên bản đồKết quả truy vấn trên bản đồ

Xuất dữ liệu dạng CSV

Để dễ dàng nhập vào Power BI, chúng ta cần dữ liệu dạng bảng (CSV) thay vì XML. Chúng ta thêm dòng sau vào đầu truy vấn:

[out:csv(name,::lat, ::lon, image, description; true; ';')];

Dòng này yêu cầu trả về dữ liệu CSV, bao gồm các cột name, lat, lon, image, description, có tiêu đề và dùng dấu chấm phẩy làm phân cách.

Sau khi chạy truy vấn thành công trên Overpass Turbo, chúng ta có thể lấy liên kết (URL) từ nút Export -> raw data directly from Overpass API. Liên kết này sẽ có dạng:

https://overpass-api.de/api/interpreter?data=...

Nhập dữ liệu vào Power BI

Bây giờ, hãy chuyển sang Power BI. Mở một báo cáo trống và chọn Get data -> Web.

Nhập dữ liệu Web trong Power BINhập dữ liệu Web trong Power BI

Bạn có thể dán liên kết đầy đủ vào chế độ Basic, hoặc sử dụng chế độ Advanced để tách phần địa chỉ chung và phần mã truy vấn. Chế độ Advanced thường linh hoạt hơn nếu bạn muốn chỉnh sửa truy vấn sau này.

Sau khi nhấn OK, Power BI sẽ tải dữ liệu. Vì chúng ta đã yêu cầu tiêu đề trong CSV, nhưng đôi khi Power BI vẫn cần một chút chỉnh sửa. Nhấn Transform Data để mở Power Query Editor.

Tại đây, chọn Transform -> Use First Row as Headers (Dùng hàng đầu tiên làm tiêu đề) để chuẩn hóa tên cột.

Tiếp theo, chúng ta muốn phân biệt các điểm có ảnh và không có ảnh. Chọn Add Column -> Custom Column và nhập công thức DAX sau:

if [image]  "" then "with photo" else "without photo"

Thêm cột tùy chỉnh trong Power QueryThêm cột tùy chỉnh trong Power Query

Bây giờ dữ liệu đã sẵn sàng. Chúng ta có thể đóng và áp dụng (Close & Apply) để quay lại báo cáo chính.

Trực quan hóa dữ liệu với bản đồ

Để hiển thị các điểm trên bản đồ, chúng ta sẽ sử dụng biểu đồ Azure Maps.

  1. Thêm visual Azure Maps vào canvas.
  2. Kéo trường @lat vào Latitude.
  3. Kéo trường @lon vào Longitude.
  4. Kéo trường cột vừa tạo (ví dụ: "Photo Status") vào Legend.

Lúc này, bản đồ sẽ hiển thị các điểm bơi lội, được phân loại theo trạng thái có hoặc không có hình ảnh.

Thêm Tooltip hình ảnh

Để xem ảnh khi di chuột vào một điểm, chúng ta cần tạo một trang Tooltip.

  1. Thêm một trang mới (Page 2), chuột phải và chọn Hide (ẩn trang này khỏi thanh điều hướng).
  2. Vào Format -> Page information, đặt Page type thành Tooltip.
  3. Thêm visual Image vào trang Tooltip này và đặt trường Data là cột image từ nguồn dữ liệu của chúng ta.

Quay lại trang bản đồ chính (Page 1), chọn visual bản đồ, vào Properties -> Tooltips. Đặt Type thành Report pagePage thành Page 2.

Bây giờ, khi bạn di chuột vào một điểm có ảnh trên bản đồ, hình ảnh đó sẽ hiện lên trong khung tooltip.

Tổng kết và đóng góp

Kết quả cuối cùng là một công cụ hữu ích để lên kế hoạch cho những chuyến đi bơi lội, giúp dễ dàng xác định các điểm đến chưa có hình ảnh để bổ sung.

Bản đồ hoàn chỉnh với các điểm bơi lộiBản đồ hoàn chỉnh với các điểm bơi lội

Vì OSM là dự án cộng đồng, bạn cũng có thể đóng góp lại bằng cách tải ảnh của mình lên một máy chủ lưu trữ riêng (vì Google Photos không cung cấp liên kết trực tiếp đến file) và cập nhật tag image trên OpenStreetMap. Sau khi làm mới dữ liệu trong Power BI, điểm đến của bạn sẽ ngay lập tức được cập nhật hình ảnh.

Đây là một ví dụ tuyệt vời cho thấy sức mạnh của việc kết hợp dữ liệu mở (OpenStreetMap) với các công cụ phân tích dữ liệu như Power BI để tạo ra các ứng dụng thực tế và thú vị.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗