Get Height (Z) Values from DSM#

This part introduces the parameters and controls to get height (or z) values for ROI from Digital Surface Model (DSM) GeoTiff.

lotus plot

To be continued

keep_crs and warnings

We can notice, the roi x and y values also changed. Because the ROI shp geo-coord is EPSG::4326 while the DSM is EPSG::32654

if you want keep the x and y value, you can:

>>> roi.get_z_from_dsm(lotus.metashape.dsm, keep_crs=True)
>>> roi[0]
array([[139.54052962, 35.73475194,  97.39808655],
       [139.54055106, 35.73475596,  97.39808655],
       [139.54055592, 35.73473843,  97.39808655],
       [139.54053438, 35.73473446,  97.39808655],
       [139.54052962, 35.73475194,  97.39808655]])

But it is highly recommended to use the same CRS with the DOM/DSM, otherwise will raise ValueErrors in the later use.

File d:\onedrive\program\github\easyidp\easyidp\geotiff.py:159, in GeoTiff.crop(self, roi, is_geo, save_folder)
    156     else:
    157         save_path = None
--> 159     imarray = self.crop_polygon(polygon_hv, is_geo, save_path)
    161     out_dict[k] = imarray
    163 return out_dict

File d:\onedrive\program\github\easyidp\easyidp\geotiff.py:212, in GeoTiff.crop_polygon(self, polygon_hv, is_geo, save_path)
    210 with tf.TiffFile(self.file_path) as tif:
    211     page = tif.pages[0]
...
--> 815     raise ValueError("h and w must be strictly positive.")
    817 i1, j1 = i0 + h, j0 + w
    818 if i0 < 0 or j0 < 0 or i1 >= im_height or j1 >= im_width:

ValueError: h and w must be strictly positive.