Logo Zephyrnet

Phân tích dữ liệu không gian địa lý với Geemap – KDnuggets

Ngày:

Phân tích dữ liệu không gian địa lý với Geemap
Tác giả minh họa
 

Phân tích dữ liệu không gian địa lý là một lĩnh vực nhằm xử lý, trực quan hóa và phân tích một loại dữ liệu đặc biệt, được gọi là dữ liệu không gian địa lý. So với dữ liệu thông thường, chúng tôi có dữ liệu dạng bảng với một cột bổ sung, thông tin vị trí, chẳng hạn như vĩ độ và kinh độ. 

Có hai loại dữ liệu chính: dữ liệu vector và dữ liệu raster. Khi xử lý dữ liệu vectơ, bạn vẫn có tập dữ liệu dạng bảng, trong khi dữ liệu raster giống với hình ảnh hơn, chẳng hạn như hình ảnh vệ tinh và ảnh chụp từ trên không. 

Trong bài viết này, tôi sẽ tập trung vào dữ liệu raster được cung cấp bởi Google Earth Engine, một nền tảng điện toán đám mây cung cấp danh mục dữ liệu khổng lồ về hình ảnh vệ tinh. Bạn có thể dễ dàng làm chủ loại dữ liệu này từ Notebook Jupyter của mình bằng cách sử dụng gói Python cứu mạng, được gọi là Geemap. Bắt đầu nào!

Google Earth Engine là gì?

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Trang chủ của Google Earth Engine.
 

Trước khi bắt đầu với Thư viện Python, chúng ta cần hiểu tiềm năng của Công cụ Google Earth. Nền tảng dựa trên đám mây này, được hỗ trợ bởi nền tảng Google Cloud, lưu trữ các bộ dữ liệu không gian địa lý công khai và miễn phí cho mục đích học thuật, phi lợi nhuận và kinh doanh.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Tổng quan về Danh mục dữ liệu Earth Engine. 
 

Cái hay của nền tảng này là nó cung cấp một danh mục dữ liệu raster và vector nhiều petabyte, được lưu trữ trên các máy chủ Earth Engine. Bạn có thể có một cái nhìn tổng quan nhanh chóng từ đây Link. Hơn nữa, nó còn cung cấp các API để tạo điều kiện thuận lợi cho việc phân tích các bộ dữ liệu raster. 

Geemap là gì?

Phân tích dữ liệu không gian địa lý với Geemap
Minh họa của tác giả. Thư viện Geemap.
 

Bản đồ địa lý là thư viện Python cho phép phân tích và trực quan hóa lượng lớn dữ liệu không gian địa lý từ Google Earth Engine. 

Trước gói này, người ta đã có thể thực hiện các yêu cầu tính toán thông qua API JavaScript và Python, nhưng API Python có chức năng hạn chế và thiếu tài liệu. 

Để lấp đầy khoảng trống này, Geemap được tạo ra để cho phép người dùng truy cập tài nguyên của Google Earth Engine với một vài dòng mã. Geemap được xây dựng dựa trên Earengine-api, ipyleaflet lá cây.

Để cài đặt thư viện, bạn chỉ cần dùng lệnh sau:

pip install geemap

 

Tôi khuyên bạn nên thử nghiệm gói tuyệt vời này trong Google Colab để hiểu hết tiềm năng của nó. Hãy xem cuốn sách miễn phí này được viết bởi giáo sư Tiến sĩ Qiusheng Wu để bắt đầu với Geemap và Google Earth Engine.

Làm cách nào để truy cập Earth Engine?

Trước tiên, chúng ta cần nhập hai thư viện Python, thư viện này sẽ được sử dụng trong hướng dẫn:

import ee
import geemap

 

Ngoài geemap, chúng tôi đã nhập thư viện máy khách Earth Engine Python, được gọi là ee. 

Thư viện Python này có thể được sử dụng để xác thực trên Earth Engine, nhưng nó có thể nhanh hơn bằng cách sử dụng trực tiếp thư viện Geemap:

m = geemap.Map()
m

 

