QGIS và AI: tự động hóa phân tích không gian bằng agent và MCP server

Nối Claude Code với QGIS qua QGIS MCP server, viết CLAUDE.md, để agent làm batch processing, dựng model và chạy sensitivity analysis cho MAUP.

Đã duyệt độc lập · cập nhật 25/10/2026 · 54 min

1. Ba cách dùng AI trong QGIS

Video này là một module trong khóa Advanced QGIS của Spatial Thoughts, do Ujaval Gandhi trình bày. Anh mở đầu bằng câu hỏi: với AI, ta làm được gì trong QGIS? Theo Ujaval, "AI" là một từ mang quá nhiều nghĩa. Nó có thể là agentic AI, có thể là generative AI, và cũng có thể là GeoAI, tức là chạy các model deep learning trên ảnh vệ tinh. Vì vậy anh chia việc dùng AI trong QGIS thành ba cách (video đăng ngày 29/09/2026).

Cách thứ nhất là GeoAI: áp các model AI deep learning lên dữ liệu không gian. Việc này thường là chạy model deep learning để phát hiện đối tượng (object detection), phân vùng (segmentation), phân loại (classification) và những việc tương tự. Phần lớn nó thuộc mảng viễn thám (remote sensing): bạn có dữ liệu vệ tinh, có ảnh hàng không, và muốn phát hiện thứ gì đó trong ảnh. Ví dụ anh đưa ra: bạn có một tấm ảnh và muốn tìm tất cả con đường trong đó, rồi tự động trích xuất và chuyển chúng thành một vector layer. Việc đó có thể dùng một model deep learning được train trên dữ liệu không gian (video đăng ngày 29/09/2026).

Cách thứ hai là các model hỗ trợ việc thủ công. Đây là những thứ như khi bạn đang số hóa (digitize) dữ liệu, AI giúp bạn số hóa nhanh hơn. Tức là trong lúc bạn đang tự làm việc trong QGIS, có những model AI, chạy local hoặc chạy trên cloud, giúp bạn làm các việc đó nhanh hơn. Ujaval gọi đó là các assistance model dùng được trong QGIS (video đăng ngày 29/09/2026).

Cách cuối cùng là AI agent: AI có thể điều khiển và "lái" QGIS, giúp bạn làm việc trong QGIS. Bạn mô tả task bằng ngôn ngữ đơn giản, và agent đi thực hiện task đó trong QGIS. Theo anh, đây là những công cụ đa dụng hơn cho loại task như vậy (video đăng ngày 29/09/2026).

Đó là ba nhóm. Ujaval sẽ đi qua một vài lựa chọn cho hai nhóm đầu, rồi đi sâu vào cách dùng AI agent với giao diện QGIS (video đăng ngày 29/09/2026).

1. GeoAImodel deep learningtrên ảnh vệ tinh, ảnh baydetection, segmentation,classification 2. AI hỗ trợtăng tốc việc thủ côngdigitize, georeferencemodel chạy localhoặc trên cloud 3. AI agentđiều khiển QGISmô tả task bằng lời,agent tự thực hiện(trọng tâm của video)
Hình 1.1Ba nhóm AI trong QGIS theo cách Ujaval chia ở đầu video (đăng ngày 29/09/2026); phần lớn thời lượng dành cho nhóm thứ ba.

2. GeoAI: Mapflow, TerraLab, plugin GeoAI và lựa chọn Python

Với deep learning, có khá nhiều plugin. Plugin đầu tiên Ujaval nhắc tới là Mapflow for QGIS. Theo anh (video đăng ngày 29/09/2026), cài xong plugin thì bạn cần đăng ký một tài khoản, nạp một ảnh vệ tinh bất kỳ, nói "tôi muốn phát hiện các tòa nhà" rồi bấm một nút. Plugin dùng một model trên cloud chạy trên ảnh của bạn, và bạn nhận về các polygon cho những tòa nhà có trong ảnh.

Slide Using Deep Learning and GeoAI với mục Mapflow for QGIS
Slide "Using Deep Learning and GeoAI": Mapflow for QGIS phát hiện và trích xuất đối tượng thật từ ảnh vệ tinh, dùng các model chạy trên cloud cho tòa nhà, đường và rừng, có free tier giới hạn và gói trả phí cho mức dùng cao hơn (theo slide trong video đăng ngày 29/09/2026).

Theo Ujaval, Mapflow khá dễ dùng vì nó dùng model trên cloud: bạn không phải cài gì thêm. Chỉ cần cài plugin, đăng ký tài khoản là làm được. Có một free tier để bạn thử xem nó chạy ra sao, và có nhiều model khác nhau cho các loại object detection khác nhau (tính đến video đăng ngày 29/09/2026).

Lựa chọn tiếp theo là một model segmentation của công ty TerraLab (AI Segmentation). Đây cũng là một plugin QGIS, cùng mô hình như trên: bạn đăng ký tài khoản, trả tiền theo mức dùng, và phát hiện được nhiều loại đối tượng khác nhau. Theo Ujaval, cái này nâng cao hơn một chút: bạn có thể nói "tôi muốn phát hiện đối tượng này", bấm vào, chẳng hạn, một bể bơi, rồi nó đi tìm tất cả các bể bơi. Nghĩa là bạn phát hiện được mọi loại đối tượng, không chỉ các đối tượng đã được train sẵn trong model của họ (theo video đăng ngày 29/09/2026).

Thứ ba là plugin GeoAI của Dr. Qiusheng Wu. Ujaval mô tả đây là lựa chọn hoàn toàn miễn phí, chạy local: có nhiều model pre-trained để tải về và chạy trên máy của bạn. Nó miễn phí vì chạy trên phần cứng của chính bạn, với dữ liệu bạn đang có. Nhưng để nó chạy tốt thì bạn cần một GPU tốt, và đó là điểm nghẽn: muốn chạy model deep learning thì cần GPU. Có GPU thì bạn chạy được các model đó trên máy mình. Việc cài đặt cũng hơi rắc rối vì phải cài một số dependency local. Dù vậy, theo anh đây là một lựa chọn ổn cho ai muốn thử làm GeoAI trên máy mình (tất cả theo video đăng ngày 29/09/2026).

Ujaval thêm một lời khuyên: nếu bạn biết chút Python và muốn làm việc này ở quy mô lớn, nếu bạn nghiên cứu GeoAI, hoặc muốn học và hiểu các model này chạy thế nào, thì Python sẽ là lựa chọn tốt hơn nhiều. Theo anh, các model GeoAI truy cập được qua Python một cách rất đơn giản. Nếu bạn biết một chút Python, biết chạy code trong notebook, bạn có thể chạy việc này trong một cloud notebook có GPU miễn phí và nhận kết quả tốt hơn nhiều so với chạy bên trong QGIS (theo Ujaval, video đăng ngày 29/09/2026).

3. AI hỗ trợ việc thủ công: AI Vectorizer và AI Georeferencer

Nhóm AI assistant tiếp theo là các model thường chạy trên cloud và giúp bạn làm xong một số task nhanh hơn. Ujaval giới thiệu AI Vectorizer: khi bạn đang số hóa một đối tượng, công cụ nhìn vào bản đồ nền và cố tự hoàn thành polygon đó cho bạn, để bạn không phải bấm vào từng vertex. Nếu bạn làm số hóa dữ liệu, nó giúp tăng tốc workflow (theo video đăng ngày 29/09/2026).

Anh phân biệt rõ: đây không phải object detection hoàn chỉnh. Trong thế giới GeoAI, bạn chỉ có bản đồ hoặc ảnh, và model trả cho bạn polygon. Ở đây, dữ liệu của bạn lộn xộn hơn nhiều, có thể là bản đồ scan hoặc hồ sơ scan, và bạn đang tự vẽ các đường đó; công cụ giúp bạn tự hoàn thành. Bạn bấm một vertex, bấm vertex tiếp theo, và nó lấp đầy các vertex ở giữa (theo mô tả của Ujaval, video đăng ngày 29/09/2026).

Ngoài ra còn có AI Georeferencer. Bạn có một tấm ảnh và muốn georeference nó. Thay vì tự đi tìm xem tấm ảnh nằm ở đâu và tự tìm từng điểm khống chế, bạn chỉ cần đưa một khu vực chung chung, kiểu "tôi biết ảnh này nằm quanh khu vực này", và nó tự georeference ảnh trong QGIS (theo video đăng ngày 29/09/2026).

Ujaval tóm lại: đây là những việc thủ công mà bạn có thể tự động hóa bằng các model AI. Và điều cần biết về các model AI là chúng tốn rất nhiều compute để chạy, cần GPU rất đắt tiền. Vì thế, theo anh, tất cả các dịch vụ này đều trả phí, nhưng đều có free tier để bạn thử xem có hợp với mình không (tính đến video đăng ngày 29/09/2026).

Tự số hóa: bấm từng vertex AI Vectorizer: bấm hai vertex, công cụ lấp các vertex ở giữa
Hình 3.1Ý tưởng của AI Vectorizer như Ujaval mô tả (video đăng ngày 29/09/2026): bạn vẫn là người vẽ, công cụ chỉ tự hoàn thành phần giữa hai lần bấm.

4. Agent là gì: vòng lặp hỏi model, làm, kiểm tra

Cuối cùng là cách tự động hóa đa dụng nhất với QGIS: dùng coding agent. Ujaval nói sẽ giải thích một chút agent là gì, rồi cho xem các lựa chọn tích hợp với QGIS (video đăng ngày 29/09/2026).

Theo anh, AI agent là một cách để chạy LLM. Ai cũng đã dùng chatbot và LLM. AI agent là cách dùng LLM để hoàn thành task một cách tự động (autonomously). Thay vì bạn viết prompt, lấy câu trả lời rồi tự làm gì đó, agent có thể prompt model, nhận câu trả lời, làm task, kiểm tra xem task đã xong chưa, tự sửa lỗi, rồi đưa kết quả cho bạn. Nó làm tất cả những việc đó mà bạn không phải tự làm từng bước. Vì vậy, theo Ujaval, agent rất hợp với các workflow nhiều bước, đúng loại việc lớp học vẫn làm: bạn muốn giải một bài toán gồm nhiều bước, và thay vì tự làm từng bước, bạn nói với agent bạn muốn gì (video đăng ngày 29/09/2026).

