Although your question is a bit broad for this site, consider this answer as an introduction guide.
For that, you need:
The line that represents the shortest path betwwen A and B, over a mathematical reference surface (it can be drawn, and densified, with a custom gnomonic projection).
To know physical/terrain/geographical obstructions between A and ...
I'm going to assume the DEM you are working with is in a geographic projection. If it's in UTM or something, you can still do what you want, but it'll be a little more complex.
First, you need to get the transformation matrix from the GDAL dataset.
transform = inRas.GetGeoTransform()
xOrigin = transform # x origin
yOrigin = transform # y origin
If I have understood you correctly I think this is fairly straightforward.
Add a new field to the attribute table of your building and woodland shapefiles, I would call it elevation. Use Field Calculator to assign the value of 8 and 15 respectively.
Use the Polygon to Raster tool on each to convert them to rasters.
Value field is your elevation attribute....
Filtering is for imageCollections. To clip an image, try this instead:
var dem = ee.Image("JAXA/ALOS/AW3D30_V1_1");
var geometry =
If you want to download the masked image, just create a new clipped variable and export it. Add this piece of code to the end your script (I selected bands 4, 3 and 2 in order to get an RGB):
// create clipped RGB
var clipped = above10.select(['B4','B3','B2']).clip(geometry)
// Export clipped with your chosen parameters
If you have access to a basic 3D Analyst license you can use Add Surface Information to populate the attribute table of a feature class with the Z value of the surface of your choice. Keep in mind that this tool (like all ESRI tools that have a vector to raster interface) will require that your two datasets share a coordinate reference system.
If you do ...
A solution is to get the DEM elevation values of the same points xy coordinates (red lines projections in the figure below) using osgeo.GDAL or rasterio to read the DEM, GeoPandas for the points shapefile and affine to get the elevation value (see Python affine transforms).
from osgeo import gdal
from affine import Affine
import geopandas as gpd
You can also use QGIS (which is open source) and/or Blender plugin Blender GIS.
Using QGIS, you can make a SHP (shapefile) out of a DEM and with Blender GIS you make a mesh out of the SHP (see this question and this question), or, you can import SRTM directly into Blender using only Blender GIS.