gdal_viewshed
gdal_viewshed -md 10000 -ox 12509311 -oy 4769484 -a_nodata 0 srtm_59_05_3857.tif viewshed.tif
gdal. ViewshedGenerate
from osgeo import gdal
ds = gdal.Open('srtm_59_05_3857.tif')
band = ds.GetRasterBand(1)
gdal.ViewshedGenerate(srcBand=band, driverName='GTiff', targetRasterName='viewshed.tif', creationOptions=None, observerX=12509311, observerY=4769484, observerHeight=2, targetHeight=0, visibleVal=255, invisibleVal=0, outOfRangeVal=0, noDataVal=0, dfCurvCoeff=0.85714, mode=2, maxDistance=10000)
effect