Anh tả vòng lặp bằng ví dụ QGIS. Agent hỏi LLM: "tôi nên làm việc này thế nào?" Model có thể trả lời: "hãy chạy tool buffer". Agent đi chạy tool đó, và cũng có thể kiểm tra xem tool chạy ổn không: agent có thể chụp màn hình QGIS và hỏi "buffer trông có ổn không?". Nếu ổn thì xong. Nếu tool lỗi, agent gửi lỗi đó cho LLM: "tool của tôi báo lỗi này, tôi nên làm gì?", và LLM gợi ý bước tiếp theo để agent thực hiện (video đăng ngày 29/09/2026).

Như vậy agent có tính năng vòng lặp (loop) để tự tìm ra việc cần làm. Nó hỏi model chuyện gì đã xảy ra, nên làm gì. Bạn hỏi LLM "làm thế nào?", nó nói "đây là ba bước". Agent đi làm ba bước đó, quan sát xem chuyện gì đã xảy ra: có lỗi không, kết quả ra sao. Nếu ổn thì dừng. Nếu có sai sót hoặc cần cải thiện thì nó lặp lại vòng đó (video đăng ngày 29/09/2026).

Theo Ujaval, điều này đã thay đổi hoàn toàn cách chúng ta làm việc với phần mềm, vì giờ agent tự sửa được lỗi của mình mà bạn không phải ngồi "trông" (babysit) các model. Và theo anh, các model ngày càng thông minh hơn, nên bạn có thể tự động hoàn thành rất nhiều task. Giờ đã có cách nối loại hệ thống agentic này vào QGIS để bạn tự động hóa QGIS (tất cả là nhận định của anh trong video đăng ngày 29/09/2026).

Agentnhận task từ bạn Hỏi LLM"làm thế nào?" Chạy toolvd. buffer trong QGIS Quan sátlỗi? screenshot ổn? ổn thì dừng, lỗi thì gửi lỗi cho LLM và lặp lại
Hình 4.1Vòng lặp agent theo ví dụ buffer của Ujaval (video đăng ngày 29/09/2026): agent hỏi model, chạy tool, kiểm tra kết quả, và chỉ dừng khi kết quả ổn.

5. Ba lựa chọn agent cho QGIS: Kue, TerraLab AI Agent và QGIS MCP

Vậy có những lựa chọn nào? Theo Ujaval, một trong những agent đầu tiên làm riêng cho QGIS là agent tên Kue (Q đánh vần là K-U-E), giống như một chatbot bên trong QGIS. Bạn yêu cầu nó làm gì đó và nó đi thực thi. Anh mô tả đây là agent được build riêng cho QGIS: được train trên dữ liệu về QGIS, tài liệu QGIS, và làm được nhiều việc thú vị (theo video đăng ngày 29/09/2026).

Slide AI Agents for QGIS với hai mục Kue và TerraLab AI Agent
Slide "AI Agents for QGIS": Kue là AI assistant nhúng trong QGIS, làm geoprocessing, tải dữ liệu và truy vấn SQL bằng ngôn ngữ tự nhiên, cần subscription trả phí; TerraLab AI Agent là plugin thêm một khung chat AI vào QGIS, có các tính năng riêng cho QGIS như checkpoint để hoàn tác và data connector (theo slide trong video đăng ngày 29/09/2026).

Gần đây, theo Ujaval, có thêm một agent nữa là TerraLab AI Agent. Anh nhận xét đây là phiên bản trau chuốt hơn nhiều, trông rất hoàn thiện nếu bạn muốn dùng một hệ thống agentic bên trong QGIS mà không phải học agent hoạt động thế nào, không cần setup gì: chỉ cần cài plugin, đăng ký tài khoản, và nó bắt đầu chạy. Nó có vài tính năng anh thấy rất hay (tất cả theo video đăng ngày 29/09/2026).

Một điểm của agent, theo Ujaval: bạn có thể bảo nó "đi sửa đối tượng này trong dữ liệu của tôi", và nó đi làm. Đôi khi nó làm hỏng và để dữ liệu của bạn ở trạng thái sai. Plugin TerraLab có một tính năng hay: mỗi lần agent làm gì đó, trạng thái được lưu thành một checkpoint, và bạn luôn quay lại được, kiểu "ồ, việc này không ổn, nó mắc lỗi, quay lại thôi". Tất cả đều có sẵn trong plugin. Nó cũng có data connector: bạn có thể nói "tôi muốn nạp ranh giới hành chính của châu Phi", và nó đi tìm đúng kho dữ liệu rồi nạp dữ liệu vào. Theo anh, nó biết về tất cả các nguồn dữ liệu đó (theo video đăng ngày 29/09/2026).

Ujaval đánh giá đây là một agent rất tốt, được build riêng cho công việc GIS. Nếu bạn muốn một agent mà không phải bận tâm học gì về agentic AI hay cách chạy MCP server, thì đây giống như một giải pháp một cú bấm, và theo anh có vẻ chạy khá tốt (nhận xét trong video đăng ngày 29/09/2026).

Lựa chọn thứ ba là một dự án mã nguồn mở cho phép nối bất kỳ AI coding agent nào vào QGIS, để agent hành động và làm việc trong QGIS. Theo Ujaval, agentic AI đã trở nên khá phổ biến: ai cũng dùng nó để build phần mềm và làm việc với coding agent. Nhưng để coding agent hành động trong QGIS thì cần một connector: agent phải "với" được vào QGIS và nói "tôi muốn nạp layer này, làm thế nào?". MCP server chính là thứ cung cấp kết nối đó (theo video đăng ngày 29/09/2026).

Đây là hệ thống mã nguồn mở, nối được với mọi coding agent, nhưng bản thân coding agent thì cần subscription trả phí, vì theo Ujaval chạy các model đó rất tốn kém, cần GPU đắt tiền, nên các nhà cung cấp tính tiền khi bạn dùng agent. Dù vậy, anh cho rằng đây là giải pháp linh hoạt nhất: nếu bạn sẵn lòng học các hệ thống agentic, bạn dùng được nó không chỉ với QGIS mà với mọi thứ khác. Với những người trong giới GIS muốn nâng cấp kỹ năng (upskill) và tìm hiểu cách dùng agent cho QGIS lẫn mọi việc khác, anh xem đây là một trong những lựa chọn tốt nhất: dùng coding agent bạn thích, mua subscription, rồi dùng nó với QGIS và cả những việc khác (tất cả là nhận định của Ujaval, video đăng ngày 29/09/2026).

Phần còn lại của video tập trung vào QGIS MCP: cách nối nó và dùng coding agent để điều khiển QGIS (video đăng ngày 29/09/2026).

6. QGIS MCP server: cài hai bước, 125 tool và giới hạn của PyQGIS

Ujaval giới thiệu QGIS MCP server là một dự án mã nguồn mở hỗ trợ mọi coding agent, tức là không phụ thuộc bạn dùng coding agent nào. Bạn thích Claude Code, hay có subscription Codex, Gemini, hoặc OpenCode, cái nào cũng được. Yêu cầu duy nhất là agent phải hỗ trợ MCP server, và theo anh mọi coding agent hiện đại đều hỗ trợ (tính đến video đăng ngày 29/09/2026). Server này cho coding agent tương tác với QGIS.

Theo Ujaval, nó làm được nhiều thao tác: nạp dữ liệu, chạy processing algorithm, dựng model. Nó cũng chụp được screenshot và render bản đồ. Nó còn chạy được script tùy ý: nếu bạn bảo "viết một Python script rồi chạy", nó cũng làm được (theo video đăng ngày 29/09/2026).

Anh mở trang chủ của dự án, một GitHub repository cho QGIS MCP server (nkarasiak/qgis-mcp). Việc cài đặt gồm hai bước. Có một plugin chạy một server local mà MCP server gọi tới để làm việc trong QGIS. Bạn cài plugin này và khởi động MCP server bên trong QGIS, rồi nối bất kỳ coding agent nào vào. Nếu dùng Claude Code, bạn chạy một lệnh trên máy, và lệnh đó thêm MCP server này vào danh sách MCP server của agent. Các coding agent khác cũng tương tự: nếu dùng OpenCode thì README có hướng dẫn riêng cho OpenCode. Theo anh, đầu tiên bạn thêm MCP server vào coding agent mình đang dùng, rồi cài plugin QGIS (theo video đăng ngày 29/09/2026).

README của repo nkarasiak/qgis-mcp trên GitHub, mục Tools (125) với bảng tool theo nhóm
README của repo qgis-mcp, mục "Tools (125)": các tool chia theo nhóm Project (load_project, save_project...), Layers (get_layers, add_vector_layer, create_memory_layer...), Features, Fields, Editing, Styling (theo màn hình trong video đăng ngày 29/09/2026).

Nó làm được những gì? Theo Ujaval, tại thời điểm quay video, server có 125 tool (video đăng ngày 29/09/2026; README cũng ghi 125 MCP tools, đọc ngày 25/10/2026). Nó nạp được project, nạp layer, lấy thông tin về layer. Nó sửa được feature nếu bạn muốn. Nó render được bản đồ. Về processing, nó chạy được tất cả processing tool. Nó tạo được print layout và setup giúp bạn. Nó cũng lấy được danh sách plugin, và có thể chạy chức năng từ chính các plugin nếu bạn muốn.

Ujaval nêu một giới hạn của MCP server này: nó đi qua PyQGIS API. QGIS có một Python API cho phép bạn chạy code Python để làm việc trong QGIS, và MCP server dùng API đó. Nghĩa là nó không làm được những việc không có API. Có những phần của QGIS không có API, chỉ có một nút để bạn tự bấm. Vì vậy MCP server không làm được những việc đòi hỏi chính bạn thao tác, trong đó có số hóa feature: nó không thể vẽ một đường trên bản đồ, vì không có API kiểu "thêm vertex tiếp theo vào đường của tôi" (theo Ujaval, video đăng ngày 29/09/2026).

Có một số phần không làm được, nhưng theo anh phần lớn QGIS, phần lớn các workflow phân tích của bạn, đều đi qua được MCP server này và bạn điều khiển được QGIS (nhận định trong video đăng ngày 29/09/2026). Tiếp theo anh sẽ đi qua phần setup agent, rồi bắt đầu dùng nó, và cuối cùng là vài gợi ý về best practice: khi nào nên dùng, khi nào không.

