通视分析 DEM可视率分析 gis 或 python 可见性分析 visibility

4 篇文章 0 订阅
2 篇文章 0 订阅

什么是可视率?

可视率是指在给定位置观察时能够看到的地形或景观的程度。在地理信息系统 (GIS) 和地理空间分析中,可视率通常是指从一个特定点观察周围地形时,所能观察到的区域的百分比或比例。

在数字高程模型 (DEM) 中,可视率通常用于确定地形的视域范围。较高的可视率意味着观察点能够看到更广阔的地形,而较低的可视率则表示有更多的地形被其他地形或障碍物所遮挡,观察者无法看到。

计算可视率通常涉及分析数字高程模型以确定从观察点向各个方向的地形高度。任何被周围地形或物体遮挡的地区都会减少可视率。这种分析对于城市规划、环境评估、通讯信号覆盖分析等领域都非常重要,因为它可以帮助确定最佳观察点、通信塔位置等。

使用【ArcMap】-【3D Analyst工具】,可以对数据进行通视分析。

图中绿色区域就是可视部分。

形象一点就是这样:

在ArcMap里只能实现一条视线上的通视,代码可以实现一整片区域的通视。

以下是使用python实现通视分析的代码,在使用时记得修改观察者高度。

from osgeo import gdal

def calculate_sky_visibility(dem_path, observer_height):
    # 打开 DEM 文件
    dem_dataset = gdal.Open(dem_path)
    if dem_dataset is None:
        print("无法打开 DEM 文件")
        return

    # 读取 DEM 数据
    dem_array = dem_dataset.ReadAsArray()

    # 获取 DEM 的地理转换信息
    transform = dem_dataset.GetGeoTransform()
    cell_size_x = transform[1]
    cell_size_y = transform[5]

    # 计算 DEM 的宽度和高度
    cols = dem_dataset.RasterXSize
    rows = dem_dataset.RasterYSize

    # 计算观察者在 DEM 上的位置
    observer_row = int((observer_height - transform[3]) / cell_size_y)

    # 计算可见天空的像素数
    visible_pixels = 0
    for row in range(rows):
        for col in range(cols):
            # 跳过观察者位置以下的像素
            if row >= observer_row:
                break
            # 检查当前像素是否被 DEM 遮挡
            if dem_array[row][col] < observer_height:
                visible_pixels += 1

    # 计算可视率
    total_pixels = rows * cols
    visibility_percentage = (visible_pixels / total_pixels) * 100

    return visibility_percentage

# DEM 文件路径
dem_path = "path/to/your/dem.tif"

# 观察者高度(以米为单位)
observer_height = 2.0  # 例如,2 米高的观察者

# 计算可视率
visibility = calculate_sky_visibility(dem_path, observer_height)
print("天空的可视率为: {:.2f}%".format(visibility))

还有 可见性分析 visibility

和之前可视域分析不同的地方在于,它可以输出所有的可视区域,而不只是一条视线上的可视区域

大家到官网看,官网说得更清楚

可见性 (3D Analyst)—ArcMap | 文档 (arcgis.com)

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值