Bạn cần nhấp vào URL được dòng mã này trả về, URL này sẽ tạo mã ủy quyền. Đầu tiên, chọn dự án đám mây và sau đó nhấp vào nút “TẠO TOKEN”.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Trình xác thực sổ tay.
 

Sau đó nó sẽ yêu cầu bạn chọn tài khoản. Tôi khuyên bạn nên sử dụng cùng một tài khoản Google Colab nếu bạn đang sử dụng nó.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Chọn một tài khoản.
 

Sau đó, nhấp vào hộp kiểm bên cạnh Chọn tất cả và nhấn nút “Tiếp tục”. Tóm lại, bước này cho phép Notebook Client truy cập vào tài khoản Earth Engine.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Cho phép Máy khách Notebook truy cập vào tài khoản Earth Engine của bạn.
 

Sau hành động này, mã xác thực sẽ được tạo và bạn có thể dán mã đó vào ô sổ ghi chép.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Sao chép Mã xác thực.
 

Sau khi nhập mã xác minh, cuối cùng bạn có thể tạo và trực quan hóa bản đồ tương tác này:

m = geemap.Map()
m

 

Phân tích dữ liệu không gian địa lý với Geemap
 

Hiện tại, bạn chỉ đang quan sát bản đồ cơ sở trên ipyleaflet, một gói Python cho phép hiển thị trực quan các bản đồ tương tác trong Notebook Jupyter. 

Tạo bản đồ tương tác

Trước đây, chúng ta đã thấy cách xác thực và trực quan hóa bản đồ tương tác bằng một dòng mã. Bây giờ, chúng ta có thể tùy chỉnh bản đồ mặc định bằng cách chỉ định vĩ độ và kinh độ của tâm, mức thu phóng và chiều cao. Tôi đã chọn tọa độ Rome làm trung tâm để tập trung vào bản đồ Châu Âu. 

m = geemap.Map(center=[41, 12], zoom=6, height=600)
m

 

Phân tích dữ liệu không gian địa lý với Geemap

 

Nếu chúng ta muốn thay đổi bản đồ cơ sở, có hai cách có thể thực hiện được. Cách đầu tiên bao gồm viết và chạy dòng mã sau:

m.add_basemap("ROADMAP")
m

 

Phân tích dữ liệu không gian địa lý với Geemap
 

Ngoài ra, bạn có thể thay đổi bản đồ cơ sở theo cách thủ công bằng cách nhấp vào biểu tượng cờ lê vòng ở bên phải. 

 

Phân tích dữ liệu không gian địa lý với Geemap
 

Hơn nữa, chúng ta thấy danh sách các bản đồ cơ sở do Geemap cung cấp:

basemaps = geemap.basemaps.keys()
for bm in basemaps:
   print(bm)

 

Đây là đầu ra:

OpenStreetMap
Esri.WorldStreetMap
Esri.WorldImagery
Esri.WorldTopoMap
FWS NWI Wetlands
FWS NWI Wetlands Raster
NLCD 2021 CONUS Land Cover
NLCD 2019 CONUS Land Cover
...

 

Như bạn có thể nhận thấy, có một loạt bản đồ cơ sở dài, hầu hết chúng đều có sẵn nhờ OpenStreetMap, ESRI và USGS.

Các loại dữ liệu của Earth Engine

Trước khi thể hiện hết tiềm năng của Geemap, điều quan trọng là phải biết hai loại dữ liệu chính trong Earth Engine. Hãy nhìn vào Tài liệu của Google Earth Engine để biết thêm chi tiết.

 

Phân tích dữ liệu không gian địa lý với Geemap
Minh họa của tác giả. Ví dụ về các kiểu dữ liệu vectơ: Hình học, Tính năng và Bộ sưu tập tính năng.
 

Khi xử lý dữ liệu vectơ, chúng tôi chủ yếu sử dụng ba loại dữ liệu:

  • Hình học lưu trữ tọa độ cần thiết để vẽ dữ liệu vectơ trên bản đồ. Ba loại hình học chính được Earth Engine hỗ trợ: Point, LineString và Polygon.
  • Đặc tính về cơ bản là một hàng kết hợp các thuộc tính hình học và phi địa lý. Nó rất giống với lớp GeoSeries của GeoPandas.
  • Bộ sưu tập tính năng là một cấu trúc dữ liệu dạng bảng chứa một tập hợp các tính năng. FeatureCollection và GeoDataFrame gần như giống hệt nhau về mặt khái niệm.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của tác giả. Ví dụ về kiểu dữ liệu hình ảnh. Nó hiển thị Mô hình độ cao kỹ thuật số được làm mịn của Úc (DEM-S)
 