Coding agentClaude Code, Codex... MCP servercài vào agent Plugin QGIS MCPserver local trong QGIS PyQGIS APIchỉ làm được gì có API không có API (vd. vẽ từng vertex khi số hóa) thì agent không làm được
Hình 6.1Đường đi của một lệnh từ coding agent tới QGIS theo phần giải thích của Ujaval (video đăng ngày 29/09/2026), và lý do giới hạn: mọi thứ phải đi qua PyQGIS API.

7. Chuẩn bị máy: coding agent, Conda, GDAL và VS Code

Trước khi dùng, máy cần được setup vài thứ. Thứ đầu tiên là một coding agent, và một subscription nếu coding agent đó đòi hỏi, mà theo Ujaval phần lớn đều đòi hỏi (tính đến video đăng ngày 29/09/2026). Trong video anh dùng coding agent Claude Code. Nhóm của anh đã soạn một hướng dẫn từng bước cách cài và cấu hình nó trên máy, có cho Windows, Mac và Linux. Theo anh, Claude Code yêu cầu bạn đăng ký và mua một gói; các hệ thống agentic thường nằm trong bản Pro chứ không có trong bản miễn phí của các model phổ biến, vì chúng dùng rất nhiều token và việc đó thường tốn tiền (theo video đăng ngày 29/09/2026). Có subscription rồi thì bạn cài coding agent và cấu hình theo hướng dẫn.

Giả sử Claude Code đã được setup, đăng nhập và chạy ổn, bước tiếp theo là cài Python và có một conda environment. Ngôn ngữ mà agent dùng để tương tác với QGIS là Python. Để điều phối công việc, agent sẽ tạo ra một số Python script mới, nên nó cần một cách để chạy code Python. Nhóm cũng sẽ cài một số Python package, vì theo Ujaval với phần lớn việc geospatial, nếu bạn bảo agent làm gì đó phức tạp hơn một chút, nó sẽ nói "dùng một Python package sẽ dễ hơn, rồi dùng QGIS cho các task còn lại". Vì vậy cần một cách để cài Python package, và anh dùng Conda cho việc này (theo video đăng ngày 29/09/2026).

Anh đoán trước câu hỏi của những người không đến từ mảng geospatial: sao lại là Conda? Sao không dùng uv hay pip, vốn phổ biến hơn? Lý do, theo Ujaval, là trong thế giới geospatial có một thứ gọi là GDAL, thư viện chính để đọc và ghi dữ liệu không gian. GDAL không có bản cài thuần Python; nó có một binary cần cài. Vì thế phải đi qua Conda, Mamba hoặc Pixi. Đó là lý do phải cài một package manager khác chứ không chỉ dùng uv hay pip mặc định (video đăng ngày 29/09/2026).

Nhóm có một hướng dẫn cài Conda: bạn tải Miniconda về, cài và setup. Hướng dẫn có phần FAQ về một số hạn chế của Conda và các lựa chọn thay thế. Setup xong, bạn tạo một environment để cài package. Ujaval cho xem trên máy: khi đã cài Miniconda và mở một terminal (trên Windows là terminal PowerShell, trên Mac và Linux là terminal thường), bạn bắt đầu ở base environment, environment mặc định. Theo anh, bạn không bao giờ nên cài gì vào base environment. Mỗi khi làm một project, hãy tạo một environment mới và cài thứ mình cần vào đó. Cho lớp học, nhóm tạo một environment tên qgis_mcp và cài vài package cơ bản cần cho các ví dụ. Trang hướng dẫn hiện trên màn hình ghi các lệnh này (video đăng ngày 29/09/2026):

conda create --name qgis_mcp -y
conda activate qgis_mcp
conda install -c conda-forge uv geopandas matplotlib

Cài xong thì bạn activate được environment. Mỗi lần muốn khởi động agent, bạn activate environment này trước, và dấu nhắc lệnh sẽ đổi để cho thấy bạn đang ở trong environment qgis_mcp. Environment này có Python và mọi package cần cho agent (video đăng ngày 29/09/2026).

Bạn cũng sẽ cần sửa file, nên cần một editor tốt. Ujaval khuyên dùng Visual Studio Code. Theo anh, phần setup này hơi khó với người mới, nên nhóm có hướng dẫn cài riêng. Điều chính là sau khi cài xong, bạn cấu hình để mở được VS Code từ terminal. Trên Mac có thêm một bước: nếu cài Visual Studio Code lần đầu trên Mac, hãy chắc chắn đã làm bước cài lệnh local đó. Cần thêm vài extension để dùng Python (video đăng ngày 29/09/2026).

Phần quan trọng là đặt VS Code làm editor mặc định. Theo Ujaval, khi bạn đang ở trong coding agent, mỗi lần agent có câu hỏi cho bạn, nó sẽ bảo bạn gõ. Nếu bạn viết thứ gì đó dài hơn, nó sẽ bật một editor lên cho bạn viết. Nếu chưa đặt editor mặc định, editor bật lên có thể là thứ bạn không biết dùng. Vì vậy hãy đặt VS Code làm mặc định, để mỗi khi agent cần bạn nhập văn bản dài thì nó bật đúng editor (theo video đăng ngày 29/09/2026).

1. Coding agentClaude Code + gói trả phí 2. Condaenv qgis_mcp (vì GDAL) 3. VS Codeeditor mặc định 4. MCP serverplugin + lệnh cấu hình
Hình 7.1Thứ tự chuẩn bị Ujaval đi qua (video đăng ngày 29/09/2026) trước khi nối agent với QGIS.

8. Cài plugin QGIS MCP và nối Claude Code với server

Khi đã xong tất cả (editor đã đặt, Python và các package đã cài, agent đã setup), bạn setup MCP server. Đây là quy trình hai bước (video đăng ngày 29/09/2026).

Bước một: cài plugin MCP server trong QGIS. Ujaval mở QGIS, vào Plugin Manager và tìm plugin tên QGIS MCP. Theo anh, có nhiều phiên bản, nên hãy chắc chắn tìm đúng cái: nhìn logo, đây là logo đúng của plugin này (theo video đăng ngày 29/09/2026). Cài xong, plugin cho phép agent "với" vào QGIS và làm việc.

Để agent với vào QGIS, bạn cần khởi động một server local. Mỗi lần muốn dùng coding agent với QGIS, bạn chọn "Run MCP", và nó sẽ setup. Lần đầu làm việc này, một hộp thoại sẽ bật lên; bạn chỉ cần đóng nó, và lúc nào cũng khởi động được MCP server. Khi plugin báo server đang bật, nghĩa là nó đã nhận được lệnh từ MCP server và thực thi chúng trong QGIS. Ujaval chỉ thêm một tùy chọn để server tự khởi động khi QGIS mở: nếu dùng thường xuyên, bạn bật nó lên, mỗi lần QGIS khởi động là server tự chạy và bạn không phải lo. Hãy chắc chắn server đang bật; plugin hiển thị số port. Server chạy rồi thì phía QGIS coi như xong (theo demo trong video đăng ngày 29/09/2026).

Bước hai: cài MCP server vào coding agent. Ujaval activate environment có Python, rồi chạy lệnh cấu hình. Lệnh tùy thuộc coding agent bạn dùng. Nếu dùng Claude Code, đây là lệnh bạn copy, dán và chạy (như trên màn hình trong video đăng ngày 29/09/2026):

conda activate qgis_mcp
claude mcp add -s user qgis -- uvx --from https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip qgis-mcp-server

Theo Ujaval, lệnh này chỉ cấu hình Claude Code, kiểu "này, đây là QGIS MCP server, tôi nhờ bạn làm việc trong QGIS, hãy tìm nó ở đây" (video đăng ngày 29/09/2026). README của repo, đọc ngày 25/10/2026, cũng ghi cờ -s user lưu cấu hình vào ~/.claude.json cho mọi project của bạn.

9. Mở agent trong thư mục dự án, kiểm tra bằng /mcp và ping qgis

Xong bước đó thì khởi động coding agent. Theo Ujaval, coding agent thường chạy trong terminal. Có extension cho editor, nhưng theo anh giao diện tốt nhất để làm việc với chúng là terminal (video đăng ngày 29/09/2026).

Anh nói agent "vui nhất" khi ở trong một thư mục: chúng thường làm việc bên trong thư mục. Việc này cũng giúp bạn giới hạn agent, kiểu "đừng làm gì ngoài thư mục này". Với lớp học, thư mục được dùng là thư mục advanced_qgis, vì toàn bộ dữ liệu nằm ở đó, và ý là "bạn đang chạy việc QGIS, phải ở trong thư mục này". Trên máy anh, thư mục nằm trong Downloads. Anh dùng lệnh cd để vào thư mục advanced_qgis, và khi đã ở trong thư mục thì khởi động coding agent (video đăng ngày 29/09/2026).

Dù dùng coding agent nào, Ujaval nhắc phải làm hai việc: đã activate conda environment, và đã vào đúng thư mục; rồi mới khởi động agent. Anh dùng Claude Code, và cách khởi động Claude Code chỉ là gõ claude (video đăng ngày 29/09/2026).

cd Downloads/advanced_qgis
claude

Lần đầu chạy, Claude Code hỏi: bạn đang chạy trong thư mục này à, bạn có tin thư mục này không? Theo Ujaval, nếu trả lời có, nghĩa là nó sẽ không hỏi quyền khi sửa file trong thư mục đó (theo video đăng ngày 29/09/2026). Agent đã chạy thì bạn kiểm tra xem MCP server có sẵn chưa. Trong Claude Code, lệnh là /mcp. Trên màn hình, mục qgis báo đã connected với 125 tool. Theo anh, đó là toàn bộ setup cần thiết: khi thấy agent khởi động được, tìm được QGIS MCP server và có dấu tick xanh, bạn đã sẵn sàng dùng agent (demo trong video đăng ngày 29/09/2026).

Giờ agent đã nối với QGIS. Một cách để kiểm tra kết nối là gõ prompt này (video đăng ngày 29/09/2026):

ping qgis

Đây chỉ là một lệnh thử. Nó đi tới MCP server, MCP server đi tới QGIS và hỏi "tôi có với tới bạn không?". Nếu tới được, nó trả lời là đã nhận. Trên màn hình, Claude Code (chạy Opus 5.5 với gói Claude Pro) trả lời: "QGIS responded to the ping, so the QGIS plugin server is connected." Ujaval kết luận mọi thứ đã nối và bắt đầu nhập prompt được (demo trong video đăng ngày 29/09/2026).

