I want to create a canopy height model (CHM) which has the height of objects (trees, building, etc.) from DSM and DTM. Below is the step by step procedures which I did so far.
I use open source s2p software to generate DSM from stereo pleiades images. According to the offical webpage of s2p, the output DSM's height is ellipsoid height. And the spatial resolution of stereo images and DSM is 50 cm.
I use python elevation package to download DTM (the website only said it's DEM but not specifically said it's DSM or DTM, so I assume that it's DTM). According to the website of the elevation package, the DTMs are obtained from SRTM which in theory should be geoid. And the spatial resolution of DTM is 30 m.
Now I have both DSM and DTM. I subtracted DSM by DTM and got CHM (I fixed the problem of two models having different spatial resolutions by resampling the DTM).
According to the graph below, I expect that the pixel value of the street height should be 0 or closed to 0.
However, the result is not what I expected.
The pixel value 36 is the height of a point on the center blue triangle which is the ground (not trees or building), which is not 0 or closed to 0.
Here are my questions:
- Is my idea of creating CHM correct?
- If 1. is correct, which step could be wrong? I think there might be two potentional problem. First, the accuracy of two DSM and DTM are not clear. However, I don't think they will influence the result too much. Second, the DSM and DTM are not on the same reference system.
- If 2. is correct, how do I convert ellipsoid height to geoid height and vice versa in a given area? (I don't think it's even possible though.)