Trong thế giới dữ liệu raster, chúng tôi tập trung vào Hình ảnh các đối tượng. Hình ảnh của Google Earth Engine bao gồm một hoặc nhiều nhãn hiệu, trong đó mỗi dải có tên cụ thể, mức tối thiểu và tối đa ước tính cũng như mô tả.

Nếu chúng ta có một bộ sưu tập hoặc chuỗi hình ảnh theo thời gian, Bộ sưu tập hình ảnh thích hợp hơn như một kiểu dữ liệu.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của Tác giả. Lớp phủ đất Copernicus CORINE.
 

Chúng tôi hình dung hình ảnh vệ tinh hiển thị bản đồ che phủ đất liền của Châu Âu. Bộ dữ liệu này cung cấp những thay đổi giữa năm 1986 và 2018.

Đầu tiên, chúng tôi tải hình ảnh bằng ee.Image, sau đó chọn dải “landcover”. Cuối cùng, hãy trực quan hóa hình ảnh bằng cách thêm tập dữ liệu đã tải vào bản đồ dưới dạng một lớp bằng Map.addLayer. 

Map = geemap.Map()
dataset = ee.Image('COPERNICUS/CORINE/V20/100m/2012')
landCover = dataset.select('landcover')
Map.setCenter(16.436, 39.825, 6)
Map.addLayer(landCover, {}, 'Land Cover')
Map

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của Tác giả.
 

Tương tự, chúng ta có thể làm điều tương tự để tải và trực quan hóa hình ảnh vệ tinh hiển thị bản đồ che phủ đất liền của Châu Âu. Bộ dữ liệu này cung cấp những thay đổi giữa năm 1986 và 2018.

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của Tác giả. Hình ảnh ngoại tuyến có độ phân giải cao về nồng độ khí mêtan.

 

Để trực quan hóa Earth Engine ImageCollection, các dòng mã tương tự nhau, ngoại trừ ee.ImageCollection. 

Map = geemap.Map()
collection = ee.ImageCollection('COPERNICUS/S5P/OFFL/L3_CH4').select('CH4_column_volume_mixing_ratio_dry_air').filterDate('2019-06-01', '2019-07-16')
band_viz = {
 'min': 1750,
 'max': 1900,
 'palette': ['black', 'blue', 'purple', 'cyan', 'green', 'yellow', 'red']
}

Map.addLayer(collection.mean(), band_viz, 'S5P CH4')
Map.setCenter(0.0, 0.0, 2)
Map

 

Phân tích dữ liệu không gian địa lý với Geemap
Ảnh chụp màn hình của Tác giả.
 

Thật tuyệt! Từ bản đồ này, chúng ta nhận thấy khí mê-tan, một trong những tác nhân quan trọng nhất gây ra hiệu ứng nhà kính, được phân bố như thế nào trên toàn cầu. 

Kết luận:

Đây là hướng dẫn giới thiệu có thể giúp bạn làm việc với dữ liệu Google Earth Engine bằng Python. Geemap là thư viện Python hoàn chỉnh nhất để trực quan hóa và phân tích loại dữ liệu này. 

Nếu bạn muốn tìm hiểu sâu hơn về gói này, bạn có thể xem qua các tài nguyên tôi đề xuất bên dưới. 

Mã có thể được tìm thấy tại đây. Tôi hy vọng bạn tìm thấy bài viết hữu ích. Chúc một ngày tốt lành!

Tài nguyên hữu ích:

 
 

Eugenia Anello hiện là nghiên cứu viên tại Khoa Kỹ thuật Thông tin của Đại học Padova, Ý. Dự án nghiên cứu của cô tập trung vào Học tập liên tục kết hợp với Phát hiện bất thường.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img