10. Project instructions: file CLAUDE.md cho QGIS

Trước khi làm bất cứ gì với QGIS hay với agent, Ujaval nói cần setup thứ gọi là project instructions. Nó cho phép bạn định nghĩa cách agent hành xử trong project của bạn, và cũng thêm các guardrail kiểu "tôi muốn làm việc với dữ liệu của mình theo cách này". Theo anh, mọi chỉ dẫn bạn thêm vào sẽ được thêm vào mỗi prompt: mỗi lần bạn bảo agent làm gì, nó đọc các chỉ dẫn đó trước, "chỉ dẫn của tôi khi làm việc trong thư mục này là gì?", rồi làm theo (theo video đăng ngày 29/09/2026). Anh nhấn mạnh việc này cực kỳ quan trọng.

Nhóm sẽ đưa vào file chỉ dẫn tất cả những gì Ujaval đã dạy trong lớp. Nghĩa là khi agent làm việc với QGIS, nó làm theo các best practice anh đã dạy. Nếu bạn có cách làm riêng, bạn thêm chỉ dẫn của mình và tùy chỉnh cách QGIS được dùng. Trong Claude Code, bạn tạo file CLAUDE.md. Theo anh, trên các hệ thống agentic khác tên file là AGENTS.md, nên nếu dùng agent khác thì tạo file đó (video đăng ngày 29/09/2026).

Cách tạo file trong Claude Code là gõ /memory. Nó hỏi bạn muốn loại chỉ dẫn nào. Có chỉ dẫn cấp user: dù đang làm ở thư mục nào, luôn đọc các chỉ dẫn này; chúng áp cho mọi project, gọi là CLAUDE.md cấp user. Còn thứ nhóm sẽ làm là chỉ dẫn cấp project: khi làm việc trong thư mục này thì theo các chỉ dẫn này. Ujaval chọn project instructions, và nó mở editor; với anh, mặc định là VS Code nên VS Code mở ra (theo demo trong video đăng ngày 29/09/2026).

Anh nhắc: nếu chưa đặt editor mặc định, trên phần lớn máy sẽ có một editor tên vi, và nó rất khó dùng. Nhiều học viên của anh bị kẹt trong vi. Anh kể mình đã dùng vi 10 năm và rất thích nó, nhưng đó là một editor rất khó dùng. Nên nếu VS Code không mở ra, hãy quay lại đọc hướng dẫn setup VS Code để đặt nó làm editor mặc định (video đăng ngày 29/09/2026).

Đây là file CLAUDE.md Ujaval copy và dán vào, đúng như trên màn hình VS Code:

# QGIS Rules and Preferences

## Inputs and Outputs

- Never modify my input data sources and layers. Always create a new layer with your edits.
- Create temporary memory layers for all intermediate outputs.
- Always use GeoPackage as the format for saving the outputs, unless specified otherwise.

## Processing Algorithms

- Search the available algorithms and check if they can carry out the required tasks.
  - If there are multiple algorithms, prefer the native QGIS algorithms.
- Always prefer built-in processing algorithms rather than writing your own.

## Spatial Index

- If you are running a processing algorithm that uses a spatial query or an overlay, check if the spatial index exists on the input layers, and if not, create one using the processing algorithm. `Create Spatial index`.
  - Check if the spatial index already exists first.
  - QGIS creates a spatial index for point layers automatically, so do this only for line and polygon layers.
- When creating models, add the spatial index step to create a spatial index on intermediate layers where it is required.

# Other Preferences

- Always install python packages in a conda environment. Never install anything in the base environment. Ask the user for confirmation on their preferred conda environment before installing anything.
VS Code mở file CLAUDE.md với các mục QGIS Rules and Preferences
File CLAUDE.md trong VS Code: các mục Inputs and Outputs, Processing Algorithms, Spatial Index và Other Preferences, đúng nội dung khối ở trên (màn hình trong video đăng ngày 29/09/2026).

Ujaval giải thích từng phần. Inputs and outputs: không bao giờ sửa dữ liệu đầu vào của tôi. Theo anh, đôi khi agent nghĩ cập nhật dữ liệu là một ý hay; như anh đã nói trong lớp, sửa input không bao giờ là ý hay, nên nhóm ghi rõ cho agent "đừng làm việc này". Với các layer trung gian, dùng memory: đừng làm bừa ổ cứng và thư mục của tôi bằng các layer trung gian. Và dùng GeoPackage làm định dạng ưu tiên; như lớp đã học, GeoPackage trong QGIS cho bạn nhiều linh hoạt và là một định dạng tốt cho quản lý dữ liệu (video đăng ngày 29/09/2026).

Processing algorithms: theo Ujaval, khi bạn bảo nhiều agent làm gì đó, phản xạ đầu tiên của chúng là đi viết một Python script (video đăng ngày 29/09/2026). File nói: đừng tự viết script. Có những tool đã được kiểm thử và có sẵn trong QGIS, hãy dùng chúng, đừng tự tạo tool. Điều đó buộc agent đi xem các tool và tìm cái phù hợp, và nếu có nhiều algorithm thì luôn ưu tiên native QGIS algorithm.

Spatial index: nếu bạn dùng một tool có thao tác không gian, hãy tạo spatial index. Theo anh, điều này đảm bảo mỗi khi cần, agent sẽ đi kiểm tra; nó cũng kiểm tra xem layer đã có spatial index chưa (video đăng ngày 29/09/2026).

Ujaval nhập chỉ dẫn, lưu và đóng file. Quay lại Claude Code, nó báo mọi thứ đã lưu, và giờ có một file. Anh mở thư mục advanced_qgis để chắc chắn file CLAUDE.md đã xuất hiện ở đó; đó là chỉ dẫn của nhóm (demo trong video đăng ngày 29/09/2026).

Lời khuyên của anh: thường bạn bắt đầu với một file CLAUDE.md mà bạn nghĩ là sẽ chạy được. Nếu agent không hành xử như bạn muốn, hãy cập nhật file đó bằng chỉ dẫn của bạn. Chẳng hạn bạn có quy định luôn đặt tên layer output theo một quy ước nào đó; bạn thêm quy ước đặt tên vào đây (video đăng ngày 29/09/2026).

Khi đã setup xong, mỗi lần làm việc với agent, Ujaval nhắc giữ "vệ sinh" cơ bản. Theo anh, không có CLAUDE.md thì kết quả của agent hoàn toàn phó mặc cho may rủi; có nó, agent sẽ làm theo các best practice (nhận định trong video đăng ngày 29/09/2026). Ít nhất nhóm đã cố gói mọi thứ đã dạy trong lớp vào bộ chỉ dẫn này. Nhưng bạn luôn nên cập nhật nó theo sở thích của mình, cách bạn làm việc, và cách tổ chức của bạn làm việc với dữ liệu.

11. Batch processing bằng agent: clip, reproject, lưu vào GeoPackage

"Giờ tới phần vui," Ujaval nói. Mọi thứ đã setup, giờ có thể bảo agent làm những việc thú vị. Theo anh, nếu bạn chưa bao giờ dùng thứ này, nó sẽ thật sự như phép màu. Với một số người, nó sẽ rất đáng lo: "tôi vừa bỏ hai tuần học mọi thứ, giờ chỉ cần bảo agent là nó làm". Nhưng anh nói sẽ chỉ thêm cách dùng nó một cách có ý thức (mindful), theo cách làm bạn giỏi hơn, chứ không chỉ để nó làm những việc bạn không hiểu chuyện gì đang diễn ra (video đăng ngày 29/09/2026).

Bắt đầu với batch processing, phần lớp đã học. Ujaval copy prompt đầu tiên:

Load the batch_processing project.

Theo anh mô tả, agent sẽ hỏi model "câu này nghĩa là gì? nạp project batch processing nghĩa là gì?". Nghĩa là phải đi nạp nó vào QGIS. Agent tìm project trong thư mục và nhờ MCP server nạp. Trên màn hình, Claude Code báo đã nạp batch_processing.qgz vào QGIS, có 6 layer đều hiển thị, kèm bảng số feature của từng layer: lakes 14, places 211, rivers 54, roads 759, state_boundary 1, urban_areas 677 (demo trong video đăng ngày 29/09/2026). Theo Ujaval, đó là một phần của việc tự kiểm tra: "tôi tìm thấy các layer này và giờ đã nạp". Nó mở được project và nạp vào QGIS.

Anh chỉ ra đây là một vòng kiểm tra (validation loop) luôn diễn ra: agent cố làm gì đó rồi tự hỏi "tôi làm rồi, có chạy không?". Nó kiểm tra có bao nhiêu layer, số feature thế nào, và nếu khớp thì "được, tôi tin là mình làm đúng" (theo Ujaval, video đăng ngày 29/09/2026).

Bài tập lớp đã làm là clip tất cả các layer này bằng polygon ranh giới bang, bằng một batch processing tool trong Processing Toolbox. Giờ có thể bảo agent chạy cùng tool đó trên tất cả các layer, reproject sang phép chiếu UTM như lớp đã làm, và cho tất cả vào một GeoPackage. Đó từng là một quy trình nhiều bước; giờ có thể bảo agent làm hết trong một prompt. Prompt tiếp theo trên màn hình (video đăng ngày 29/09/2026):

Clip all the layers with the state_boundary layer and reproject the clipped layers to a suitable UTM projection.

Save the reprojected and clipped layers to a new GeoPackage to agent_output/clipped.gpkg.

Keep only the final layers and remove all other layers from QGIS.

Ujaval giải thích: agent sẽ tự tìm phép chiếu UTM phù hợp nhất, không cần chỉ định. Nhóm đưa một đường dẫn để tạo thư mục agent_output và lưu GeoPackage vào đó, chỉ giữ các layer cuối và gỡ mọi layer khác khỏi QGIS; agent cũng gỡ được layer khỏi QGIS (video đăng ngày 29/09/2026).

Trong lúc chạy, bạn thấy được quá trình suy nghĩ. Theo phần anh đọc trên màn hình, agent gọi QGIS để lấy các layer, xem có những tool nào, tìm ra tool clip và cách dùng, rồi chạy tool clip. Trước đó nó tìm đúng UTM zone và đúng CRS. Nó đã clip tất cả các layer (demo trong video đăng ngày 29/09/2026).

