Theo đó, giao diện cần xây dựng đượcphân tích bao gồm 3 phần chính: Ô lựa chọn lớp dữ liệu muốn chuyển đổi toạ độ Ô lựa chọn toạ độ muốn chuyển Ô lựa chọn lưu trữ kết quả sau chuyể
XÂY DỰNG PLUGIN CHUYỂN ĐỔI TOẠ ĐỘ TRONG QGIS
Tổng quan
Chuyển toạ độ các lớp trong project hay các shapefile trong 1 thư mục
Chuyển toạ độ từ EPSG:32648 – WGS 84 / UTM zone 48N (hay toạ độ của lớp dữ liệu hiện có) sang hệ toạ độ VN2000 múi chiếu 60 kinh tuyến trục 1050 (EPSG:4756),
Chuyển đổi tọa độ từ EPSG:32648 (WGS 84 / UTM zone 48N) sang hệ tọa độ VN2000 với múi 30 kinh tuyến trục 1050 30’ (EPSG:3405) có hệ số biến dạng k=0.9999.
1.1.2 Phần mềm và ngôn ngữ lập trình sử dụng
Ngôn ngữ lập trình: Python
1.1.3 Phân tích yêu cầu, Dữ liệu sử dụng & Các công cụ cần thiết a Phân tích yêu cầu
Xây dựng một plugin để chuyển đổi tọa độ địa lý từ hệ tọa độ WGS84 hoặc hệ tọa độ hiện có của dữ liệu sang hệ tọa độ VN2000 Giao diện của plugin sẽ được thiết kế với ba phần chính để đảm bảo tính hiệu quả và dễ sử dụng.
Ô lựa chọn lớp dữ liệu muốn chuyển đổi toạ độ
Ô lựa chọn toạ độ muốn chuyển
Ô lựa chọn lưu trữ kết quả sau chuyển toạ độ
Theo yêu cầu đã được đưa ra, các tọa độ trong hệ thống thông tin địa lý được tra cứu dựa trên hệ thống trục và được hiểu một cách rõ ràng.
Toạ độ EPSG:32648 – WGS 84 / UTM zone 48N: là toạ độ địa phương quốc tế, có quy chiếu EPSG
6 mã 32648, hệ toạ độ WGS84, phương pháp chiếu UTM, múi chiếu 48N, đơn vị đo lường là mét,
Toạ độ EPSG:4756 – VN2000 là hệ toạ độ toàn cầu được áp dụng tại Việt Nam, sử dụng mã EPSG 4756 với múi chiếu 60 và kinh tuyến trục 1050 Đơn vị đo lường trong hệ này là độ.
Toạ độ EPSG:3405 - VN2000 / UTM zone 48N là hệ toạ độ địa phương của Việt Nam, sử dụng mã EPSG 3405, hệ toạ độ VN2000 và phương pháp chiếu UTM, tương ứng với múi chiếu 48N.
30, kinh tuyến trục 1050 30’, và hệ số biến dạng k
= 0.9999), đơn vị đo lường là mét.
Trước khi thiết kế một plugin cho Hệ thống thông tin địa lý trong phần mềm QGIS, cần tuân theo quy trình xây dựng và thử nghiệm gồm 5 bước chính, được thực hiện theo trình tự cụ thể.
Chuẩn bị dữ liệu thử nghiệm mã nguồn (báo cáo này sử dụng dữ liệu địa lý định dạng SHP)
Khởi tạo plugin mới sử dụng plugin hỗ trợ Plugin Builder
Tạo mã nguồn Qt cho plugin
Thiết kế giao diện plugin sử dụng Qt Designer with QGIS
Sử dụng plugin (kết hợp kiểm thử plugin, tra soát lỗi đồng thời sửa đổi mã nguồn hoặc giao diện) b Dữ liệu sử dụng
Dữ liệu địa lý của Việt Nam được truy xuất từ hệ thống OSM, với giấy phép sử dụng được cấp từ Geofabrik (https://www.geofabrik.de).
Dữ liệu tải về ở định dạng tệp zip, trong đó bao gồm các shapefile chứa thông tin địa lý Việt Nam c Công cụ cần thiết
Các công cụ được sử dụng để thực hiện chuyển đổi toạ độ đều sử dụng các Python packages và một số plugins hỗ trợ khác
OGR là một gói phần mềm hỗ trợ thực hiện các chức năng xử lý dữ liệu địa lý cơ bản trong các hệ thống thông tin địa lý mã nguồn mở.
pyrcc4: là một package đã được cài đặt sẵn trong QGIS, sử dụng như một công cụ để chuyển đổi các mã nguồn Qt thành một mô-đun Python,
Notepad++: một trình soạn thảo mã nguồn,
Plugin Builder: một plugin trong QGIS hỗ trợ tạo plugin mới,
Plugin Reloader: một plugin trong QGIS hỗ trợ làm mới plugin ngay sau khi có bổ sung, cập nhật giao diện,
PyQt là một package hỗ trợ xây dựng giao diện cho QGIS và được ứng dụng trong phần mềm Qt Designer với QGIS Package này được cài đặt đồng thời khi cài đặt QGIS.
Một số mô-đun Python khác được sử dụng trực tiếp để thiết kế mã nguồn như qgis, pyqgis.
Chuyển đổi toạ độ của một hoặc nhiều lớp dữ liệu shapefile được mở trong QGIS Đóng gói mã nguồn thành plugin có thể sử dụng được,
Báo cáo tổng kết bao gồm:
Mã nguồn plugin ở định dạng tệp zip,
Hướng dẫn cài đặt và sử dụng phần mềm QGIS và plugin.
HƯỚNG DẪN CI ĐẶT
Truy vấn dữ liệu
Dữ liệu OSM có thể truy vấn qua nhiều phương pháp khác nhau Một số nhà phát triển plugin trong lĩnh vực GIS đã tạo ra các công cụ như QuickOSM và OSMDownloader, giúp người dùng truy cập và lấy dữ liệu OSM một cách nhanh chóng và hiệu quả.
Dữ liệu thử nghiệm được lấy từ hệ thống Geofabrik, một nguồn cung cấp dữ liệu địa lý toàn cầu cho OpenStreetMap (OSM) Người dùng có thể truy cập dữ liệu này qua liên kết: http://download.geofabrik.de/asia/vietnam-latest-free.shp.zip.
Tệp vietnam-latest-free.shp.zip chứa dữ liệu địa lý được nén, bao gồm các tệp shapefile và các tệp mở rộng Shapefile, viết tắt là ESRI Shapefile (SHP), là định dạng tệp dữ liệu địa lý do Công ty ESRI phát triển, cho phép lưu trữ tối đa 2GB dữ liệu và chỉ chứa một loại định dạng địa lý duy nhất, như Points, Polyline hoặc Polygon Trong Hệ thống thông tin địa lý, shapefile được coi là Dữ liệu Vector, vì các dữ liệu trong tệp này được biểu diễn bằng các vector trong không gian.
Các shapefile có các tệp mở rộng đi kèm thông thường bao gồm các tệp sau: DBF, SHX, PRJ, CPG
Phân tích thiết kế plugin
Bước 1 – cài đặt plugin Plugin Builder, plugin Plugin Reloader và khởi tạo plugin mới: tại giao diện của phần mềm QGIS, chọn Plugins
-> Manage and Install Plugins -> Nhập “Plugin Builder 3” vào ô Search tại mục All -> Install Plugin (chờ cài đặt plugin) -> Close.
Tương tự, tìm kiếm và cài đặt plugin Plugin Reloader,
Hình 2 1 Truy cập vào trình Quản lý và Cài đặt plugin
Hình 2 2 Giao diện lưa chọn dữ liệu
Bước 2 - tạo mới plugin: trong giao diện QGIS, chọn Plugins ->
Plugin Builder -> Plugin Builder, sau đó nhập thông tin cho plugin ở trình tạo plugin mới và thực hiện theo các hướng dẫn của trình tạo,
Hình 2 3 Truy cập vào trình tạo plugin mới
Hình 2 4 Bảng điền thông tin cho plugin mới (cần cung cấp hết toàn bộ thông tin xuất hiện trong bảng)
Tất cả các thông tin xuất hiện trong bảng đều cần được cung cấp, trong đó bao gồm:
Class name – tên một lớp chức năng,
Description – mô tả về plugin,
Module name – tên thư mục lưu trữ plugin,
Version number - số phiên bản được phát hành,
Minimum QGIS version – yêu cầu về phiên bản QGIS mà plugin có thể sử dụng được,
Author / Company – tên đơn vị hoặc nhà phát triển,
Email address – email của đơn vị hoặc nhà phát triển,
Sau khi hoàn tất thông tin, nhấn Next,
Hình 2 5 Mô tả về plugin Ở màn hình xuất hiện tiếp theo, nhập vào một số mô tả về plugin Sau khi hoàn tất thông tin, nhấn Next,
Hình 2 6 Chọn chế độ cài đặt plugin vào QGIS Ở màn hình tiếp, cần điều chỉnh một số thông tin sau:
Template: chọn Tool button with dialog
Text for the menu item: nhập “Chuyển toạ độ cho Vector”
Menu: chọn Vector (plugin sẽ được thêm vào mục Vector trên thanh điều khiển của QGIS)
Sau khi hoàn tất thông tin, nhấn Next,
Hình 2 7 Các thiết lập cần thiết sau khởi tạo plugin mới (để mặc định tất cả các lựa chọn trên)
Hình 2 8 Các thiết lập tiếp theo sau khởi tạo plugin mới
In the plugin storage information screen, select the option to flag the plugin as experimental to indicate its trial nature, and then click Next.
Hình 2 9 Chọn thư mực lưu trữ bất kỳ cho plugin mới
Tại màn hình chọn thư mục lưu trữ cho plugin mới, hãy chọn và tìm đến thư mục hiển thị như trong hình xx, sau đó nhấn Generate Khi quá trình tạo plugin hoàn tất, một thông báo sẽ xuất hiện.
Hình 2 10 Thông báo tạo mới plugin thành công
- Bước 1 - khởi chạy phần mềm Qt Designer with QGIS,
- Bước 2 - mở trình tạo giao diện: giao diện Qt Designer with QGIS xuất hiện hộp thoại cho phép tìm kiếm tệp giao diện, chọn Open ->
Chọn tệp “.ui” trong thư mục lưu trữ plugin (ở ví dụ trên, tệp ui có đường dẫn sau
“D:/chuyen_doi_toa_do/chuyen_doi_toa_do_dialog_base.ui”)
Hình 2 11 Hộp thoại mở trình tạo giao diện ban đầu sau khi khởi chạy phần mềm
- Bước 3 - xây dựng giao diện: theo phân tích ban đầu, giao diện cần gồm 4 phần chính là:
Ô lựa chọn lớp dữ liệu muốn chuyển đổi toạ độ
Ô lựa chọn toạ độ muốn chuyển
Ô lựa chọn lưu trữ kết quả sau chuyển toạ độ
Hình 2 12 Thiết kế giao diện plugin Để thiết kế giao diện plugin đơn giản, sử dụng một số giao diện có sẵn trong phần Widget Box như sau:
- Phần khung ngoài, bao gồm Chọn lớp dữ liệu muốn chuyển đổi và Lựa chọn tệp đầu ra: sử dụng Group Box trong mục Containers,
- Phần Lớp dữ liệu cần đổi toạ độ: sử dụng Label trong mục Display Widgets và Combo Box trong mục Input Widgets,
- Phần Hệ toạ độ đích: sử dụng Label trong mục Display Widgets và QgsProjectionSelectionWidget,
- Phần Đặt tên cho tệp đầu ra: sử dụng Label trong mục Display Widgets và Push Button trong mục Buttons.
Sau khi hoàn thành thiết kế, hãy chọn File -> Save để lưu lại Tiếp theo, sao chép toàn bộ thư mục chứa plugin vào thư mục plugin mặc định của QGIS, với đường dẫn là “C:\Users\Admin\AppData\Roaming\QGIS\”.
QGIS3\profiles\default\python\plugins”) Sau đó, khởi chạy phần mềm
QGIS và kiểm tra kết quả.
Sau khởi chạy QGIS, mở lại trình Quản lý và Cài đặt plugin, trong mục Installed, tích chọn Chuyển đổi toạ độ để kích hoạt plugin.
Hình 2 14 Plugin sẵn sàng cho việc sử dụng
2.2.3 Thiết kế mã nguồn cho plugin
Plugin Builder giúp rút ngắn thời gian thiết kế mã nguồn cho plugin mới,giúp tiết kiệm thời gian của các nhà phát triển plugin trong các phần mềm
QGIS là một hệ thống thông tin địa lý (GIS) mạnh mẽ, trong đó Plugin Builder được sử dụng để tạo ra các tệp mã nguồn và tệp giao diện người dùng (UI) có thể chỉnh sửa Khi khởi tạo một plugin mới, ban đầu chỉ có khung bên ngoài của plugin, bao gồm tên Plugin Chuyển đổi tọa độ và các tác vụ cơ bản.
Plugin được thiết kế với giao diện rõ ràng gồm ba phần, cho phép người dùng dễ dàng chuyển đổi hệ tọa độ mà không cần quan tâm đến tọa độ gốc của lớp dữ liệu Tuy nhiên, để thực hiện việc chuyển đổi, lớp dữ liệu cần phải có thông tin về tọa độ Một nhược điểm khác là dữ liệu lưu từ giao diện không thể ghi đè, do đó người dùng cần đặt tên khác nhau cho mỗi lần sử dụng plugin Mặc dù giao diện hiện tại chưa hoàn chỉnh, plugin đã hoạt động tương đối tốt sau khi được thiết kế mã nguồn.
Quá trình thiết kế lệnh trên giao diện trở nên nhanh chóng nhờ vào các tệp mã nguồn gốc đã có sẵn Giao diện hiển thị 4 lệnh, được chia thành 2 phần chính: phần liên kết giao diện với 2 lệnh và phần thực hiện tác vụ của plugin với 2 lệnh còn lại Để thiết kế mã nguồn, Notepad++ được cài đặt và sử dụng như một trình soạn thảo mã hiệu quả.
Về phần liên kết giao diện:
Lệnh đầu tiên trong phần mềm QGIS là gọi các lớp hiện có và nhập chúng vào ô lựa chọn trong phần Lớp dữ liệu cần đổi tọa độ Ô lựa chọn này được thiết kế dưới dạng một đối tượng (object) và có tên truy vấn là mMapLayerComboBox.
Hình 2 15 Mã nguồn cho lệnh thứ nhất
Mã nguồn cho lệnh này được hiểu như sau:
layers = QgsProject.instance().layerTreeRoot().children(): tìm kiếm tất cả các lớp dữ liệu đang được mở trong phần mềm QGIS
The code snippet adds all vector data layers to the "Data Layer" selection box, specifically designed for converting the coordinates of a vector layer sourced from OpenStreetMap (OSM) This is achieved by filtering the layers to include only those of the type "QgsVectorLayer."
- Lệnh thứ hai - gọi hộp thoại cho phép đặt tên cho tệp đầu ra và lưu ở dạng shp:
Hình 2 16 Mã nguồn cho lệnh thứ hai
Lệnh này được thiết kế trong giao diện với object tên pushButton, để tương tác với object này, sử dụng lệnh self.dlg.pushButton (ô kí hiệu
Chương trình select_output_file cho phép người dùng mở hộp thoại lưu trữ để chọn đường dẫn cho tệp kết quả đầu ra Lệnh self.dlg.lineEdit.setText(filename) sẽ nhập tên tệp vào ô nhập và tự động thêm phần mở rộng, tạo ra tên tệp cuối cùng như mong muốn.
Hình 2 17 Tên tệp kết quả được trả về vào object tên lineEdit với phần mở rộng mặc định là shp
Về phần thực hiện tác vụ của plugin:
- Lệnh thứ 3 - lựa chọn hệ toạ độ đích cần chuyển đổi:
Hình xx Gọi toạ độ được chọn trong ô lựa chọn toạ độ
Trong giao diện của plugin, phần Hệ tọa độ đích được thể hiện qua đối tượng mQgsProjectSelectionWidget Để truy cập đối tượng này, sử dụng lệnh self.dlg.mQgsProjectSelectionWidget, sau đó gọi lệnh crs() để lấy thông tin về tọa độ đã chọn Thông tin này sẽ được sử dụng như một trong các tham số cho quá trình chuyển đổi tọa độ.
- Lệnh thứ 4 – tác vụ thực hiện chuyển đổi toạ độ:
Sau khi nhấn chọn nút OK tại giao diện, plugin sẽ tiến hành thực thi chuyển đổi toạ độ Mã nguồn cho lệnh này được thiết kế như sau:
Đầu tiên, khởi tạo lệnh để giao diện giao tiếp với các mã nguồn thành phần và thực thi chúng Gọi lệnh khởi tạo thực thi plugin và lưu trữ vào biến result Khi result trả về giá trị True, plugin thực hiện tác vụ khi nút OK được nhấn Lớp dữ liệu cần đổi tọa độ được chọn qua lệnh self.dlg.mMapLayerComboBox.currentLayer(), lưu vào biến selectedLayer, từ đó truy xuất nguồn dữ liệu và lưu ở biến layer_path Tiếp theo, lệnh thứ 3 truy xuất tọa độ đích và lưu ở biến destCRS Biến output_path lưu trữ tên tệp đầu ra, trong khi các thông số chuyển đổi tọa độ được xác định và lưu trữ trong biến parameter dạng Dictionary, bao gồm INPUT trỏ về layer_path, TARGET_CRS trỏ về destCRS, và OUTPUT trỏ về output_path.
The aforementioned variables, once referenced and stored, are utilized in the coordinate transformation command from Qprocessing, and the results are saved in the variable 'result' using the command processing.run('native:reprojectlayer', parameter) This command consists of the following components:
- native:reprojectlayer: thông báo tới QProcessing thực thi lệnh chuyển đổi toạ độ
- parameter: thông báo tới QProcessing các thông số sử dụng để chuyển đổi toạ độ
Cuối cùng, dữ liệu chuyển đổi tọa độ được nhập vào phần mềm QGIS và trở thành một lớp dữ liệu có thể sử dụng, mang tên đã được xác định trước Các lệnh này được thực hiện trong phần #Thêm lớp đã chuyển đổi vào giao diện QGIS.
2.2.4 Cài đặt và Sử dụng plugin
Cài đặt plugin Chuyển đổi toạ độ, bằng 2 cách:
- Cách 1: cóp toàn bộ thư mục plugin vào thư mục lưu trữ plugin của phần mềm QGIS trong thư mục
AppData/Roaming/QGIS/QGIS3/profiles/default/python/plugin/
- Cách 2: sử dụng tệp zip nén toàn bộ dữ liệu của plugin này,
Sử dụng plugin Chuyển đổi toạ độ:
- Bước 1: thêm dữ liệu OSM đã chuẩn bị vào phần mềm QGIS
- Bước 2: mở plugin Chuyển đổi toạ độ
Chọn lớp dữ liệu cần chuyển đổi toạ độ
Đặt tên cho tệp kết quả
Hình 2 19 Chuyển sang toạ độ EPSG:4756 (yêu cầu 1)
Hình 2 20 Chuyển sang toạ đô EPSG:3405 (yêu cầu 2)
Sau khi chuyển đổi dữ liệu, bước quan trọng là kiểm tra dữ liệu để đảm bảo tính chính xác Lưu ý rằng trong QGIS, dữ liệu sẽ được hiển thị theo hệ tọa độ mặc định EPSG:4326, do đó có thể không nhận thấy sự khác biệt giữa các tọa độ Để hiển thị lớp dữ liệu đúng theo tọa độ đích đã chọn, cần điều chỉnh hệ tọa độ trong chế độ render.
Hình 2 21 Dữ liệu chuyển đổi sang EPSG:4756 được hiển thị ở toạ độ render mode là EPSG:4756
Hình 2 22 Dữ liệu chuyển đổi sang EPSG:3405 được hiển thị ở toạ độ render mode là EPSG:3405
Bước 5: Sau khi hoàn tất việc thêm các lớp dữ liệu và tạo bản đồ Việt Nam hoàn chỉnh, chúng ta sẽ xuất bản đồ từ QGIS sang định dạng HTML để người dùng có thể truy cập trên web File index.html sẽ được tạo ra sau khi xuất Người dùng có thể di chuột đến các vị trí đánh dấu để xem thông tin chi tiết và tìm kiếm địa điểm thông qua ô kính lúp tìm kiếm.