当前位置: 首页 > news >正文

(二)Python + 地球信息科学与技术 (GeoICT)=?

目录

四、典型工作流程(以 “遥感植被分析” 为例)

五、Python vs 传统 GeoICT 工具(如 ArcGIS)

六、学习资源推荐

七、趋势小结


四、典型工作流程(以 “遥感植被分析” 为例)

以 “基于 Landsat 8 影像计算某区域 NDVI 并可视化” 为例,展示 Python GeoICT 的完整流程:

  1. 数据获取
    用 earthaccess 库(NASA 官方 Python 接口)下载 Landsat 8 影像(包含红波段、近红外波段):

import earthaccess
# 搜索条件:区域、时间、传感器
results = earthaccess.search_data(short_name="LANDSAT_8_C1_L1",bounding_box=(-122.4, 37.7, -122.3, 37.8),  # 旧金山某区域date_range=("2023-06-01", "2023-06-30"),max_results=1
)
# 下载影像到本地
earthaccess.download(results, local_path="./landsat_data")

   2. 数据预处理
用 Rasterio 读取影像,进行辐射定标(将 DN 值转换为反射率):

import rasterio
import numpy as np# 读取红波段(B4)和近红外波段(B5)
with rasterio.open("./landsat_data/LC08_L1TP_044034_20230615_20230627_02_T1_B4.TIF") as src:red = src.read(1).astype(np.float32)profile = src.profile  # 保存影像投影、分辨率等信息with rasterio.open("./landsat_data/LC08_L1TP_044034_20230615_20230627_02_T1_B5.TIF") as src:nir = src.read(1).astype(np.float32)# 辐射定标(基于 Landsat 8 定标系数,从影像元数据中获取)
M_p = 0.00002  # 增益
A_p = -0.1     # 偏移
red_reflect = M_p * red + A_p
nir_reflect = M_p * nir + A_p

3.NDVI 计算
NDVI(归一化植被指数)公式:NDVI = (NIR - Red) / (NIR + Red),用于表征植被覆盖度:

# 避免除以零,设置阈值
ndvi = (nir_reflect - red_reflect) / (nir_reflect + red_reflect + 1e-8)
# 过滤异常值(NDVI 范围通常为 [-1, 1])
ndvi = np.clip(ndvi, -1, 1)

4. 可视化与输出
用 Matplotlib + Cartopy 绘制 NDVI 专题图,并保存结果:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature# 设置投影(与影像一致,如 UTM 10N)
crs = ccrs.UTM(10)
fig, ax = plt.subplots(figsize=(10, 8), subplot_kw={"projection": crs})# 绘制 NDVI 热力图
im = ax.imshow(ndvi, extent=src.bounds, cmap="RdYlGn", vmin=-1, vmax=1)
# 添加行政区划与海岸线
ax.add_feature(cfeature.STATES.with_scale("10m"), edgecolor="gray")
ax.add_feature(cfeature.COASTLINE.with_scale("10m"))# 添加颜色条与标题
cbar = plt.colorbar(im, ax=ax, shrink=0.6)
cbar.set_label("NDVI", fontsize=12)
ax.set_title("Landsat 8 NDVI (San Francisco, June 2023)", fontsize=14)# 保存图片
plt.savefig("./ndvi_sf_202306.png", dpi=300, bbox_inches="tight")

五、Python vs 传统 GeoICT 工具(如 ArcGIS)

对比维度Python传统闭源工具(如 ArcGIS)
成本开源免费昂贵授权(个人 / 企业版)
自动化能力支持批量脚本(处理海量数据)需手动操作或复杂模型构建
定制化可深度开发自定义模型(如 AI 解译)依赖预设工具,定制难度高
跨平台集成可对接 Web、数据库、AI 框架生态封闭,集成难度大
学习曲线需基础编程能力,入门稍难可视化界面,入门简单

六、学习资源推荐

  1. 官方文档(核心参考)

    • GeoPandas 官方文档:矢量数据处理权威指南;
    • Rasterio 官方文档:栅格数据处理教程;
    • EarthAccess 文档:NASA 数据下载工具。
  2. 在线课程

    • Coursera《Python for Everybody》(密歇根大学):Python 基础 + 简单 GIS 应用;
    • Udemy《Python for GIS and Remote Sensing》:针对性讲解地学库实操;
    • 中国大学 MOOC《地理空间数据分析与 Python 实践》:国内本土化案例。
  3. 书籍

    • 《Python 地理数据处理》(Paul Crickard):从基础到实战的全面教程;
    • 《GIS 与 Python 实战》(Eric Westra):侧重传统 GIS 任务的 Python 实现。
  4. 开源项目与社区

    • GitHub 仓库:geopandas/geopandasrasterio/rasterio(源码与示例);
    • Stack Overflow(gis 标签):解决实际问题的问答社区;
    • 知乎 “Python 地理” 专栏:国内学者分享的实战案例。

七、趋势小结

  1. GeoAI(地理人工智能):Python 结合深度学习(如 Transformer、SAM),实现更高精度的遥感解译(如灾害识别、作物分类);
  2. 云原生地学计算:基于云平台(如 AWS、Google Earth Engine Python API)处理 PB 级地学数据,降低本地算力需求;
  3. 实时时空分析:对接物联网(IoT)数据,实现动态监测(如实时洪水预警、交通流量分析);
  4. 开源生态整合:库间协作更紧密(如 GeoPandas + MovingPandas 处理时空数据),降低开发门槛。

http://www.dtcms.com/a/336223.html

相关文章:

  • 机器学习--数据清洗
  • Python知识点汇总
  • 人工智能训练师复习题目实操题1.2.1 - 1.2.5
  • 4.Ansible自动化之-部署文件到主机
  • Mac(五)自定义鼠标滚轮方向 LinearMouse
  • 【网络通信】TCP/IP 协议全方位解析​
  • 计算机网络 TCP、UDP 区别
  • 云原生俱乐部-RH134知识点总结(2)
  • mediamtx v1.14.0版本全面解析:RTP流接收、IPv6支持与性能监控体系升级​
  • 如何做HTTP优化
  • Python 项目里的数据清理工作(数据清洗步骤应用)
  • 芯片行业主要厂商
  • Java 大视界 -- 基于 Java 的大数据分布式计算在气象灾害预警与应急响应中的应用
  • LeetCode 837.新 21 点:动态规划+滑动窗口
  • 动态规划法 - 53. 最大子数组和
  • MySQL数据库基础操作指南:从创建到管理的完整流程
  • Linux系统中6种替代top的工具
  • SparkSQL性能优化实践指南
  • ubuntu 24.04 安装
  • RAC环境redo在各节点本地导致数据库故障恢复---惜分飞
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • 从零配置YOLOv8环境:RTX 3060显卡完整指南
  • 43.安卓逆向2-补环境-使用unidbg(使用Smali语法调用方法和使用方法地址调用方法)
  • n2n局域网搭建
  • 0-12岁幼儿启蒙与教育
  • Linux操作系统远程连接
  • 代码管理系统简介与部署
  • 《告别 if-else 迷宫:Python 策略模式 (Strategy Pattern) 的优雅之道》
  • Honor of Kings 101star (S40) 2025.08.17
  • Spring Bean 的生命周期:从创建到销毁的完整旅程​