Claude Code báo đã clip các layer theo ranh giới Karnataka và reproject sang UTM zone 43N, kèm bảng số feature trước và sau clip
Kết quả trên màn hình: agent báo đã clip tất cả 6 layer theo ranh giới bang (Karnataka), reproject sang UTM zone 43N (EPSG:32643) và lưu vào agent_output/clipped.gpkg; bảng cho thấy số feature trước và sau clip, ví dụ roads từ 759 còn 26 (demo trong video đăng ngày 29/09/2026).

Ujaval mở thư mục advanced_qgis: có thư mục agent_output, trong đó là GeoPackage clipped. Anh nói nó chứa năm layer đã clip và reproject; còn trên màn hình, agent ghi "I clipped all 6 layers" và bảng liệt kê sáu layer, tính cả state_boundary. Phép chiếu đúng. Agent cũng đưa ra số liệu đếm và báo đã làm xong. Phần giải thích trên màn hình ghi Karnataka trải khoảng 74.0°E tới 78.6°E, nằm trong zone 43N; agent clip bằng native:clip vào các layer tạm rồi reproject bằng native:reprojectlayer (demo trong video đăng ngày 29/09/2026). Theo Ujaval, những việc trước đây phải làm tay, giờ chỉ cần mô tả và agent đi làm.

Tiếp theo, project mới tạo cần được lưu lại. Best practice lớp đã học là lưu project ngay bên trong cùng GeoPackage, và có thể bảo agent làm điều đó (video đăng ngày 29/09/2026):

Save the project as Clipped_Layers inside agent_output/clipped.gpkg

Agent báo đã lưu project, và Ujaval cho thấy project giờ nằm bên trong GeoPackage (demo trong video đăng ngày 29/09/2026).

Dùng việc này thế nào? Theo Ujaval, ý tưởng là giờ bạn có workflow. Giả sử bạn có nhiều dữ liệu lộn xộn khác nhau và muốn làm gì đó: hãy mô tả, và nói "tôi muốn output được lưu theo cách này". Agent sẽ làm tất cả các bước đó và bạn nhận output theo định dạng mong muốn. Anh nói luôn nên kiểm thử. Lý do lớp học làm tay trước là vì bạn cần biết chuyện gì xảy ra, đâu là tool đúng, clip layer thì chuyện gì xảy ra, đâu là workflow đúng. Hãy làm với một layer; nhưng khi muốn tự động hóa, nếu có một agent như thế này, hãy nhờ nó. Theo anh, nó làm việc này hiệu quả hơn nhiều so với bạn làm tay (nhận định trong video đăng ngày 29/09/2026).

12. Workflow maritime piracy: lưới lục giác, spatial index, bản đồ mật độ

Phần thú vị hơn: build workflow với agent. Nhóm sẽ làm lại bài maritime piracy (cướp biển trên biển) đã làm trong lớp, và xem agent không chỉ tự động hóa mà còn đi xa hơn nhiều so với những gì chỉ riêng processing model của lớp làm được. Ujaval mở project maritime piracy (video đăng ngày 29/09/2026):

Load the maritime_piracy project.

Trên màn hình, agent báo đã nạp maritime_piracy.qgz với hai layer: ASAM_events (Point, 6.783 feature) và ne_10m_land (Polygon, 10 feature) (demo trong video đăng ngày 29/09/2026). Rồi tới phần phân tích:

Create a hexagonal grid of 200KM size in the project CRS covering the full extent of the ne_10m_land layer.

Theo Ujaval, câu này chứa nhiều thứ rất khó với các algorithm truyền thống. Nếu làm mù quáng, chúng sẽ vướng lỗi: CRS của project tính bằng mét, còn ở đây là kilômét, sẽ có chênh lệch. Nhưng theo anh, agent và model đã giỏi hơn nhiều, chúng sẽ tự nhận ra: tự đổi 200 kilômét sang mét. Chúng cũng tự tìm extent: "layer này không cùng CRS, tôi sẽ reproject nó". Agent làm tất cả những việc đó mà bạn không phải chỉ rõ cách làm. Anh gọi đó là bản chất của AI hiện đại: hiểu được những sắc thái này và hành động (tất cả là nhận định trong video đăng ngày 29/09/2026). Đôi khi nó vướng lỗi, kiểu "tôi đang làm việc này, gặp lỗi do lệch phép chiếu, tôi sẽ quay lại sửa phép chiếu".

Trên màn hình, agent tạo được lưới và extent. Phần tóm tắt ghi: spacing ngang và dọc đặt là 200.000 m (200 km) bằng native:creategrid; extent của layer đất liền được đổi sang EPSG:8857 trước khi dựng lưới; vì phép chiếu Equal Earth vẽ thế giới thành hình tròn, một số ô ở góc hình chữ nhật nằm ngoài Trái Đất nhưng vô hại khi đếm điểm trong ô. Có một layer tạm (temporary layer), vì nhóm đã yêu cầu layer tạm; agent ghi rằng lưới sẽ biến mất khi QGIS đóng trừ khi được lưu (demo trong video đăng ngày 29/09/2026). Theo Ujaval, nó đang làm theo chỉ dẫn: đây không phải layer cuối, đừng lưu vào GeoPackage.

Đây là chỗ, theo anh, nếu không có project instructions thì bạn sẽ vấp:

Extract only the grid that intersect with the ASAM_events locations.

Không có chỉ dẫn, agent sẽ cứ thế làm. Nhưng giờ có chỉ dẫn, nó kiểm tra spatial index trước, rồi dùng spatial index để trích các ô. Trên màn hình, agent viết lưới là một polygon layer nên nó kiểm tra spatial index trước khi chạy truy vấn không gian; lưới chưa có spatial index nên nó tạo một cái bằng native:createspatialindex, rồi tạo hex_grid_with_events giữ 765 ô lưới (trên tổng 16.800) giao với ít nhất một vị trí ASAM_events (demo trong video đăng ngày 29/09/2026).

Có các ô đã trích rồi, prompt cuối cùng tạo bản đồ mật độ cướp biển. Agent cũng áp được style, nên nhóm yêu cầu một style cơ bản để nhìn kết quả, lưu output dạng GeoPackage, và gỡ các layer lưới lục giác khỏi QGIS. Tất cả bằng ngôn ngữ tự nhiên (video đăng ngày 29/09/2026):

Create a piracy density map and style it using the viridis color ramp.

Save the output as agent_output/aggregated.gpkg.

Remove the hex grid layers from the project.

Trong lúc chờ, Ujaval chia sẻ một pro tip: khi làm việc với agentic AI, bạn gõ rất nhiều lệnh, và nói chuyện thì dễ hơn nhiều. Bạn có thể cài phần mềm chuyển giọng nói thành chữ trên máy để dùng mic nói chuyện với agent. Anh dùng một phần mềm AI dictation mà anh đánh giá rất chính xác, hỗ trợ nhiều ngôn ngữ và chạy ở mọi nơi; nó không miễn phí, nhưng theo anh có nhiều lựa chọn miễn phí thay thế. Anh rất khuyên dùng; theo anh, việc này giúp làm việc nhanh hơn nhiều (lời khuyên trong video đăng ngày 29/09/2026).

QGIS hiển thị bản đồ mật độ cướp biển theo lưới lục giác với color ramp viridis
Bản đồ mật độ cướp biển agent tạo ra: các ô lục giác tô theo color ramp viridis, năm lớp từ 1-13 tới 169-335 sự cố, đậm nhất quanh eo biển Malacca, vịnh Aden và vịnh Guinea (demo trong video đăng ngày 29/09/2026).

Agent làm xong mọi việc. Theo Ujaval, nó tạo layer đếm, dùng points in polygon và nêu tên các tool đã dùng, nên ta biết tool nào được dùng. Trên màn hình, phần tóm tắt ghi các ô dày đặc nhất là eo biển Malacca / Singapore, vịnh Bengal gần Chittagong, vịnh Aden và vịnh Guinea (Nigeria); project giờ có piracy_density, ASAM_events và ne_10m_land; và style viridis mới chỉ tồn tại trong phiên QGIS này, project .qgz chưa được lưu (demo trong video đăng ngày 29/09/2026). Theo anh, đây đúng là output giống hệt cái lớp đã tạo, nhưng giờ agent tự tìm ra cách và tạo bản đồ output.

13. Agent dựng processing model và tự sắp lại layout

Khi đã biết workflow chạy, Ujaval nêu cách anh luôn khuyên: khi implement, làm một hai bước mỗi lần và kiểm tra từng output. Khi biết nó chạy rồi, bạn có thể nhờ agent tạo model. Theo anh, phần tạo model từng là phần khó, phải cấu hình tay từng bước, và agent rất giỏi việc này (nhận định trong video đăng ngày 29/09/2026). Prompt trên màn hình:

I want to build a processing model for this workflow.

The model should take 3 inputs:
- a base polygon layer for the extent
- a point layer of piracy incidents
- a numeric input for grid size

It should generate the aggregated layer of piracy counts per grid.

Create the model "Piracy Hexbin" and save it as a project model in the current project.

Agent cũng lưu được model vào đúng chỗ ta muốn. Theo Ujaval, vì workflow đã làm xong, agent có trí nhớ (memory) về những gì đã làm trước đó, nên nó nói "đây là chuỗi tool tôi đã chạy". Ta mô tả input và việc model phải làm, và nó tự dựng. Trên màn hình, agent liệt kê năm bước: tạo lưới lục giác (native:creategrid) trên extent của layer nền theo CRS của project, tạo spatial index cho lưới, trích các ô giao với sự cố (native:extractbylocation), tạo spatial index cho các ô đã trích, và đếm sự cố mỗi ô (native:countpointsinpolygon) vào NUMPOINTS thành output "Aggregated piracy counts". Agent cũng lưu ý lưới dựng theo CRS của project, nên với một CRS địa lý như EPSG:4326 thì grid size 200000 sẽ hiểu là độ và model không chạy như ý. Nó hỏi có lưu project không, vì model nằm trong file project (demo trong video đăng ngày 29/09/2026).

Model đã lưu vào file project. Ujaval mở Processing Toolbox: trong mục project models có "Piracy Hexbin", model agent vừa tạo. Anh bấm chuột phải và mở model (demo trong video đăng ngày 29/09/2026).

Model Designer của QGIS mở model Piracy Hexbin với các hộp chồng chéo khó đọc
Model "Piracy Hexbin" agent vừa tạo, mở trong Model Designer: đủ các bước từ Create hexagonal grid tới Count incidents per grid cell, nhưng các hộp và đường nối chồng lên nhau, khó đọc (demo trong video đăng ngày 29/09/2026).

Theo Ujaval, model trông không dễ đọc, lát nữa sẽ sửa, nhưng nó có đủ các bước. Anh chạy thử và nó chạy xong, ra output (demo trong video đăng ngày 29/09/2026). Vậy là model tạo được output, và giờ bạn có thể nhờ agent tạo model cho mình.

Bạn cũng cải thiện được layout. Anh gọi đây là một tính năng hay nữa của agent: model trông khá lộn xộn, và nếu muốn nó ngay ngắn, bạn bảo agent "sửa đi". Prompt trên màn hình (video đăng ngày 29/09/2026):

Align the model to improve the layout. Organize it so that the inputs are to the left in a vertical column, processing steps in the middle column and output on the right column.

Theo Ujaval, agent sẽ chụp screenshot, xem cách bố trí nào tốt, di chuyển các hộp và trả lại model. Nó di chuyển hộp bằng cách nào? File model3 có chứa layout, nên agent chỉ sửa file đó để đổi vị trí từng hộp, render lại xem trông thế nào, và cứ thế làm (theo giải thích trong video đăng ngày 29/09/2026).

Anh lưu ý: khi tự thử, output của bạn sẽ khác của anh. Cách LLM hoạt động là xác suất (probabilistic): mỗi lần cho câu trả lời khác nhau, nên bạn sẽ thấy hành vi hơi khác. Vì vậy luôn chú ý agent đang làm gì và hành động theo đó (theo Ujaval, video đăng ngày 29/09/2026).

Model Piracy Hexbin sau khi agent sắp lại: input bên trái, các bước xử lý ở giữa, output bên phải
Model sau khi agent sắp lại: ba input (Base polygon layer, Piracy incidents, Grid size) xếp cột bên trái, các bước xử lý ở giữa, "Aggregated piracy counts" bên phải; khung Configuration cho thấy bước Create hexagonal grid dùng các model input (demo trong video đăng ngày 29/09/2026).

Model cập nhật trông tốt hơn: theo Ujaval, các input đã dời sang trái, phần giữa được canh vào giữa, nên nó tốt hơn nhiều so với phiên bản trước (demo trong video đăng ngày 29/09/2026). Đến đây lớp đã học QGIS MCP server hoạt động ra sao và cách nối agent để điều khiển QGIS.

14. Khi nào nên dùng QGIS MCP

Vậy khi nào nên dùng? Đương nhiên, theo Ujaval, dùng cho batch processing: khi muốn xử lý nhiều dữ liệu, agent rất giỏi làm việc này hiệu quả và bạn có kết quả nhanh hơn nhiều. Bạn cũng chạy được model và làm các workflow tự động (nhận định trong video đăng ngày 29/09/2026).

Một ứng dụng hữu ích khác là kiểm tra kết quả. Theo anh, khi bạn dùng agentic coding, agent viết rất nhiều code và giải rất nhiều bài toán, còn việc của bạn là kiểm chứng kết quả. Cách anh thấy rất hữu ích: giả sử anh đang làm một phân tích trải trên cả một quận, và agent đã tạo ra output trên một vùng rất lớn. Anh không thể đi kiểm tra hết, nên anh thường bảo agent: "lấy một tập con một kilômét vuông của dữ liệu, nạp vào QGIS, nạp tất cả các layer ngữ cảnh để tôi kiểm tra tay kết quả". Rồi anh đi kiểm tra mọi thứ và xem có hợp lý không (theo kinh nghiệm anh kể trong video đăng ngày 29/09/2026).

Như vậy, để spot-check và kiểm chứng kết quả, bạn có thể nhờ agent nạp các tập con rất dễ. Bạn cũng có thể bảo agent "tôi muốn kiểm tra điều kiện này có tồn tại trong dataset không", và nó dựng một script để kiểm tra các điều kiện đó. Tức là cũng dùng được cho validation (video đăng ngày 29/09/2026).

Bạn cũng chạy được sensitivity analysis. Vì giờ dựng model dễ và chạy nhiều lần được, bạn có thể nói "tôi đang làm một phân tích đa tiêu chí (multi-criteria analysis), đây là năm tiêu chí, tôi đang dùng các trọng số khác nhau; nếu đổi trọng số thì output thay đổi thế nào?". Theo Ujaval, bạn nhờ agent chạy việc này và nhận kết quả vững hơn nhiều (video đăng ngày 29/09/2026).

Thêm một điểm: QGIS thường lưu sẵn mọi tham số xác thực (authentication) và kết nối được tới các database doanh nghiệp. Nếu bạn dùng QGIS làm GIS chính, agent có thể dùng QGIS để truy cập các dịch vụ đó; nếu không, có thể bạn không truy cập trực tiếp các database đó được. Theo anh, có QGIS cho phép agent làm việc trong một môi trường hợp lý (nhận định trong video đăng ngày 29/09/2026).

Batch processingnhiều layer, nhiều file Model, workflowchạy tự động Kiểm chứngnạp tập con 1 km² để soát Sensitivityđổi trọng số, chạy lại cộng thêm: agent dùng kết nối database doanh nghiệp đã lưu trong QGIS
Hình 14.1Những trường hợp Ujaval khuyên dùng QGIS MCP (video đăng ngày 29/09/2026).

15. Khi nào không nên dùng, và hướng computer use

Quan trọng nhất, theo Ujaval: không nên dùng QGIS MCP server vào việc gì? Nó không làm styling. Nó làm được styling cơ bản, nhưng đừng dùng nó để làm bản đồ (map making). Nếu bạn muốn tạo một bản đồ đẹp mà bảo agent "đặt màu thành tím", nó sẽ viết một Python script và áp lên dữ liệu để đặt màu tím. Theo anh, tự bấm nút thì dễ hơn nhiều, và bạn làm được một cách tương tác. Làm bản đồ vẫn là việc rất trực quan, và không có API tốt cho nó, nên đừng dùng nó để tạo bản đồ. Styling cơ bản và làm bản đồ cơ bản thì được, nhưng với công việc cartography tử tế, dễ nhất là dùng các native tool của QGIS (nhận định trong video đăng ngày 29/09/2026).

Slide When should you NOT use QGIS MCP với hai mục Mapmaking and Styling và One-off Analysis
Slide "When should you NOT use QGIS MCP?": QGIS có công cụ cartography phong phú được thiết kế để dùng qua giao diện, làm tương tự qua PyQGIS tốn nhiều code và công hơn, bạn có thể thiết kế bản đồ trong QGIS rồi dùng agent để tự động hóa khâu sản xuất bản đồ; với phân tích làm một lần, nhờ agent hướng dẫn nhưng tự làm (theo slide trong video đăng ngày 29/09/2026).

Một việc khác bạn có thể làm: nói "tôi có một bản đồ tham chiếu, hãy style bản đồ của tôi theo đó", và agent áp style. Theo Ujaval, việc này hữu ích khi bạn được giao làm một bản đồ và có một file PDF mẫu: agent nhìn màu, nhìn cách bố trí và tái tạo màu cho bạn. Đó là một việc dùng agent được (theo video đăng ngày 29/09/2026).

Nếu là phân tích làm một lần (one-off), hãy tự làm. Theo anh, nếu nhờ agent làm, bạn sẽ không thấy lỗi hay edge case nào xảy ra trong phân tích, và sẽ bỏ lỡ sắc thái đó. Vì vậy với phân tích một lần, luôn cố tự làm. Hãy nhờ agent giúp: hỏi "làm thế nào?", agent sẽ nói "đây là năm bước", rồi tự chạy các bước đó. Lý do anh đưa ra: nhiều tool có rất nhiều tùy chọn; agent sẽ dùng mặc định, và bạn bỏ lỡ chuyện "ồ, có một tùy chọn để làm việc kia" mà lẽ ra bạn đã khám phá ra. Nên hãy tự chạy tool để thấy các tùy chọn, thấy output và bắt được lỗi nếu có (lời khuyên trong video đăng ngày 29/09/2026).

Nếu bạn làm việc rất phức tạp, như machine learning hay phân tích thống kê, theo Ujaval hãy dùng agent nhưng đừng giới hạn trong QGIS. Theo anh, QGIS không phải một hệ thống phân tích đầy đủ; có các tool và thư viện Python khác phù hợp hơn nhiều cho việc này. Đừng tự bó mình vào QGIS: bạn cứ nói "tôi muốn làm việc này", và nếu QGIS không phải tool tốt nhất thì đừng ép agent dùng QGIS, dùng Python package khác (nhận định trong video đăng ngày 29/09/2026).

Ujaval nói lĩnh vực này đang thay đổi rất nhanh. Tại thời điểm quay video (đăng ngày 29/09/2026), theo anh QGIS chưa giỏi việc làm bản đồ và tạo layout bản đồ đẹp qua agent, nhưng điều đó có thể sớm thay đổi, vì giờ có thứ gọi là computer use: bất cứ việc gì bạn làm được trên máy tính thì agent làm được qua công cụ này. Các công cụ đó cho agent chạy QGIS không qua Python, không qua MCP, mà trực tiếp đi bấm các nút.

AgentQGIS MCP + PyQGIS API (hôm nay)tốt cho phân tích, yếu ở cartography computer use: bấm nút trực tiếpUjaval kỳ vọng sẽ tốt lên
Hình 15.1Hai con đường để agent điều khiển QGIS theo phần "Future Direction of AI Agents" trong video đăng ngày 29/09/2026; nhánh nét đứt là hướng Ujaval cho rằng có thể cải thiện trong tương lai gần.

Theo Ujaval, các model gần đây của OpenAI có khả năng computer use rất ấn tượng: bạn có thể nói "đây là ảnh của tôi", và nó mở Paint, dùng các công cụ của Paint để vẽ bạn thành một bức ảnh chân thực, vì nó làm được mọi thao tác đó. Có một công cụ dựng 3D tên Blender, và theo anh computer use đã dùng nó cực kỳ tốt. Nó chưa dùng QGIS tốt như vậy: người ta đã thử, và nó chưa chạy tốt lắm. Nhưng anh kỳ vọng những phiên bản sau sẽ tốt hơn nhiều (tất cả là nhận định trong video đăng ngày 29/09/2026). Đến lúc đó, bạn có thể nói "đây là một bản đồ, hãy làm lại nó trong QGIS", và agent tự bấm nút, chỉnh các hộp, tạo bản đồ. Theo anh, khả năng đó có thể cải thiện trong tương lai gần.

16. MAUP: cùng dữ liệu, khác cách gộp, khác câu trả lời

Tiếp theo, Ujaval cho xem agent làm được gì mà trước đây rất khó. Theo anh, nhiều khi bạn làm một project, có một task, làm xong task, và thế là xong. Nếu lùi lại nhìn task vừa làm, bạn chẳng bao giờ có thời gian hỏi: "mình đã đạt mục tiêu của project chưa?". Bạn chỉ nói "đây là task tôi được giao, tôi làm xong rồi" (video đăng ngày 29/09/2026).

Giờ khi bản thân task làm được rất nhanh, bạn có thể dùng thời gian tiết kiệm được để thực sự hiểu bài toán sâu hơn và giải nó hiệu quả hơn. Theo anh, đó là chỗ agent thật sự giúp bạn giải bài toán tốt hơn và giúp bạn nhận được nhiều giá trị hơn từ chúng. Nếu bạn chỉ dùng agent kiểu "có người nhờ tôi dựng model, tôi lười quá, đây là prompt, nó dựng xong, tôi xong việc", thì cách đó vẫn chạy, bạn vẫn xong việc. Nhưng bạn chẳng thu được gì từ nó, chẳng học được chuyện gì đã xảy ra, và bài toán chưa bao giờ thật sự được giải (nhận định của Ujaval, video đăng ngày 29/09/2026). Anh muốn chỉ hướng có thể đưa agent đi tiếp sau khi xong việc.

Lớp đã làm bài phát hiện hotspot cướp biển: đây là dataset, hãy tìm các hotspot để tuần tra và ngăn cướp biển. Lớp mới làm một phần phân tích: tìm các vùng có ô lưới nhiều vụ cướp nhất. Một vấn đề của câu trả lời đó: giả sử ta có năm ô hàng đầu, nằm ở đâu đó, và ta nói "đây là khu vực có nhiều vụ cướp nhất". Nếu chọn kích thước lưới khác, bạn sẽ có câu trả lời hoàn toàn khác. Lưới 100 km hay 500 km cho câu trả lời khác. Lưới vuông và lưới lục giác cũng cho câu trả lời khác (video đăng ngày 29/09/2026).

Đây là một vấn đề trong phân tích không gian gọi là MAUP, viết tắt của Modifiable Areal Unit Problem. Nó nói rằng bạn có thể chia dữ liệu theo cách khác và nhận câu trả lời rất khác (video đăng ngày 29/09/2026).

Slide Modifiable Areal Unit Problem với hình minh họa Region Set A và Region Set B
Slide về MAUP: khi gộp dữ liệu không gian vào polygon, kết quả có thể thay đổi mạnh theo cách chọn polygon; scale effect là đổi kích thước lưới, zoning effect là đổi hướng và hình dạng lưới. Hình bên phải: cùng ba điểm (một điểm có ca bệnh), Region Set A cho tỷ lệ 0% và 50%, Region Set B cho 0% và 100% (theo slide trong video đăng ngày 29/09/2026).

Ujaval đi qua ví dụ trên slide. Có ba điểm. Nếu gộp chúng theo các polygon này, một vùng ở đây và một vùng ở kia, ta có thể nói cả vùng này có tỷ lệ bệnh 50%, vùng kia 0%. Cùng dữ liệu đó. Nhưng nếu chia dữ liệu theo cách khác, ta có thể nói cả vùng này có tỷ lệ bệnh 100%, còn vùng kia hoàn toàn không có bệnh. Cùng dữ liệu, nhưng cách gộp tạo ra khác biệt. Nghĩa là vùng này có thể là 50% hoặc 0%, và theo anh như vậy không vững lắm (video đăng ngày 29/09/2026).

Cách chọn gộp dữ liệu ảnh hưởng tới kết quả cuối cùng. Kích thước lưới khác nhau, hay hướng lưới khác nhau, đều ảnh hưởng tới cách ra câu trả lời. Theo Ujaval, bạn không làm gì được với hiện tượng này, ngoài việc nói "tôi biết nó xảy ra, và tôi sẽ thiết kế workflow để vững trước hiệu ứng này" (video đăng ngày 29/09/2026).

Làm thế nào? Nếu bạn gộp dữ liệu (ví dụ có dữ liệu điểm và muốn tìm tỷ lệ tội phạm), anh khuyên đừng dùng ranh giới quận hay huyện có sẵn, vì chúng có thiên lệch riêng (bias) cài sẵn. Người ta quyết định ranh giới quận, huyện thế nào? Theo anh, dựa trên các phân chia kinh tế xã hội, nên bạn đã mang thiên lệch vào phân tích. Thay vào đó, hãy dùng lưới đều. Như vậy bạn tìm được hotspot thật, thay vì đánh dấu một vùng vốn đã có tỷ lệ tội phạm cao (theo Ujaval, video đăng ngày 29/09/2026). (Ở đoạn này Ujaval nói "Use admin boundaries to aggregate the data", còn slide "How to prevent effects of MAUP?" ghi "Choose a regular grid over administrative polygons".)

Rồi làm sensitivity analysis: dùng lưới kích thước khác nhau, hình dạng khác nhau, canh lưới theo cách khác nhau, và xem có phải cùng những vùng luôn bị đánh dấu là hotspot không. Theo Ujaval, đó mới là hotspot thật, chứ không phải thứ chỉ tình cờ nằm đúng chỗ, đúng hướng. Bạn phải làm sensitivity analysis, chạy nhiều lần khác nhau, rồi nói điểm nào luôn ổn định và xác định các vùng đó (video đăng ngày 29/09/2026).

Anh kể mình vẫn thường dặn học viên sau lớp: hãy làm sensitivity analysis, chạy model với các kích thước lưới khác nhau, hình dạng lưới khác nhau, và tìm các vùng ổn định. Không ai làm cả, vì theo anh đó là rất nhiều việc: phải tìm cách chạy model nhiều lần. Nhưng đó là một phần rất quan trọng của phân tích. Nếu thật sự muốn giải bài toán, bạn không thể dừng ở chỗ "đây là năm ô hàng đầu"; bạn phải chắc chắn đó thật sự là các ô ổn định (video đăng ngày 29/09/2026).

17. Sensitivity analysis bằng agent: tìm hotspot ổn định

Giờ có thể nhờ agent: "làm việc này giúp tôi". Theo Ujaval, việc này cho phép đạt kết quả vững hơn nhiều so với trước. Ta bảo agent: "đã có model rồi, hãy chạy model với các kích thước lưới khác nhau và cho tôi biết những ô nào luôn xuất hiện là hotspot". Agent có thể nói "tôi muốn chạy việc này, tôi sẽ viết một Python script thử các biến thể khác nhau, gọi model nhiều lần, gộp kết quả và tạo output". Theo anh, đây là việc có thể diễn ra tự động và rất nhanh mà bạn không phải làm tay (nhận định trong video đăng ngày 29/09/2026). Đó là một cách để đưa phân tích đi xa hơn.

Prompt khởi đầu trên màn hình:

I want to do sensitivity analysis to test for the effects of Modifiable Areal Unit Problem (MAUP).

Use the QGIS model to run different variables of the analysis to reliably detect piracy hotspots.

Agent giờ phải tìm ra các kích thước lưới khác nhau và gọi model nhiều lần. Trên màn hình, nó hỏi lại vài câu (demo trong video đăng ngày 29/09/2026). Câu thứ nhất về phạm vi MAUP: chỉ test scale (các kích thước lưới khác nhau) hay cả zoning (dịch lưới, đổi offset)? Agent ghi model hiện chỉ nhận một grid size, nên chỉ test được scale. Ujaval nói vì tốc độ, anh chỉ dùng scale.

Claude Code hỏi lại về kích thước lưới cho các lần chạy MAUP, gợi ý 100 đến 400 km với 5 kích thước
Agent hỏi "Which grid sizes should the runs use?": lựa chọn 1 là 100-400 km với 5 kích thước 100, 150, 200, 300, 400 km (Recommended), lựa chọn 2 là 50-500 km với 6 kích thước; phía trên là các tab MAUP scope, Grid sizes, Hotspot rule, Submit (demo trong video đăng ngày 29/09/2026).

Câu thứ hai về kích thước: agent đề xuất thử từ 100 tới 400 kilômét, hỏi muốn cái này hay cái kia. Ujaval chọn năm kích thước. Câu thứ ba: định nghĩa hotspot ra sao để so được giữa các lần chạy có kích thước ô khác nhau? Anh chọn top 5% số ô. Trên màn hình, lựa chọn khác là Getis-Ord Gi* (thống kê), tính bằng PySAL trong Python, chặt chẽ hơn nhưng cần một conda environment có esda/libpysal (demo trong video đăng ngày 29/09/2026).

Ujaval giải thích quy tắc: điểm nào luôn rơi vào top 5% số ô thì đó thật sự là hotspot. Dù thay đổi thế nào, điểm đó vẫn luôn nằm trong top 5% ô lưới; đó là một cách để nói đây thật sự là hotspot ổn định. Anh bấm Submit và agent đi implement (demo trong video đăng ngày 29/09/2026).

Theo anh, agent sẽ hỏi những câu làm rõ như vậy: nếu chỉ dẫn của bạn chưa rõ, nó hỏi lại, và bạn hướng nó chọn đúng. Nếu làm việc gì phức tạp, bạn cũng có thể chuyển sang plan mode và bảo "làm việc này"; nó sẽ đưa ra một kế hoạch, "đây là những gì tôi sẽ làm". Bạn sửa kế hoạch được, kiểu "không, đừng lấy top 5%, có lẽ lấy 10%", và nó implement theo (theo video đăng ngày 29/09/2026).

Trên màn hình, agent viết sẽ chạy model với các kích thước lưới 100, 150, 200, 300 và 400 km, mỗi lần đánh dấu top 5% ô dày đặc nhất là hotspot, rồi kiểm tra sự cố nào luôn bị đánh dấu ở mọi scale và sự cố nào chỉ ở một vài scale (demo trong video đăng ngày 29/09/2026). Ujaval giải thích nó sẽ chạy năm lần, lấy tất cả các ô, chọn 5% ô dày đặc nhất, rồi lấy mọi sự cố vẫn bị đánh dấu ở tất cả các giá trị. Để làm việc đó, nó viết code Python chạy và gọi model nhiều lần. Theo anh, nếu tự làm thì sẽ rất phức tạp để trích top 5% ô và làm việc này; qua Python thì dễ hơn. Agent chỉ dùng Python bình thường, nhưng dùng model đã dựng trong QGIS để làm phần xử lý thật.

QGIS hiển thị layer hotspot_persistence với các điểm màu vàng ở vịnh Aden, vịnh Guinea và Đông Nam Á
Kết quả sensitivity analysis: GeoPackage maup_sensitivity.gpkg chứa event_hotspot_persistence và năm layer hexbin từ 100 km tới 400 km; chú giải đi từ "Never a hotspot" tới "All 5 scales (robust)", các điểm vàng (bền ở cả năm scale) nằm quanh vịnh Aden, vịnh Guinea và Đông Nam Á (demo trong video đăng ngày 29/09/2026).

Agent tạo ra phần sensitivity analysis, báo đã đếm theo từng ô và có output. Ujaval mở kết quả: một layer hotspot persistence, trong đó các điểm được đánh dấu ở nhiều vùng. Đã chạy năm lần, và có những điểm luôn bị đánh dấu là hotspot (demo trong video đăng ngày 29/09/2026). Theo anh, đó mới là hotspot thật, không còn nhạy với kích thước lưới, vì dù chọn kích thước nào chúng vẫn luôn nằm trong top 5% ô lưới. Anh đánh giá đây là phân tích hữu ích hơn nhiều so với chỉ có năm ô hàng đầu, vốn có thể phụ thuộc vào cách đặt lưới.

18. Dùng agent để học thêm, và những gì không nên outsource

Ujaval nói còn rất nhiều thứ khác có thể làm. Bạn có thể nói "tôi xong rồi, nhưng hãy chỉ tôi cách cải thiện phân tích", và theo anh đây là chỗ dùng agent để học thêm. Có những ý tưởng và loại phân tích bạn có thể chưa biết; hãy nhân cơ hội này để học, hỏi "còn làm được gì nữa?". Prompt trên màn hình (video đăng ngày 29/09/2026):

Give me suggestions on how to further improve this analysis
1. Shipping trafficchia số vụ chomật độ tàu mỗi ô 2. Zoning effectdịch lưới 0, 1/4,1/2, 3/4 ô 3. SignificanceGetis-Ord Gi* thaycho quy tắc top 5% 4. Add timephân tích theotừng giai đoạn Ujaval chỉ đi sâu vào gợi ý thứ nhất
Hình 18.1Danh sách gợi ý agent in ra trên màn hình (demo trong video đăng ngày 29/09/2026), xếp theo mức quan trọng do agent tự đánh giá.

Agent trả lời bằng một danh sách, mục đầu là "Adjust for shipping traffic" (điều chỉnh theo lưu lượng tàu). Trên màn hình, agent giải thích hiện hotspot chỉ đơn giản là nơi xảy ra nhiều sự cố nhất, các tuyến đông như eo biển Malacca, Singapore và Bab-el-Mandeb sẽ luôn có số đếm cao, và chia số sự cố mỗi ô cho lưu lượng tàu trong ô sẽ biến số đếm thành rủi ro; nó gợi ý một raster mật độ tàu toàn cầu của World Bank / IMF. Các mục tiếp theo trên màn hình là test zoning effect (dịch lưới), dùng kiểm định ý nghĩa thống kê thay cho quy tắc top 5%, và thêm chiều thời gian vì dữ liệu có ngày tháng (demo trong video đăng ngày 29/09/2026).

Ujaval nói gợi ý đầu là một điều rất hay: có hotspot vì ở đó có nhiều hoạt động tàu thuyền hơn, và lớp chưa hề điều chỉnh cho điều đó. Theo anh, đó có vẻ là một ý hay. Bạn có thể nói "tôi muốn theo hướng tìm hiểu này. Lấy dữ liệu tàu thuyền ở đâu? Lấy dữ liệu lưu lượng tàu ở đâu?", lấy dữ liệu đó, đưa vào, rồi bảo agent "kết hợp cái này vào phân tích của tôi" và xem output. Theo anh, trước đây làm việc này tự nó đã là một project; giờ làm rất dễ (nhận định trong video đăng ngày 29/09/2026).

Việc của bạn, theo Ujaval, là quyết định có nên làm hay không: việc này có hợp lý với kết quả mình đang theo đuổi không? Việc của bạn là hiểu mọi lựa chọn được đưa ra, xem mình đang cố đạt điều gì, xem cái nào hợp lý. Tìm hiểu thêm, xem đâu là nguồn dữ liệu tốt nhất. Quyết định xong thì đưa vào, để agent tìm cách implement phân tích, kiểm chứng kết quả, rồi đi tiếp bước sau. Theo anh, làm như vậy thì mỗi lần dùng agent bạn sẽ giỏi hơn và học được điều mới. Và nếu phải nộp kết quả, đây là một lời giải tốt hơn nhiều so với lời giải trước; bạn sẽ gần với việc giải bài toán thật hơn nhiều so với khi không dùng các kỹ thuật này (video đăng ngày 29/09/2026).

Ujaval giới thiệu vài tài nguyên. Anh có một bài blog cố gắng cập nhật thường xuyên, "Reflections on AI as an Educator", bàn về những câu hỏi nóng quanh AI: nên học thế nào, best practice khi dùng là gì, khi nào nên dừng, tất cả các câu hỏi nảy sinh. Theo anh, tất cả đều đang ở giữa cuộc thay đổi này và đang nghĩ về nó, nên anh giữ bài viết luôn cập nhật (video đăng ngày 29/09/2026).

Anh đọc một câu trích anh thích: "You can outsource your thinking, but you can't outsource understanding" (bạn có thể outsource việc suy nghĩ, nhưng không outsource được sự hiểu). Bài blog, đọc ngày 25/10/2026, ghi câu này là của Andrej Karpathy, với chữ "your understanding". Theo Ujaval, hãy để model làm phần implement, nhưng bạn phải thật sự hiểu bài toán mình đang làm. Mỗi khi gặp một ví dụ hay, chẳng hạn qua mạng lưới của mình, anh cố đặt nó vào bối cảnh của việc nên dùng AI thế nào cho tốt nhất.

Theo anh, chuyên môn trong lĩnh vực (domain expertise) mới là thứ quan trọng nhất. Nếu bạn hiểu không gian bài toán sâu hơn, nếu bạn có kết nối với thực tế ngoài hiện trường, bạn sẽ giải bài toán tốt hơn nhiều. Vì vậy hãy phát triển kỹ năng và dùng các tài nguyên để làm điều đó (video đăng ngày 29/09/2026).

Và hãy buông ý nghĩ rằng mình phải tự làm mọi thứ. Bạn có thể nói "phần này tôi outsource được, nhưng tôi sẽ tự kiểm chứng và tự nghiên cứu". Đừng outsource phần bạn thật sự quan tâm. Ujaval đưa ví dụ: nếu bạn nói "tôi thật sự muốn làm phần lập kế hoạch tốt hơn, hiểu toàn bộ quy trình", nhưng "tôi không quan tâm website của mình được build thế nào", thì hãy để agent làm website. Những gì không quan trọng với sự phát triển cá nhân của bạn, hãy để agent làm. Những gì quan trọng để bạn thật sự lớn lên và hiểu lĩnh vực của mình sâu hơn, hãy dùng agent, nhưng dùng để xây dựng sự hiểu biết tốt hơn (video đăng ngày 29/09/2026).

Nguồn và liên kết 14 nguồn

  1. Tên gốc: QGIS and AI: Automating Spatial Analysis using AI Agents and MCP Server - Advanced QGIS
  2. Sự kiện: YouTube
  3. Video gốc: https://www.youtube.com/watch?v=r-hPfRtgo2U youtube.com
  4. Kênh YouTube Spatial Thoughts (Ujaval Gandhi): youtube.com/channel/UCuZLOgQwRum8Zsy2gSZvMwA youtube.com
  5. Module "QGIS and AI" của khóa Advanced QGIS, có đủ các lệnh cài đặt, file CLAUDE.md và các prompt dùng trong video (đọc ngày 25/10/2026): courses.spatialthoughts.com/advanced-qgis.html#qgis-and-ai courses.spatialthoughts.com
  6. Repo QGIS MCP, README ghi 125 MCP tool, kiến trúc MCP server nối với plugin QGIS qua TCP socket, và lệnh cấu hình cho từng coding agent (đọc ngày 25/10/2026): github.com/nkarasiak/qgis-mcp github.com
  7. Plugin QGIS MCP trong kho plugin chính thức của QGIS (đọc ngày 25/10/2026): plugins.qgis.org/plugins/qgis_mcp_plugin plugins.qgis.org
  8. Mapflow for QGIS (đọc ngày 25/10/2026): mapflow.ai/qgis mapflow.ai
  9. AI Segmentation và AI Agent của TerraLab (đọc ngày 25/10/2026): terra-lab.ai/ai-segmentation · terra-lab.ai/ai-agent terra-lab.ai
  10. Plugin GeoAI cho QGIS của Qiusheng Wu (đọc ngày 25/10/2026): opengeoai.org/qgis_plugin opengeoai.org
  11. AI Vectorizer, AI Georeferencer và Kue của Bunting Labs (đọc ngày 25/10/2026): buntinglabs.com/solutions/ai-vectorizer · buntinglabs.com/tools/ai-georeferencer · buntinglabs.com/solutions/kue-ai buntinglabs.com
  12. Tài liệu Claude Code về memory và file CLAUDE.md (đọc ngày 25/10/2026): code.claude.com/docs/en/memory code.claude.com
  13. Modifiable areal unit problem trên Wikipedia (đọc ngày 25/10/2026): en.wikipedia.org/wiki/Modifiable_areal_unit_problem en.wikipedia.org
  14. Bài blog "Reflections on AI as an Educator" của Ujaval Gandhi (đọc ngày 25/10/2026): spatialthoughts.com/2026/05/12/reflections-on-ai spatialthoughts.com