华东地区30米分辨率DSM数据发布

需积分: 5 4 下载量 167 浏览量 更新于2024-11-01 收藏 201.51MB ZIP 举报
资源摘要信息:"DSM_East_China.zip" 文件标题"DSM_East_China.zip"指明了这是一个包含数据集的压缩包文件,其内容与华东地区的数字地表模型(Digital Surface Model,简称DSM)有关。DSM是一种地理信息系统中的数据表示形式,用于记录和描绘地表以上所有物体的表面,包括建筑物、植被以及地面本身的高程信息。DSM提供了地形的三维视角,与仅表示地面本身而不包含建筑物等特征的数字高程模型(DEM)相区别。 描述中提到的"Alos World 3D数据"指的是由日本宇宙航空研究开发机构(JAXA)发射的先进陆地观测卫星(Advanced Land Observing Satellite,简称ALOS)的World 3D产品。ALOS卫星携带的传感器能够捕捉高分辨率的地表图像,而World 3D产品则是利用这些数据生成的全球范围的高精度地表三维模型。 "30米分辨率"指的是DSM数据的空间分辨率,即数据中的每一个像素点代表了地面30米×30米的区域。这个分辨率的数据能够提供相对较精细的地表信息,适合进行城市规划、灾害监测、环境研究等应用。 文件中的"dat格式"通常指的是数据文件,用于存储地理空间数据、遥感图像数据或其他科学数据。在这种情况下,DSM_East_China.dat文件很可能是包含实际地理高程信息的二进制或ASCII编码文件。另一个文件"DSM_East_China.hdr"是头文件(header file),它通常包含了与数据文件相关的元数据信息,例如数据的范围、坐标参考系统、数据类型、文件的大小和像素值等。头文件对于正确解读数据文件是必不可少的,因为它提供了必要的上下文信息,帮助用户和应用程序了解如何处理和解释数据文件中的信息。 在标签方面,"DSM 30米 华东"指明了这个数据集的三个关键特征:首先,它是一个数字地表模型(DSM);其次,数据的空间分辨率为30米;最后,数据所覆盖的地理区域是华东地区,即中国东部沿海地区,这一地区包括了诸如上海、江苏、浙江、安徽、福建、江西、山东等省份。 综上所述,该压缩包文件"DSM_East_China.zip"包含了覆盖中国华东地区、以30米分辨率呈现的数字地表模型数据。该数据集基于ALOS World 3D产品,以dat和hdr格式存储,便于进行地理空间分析和各种遥感应用。这类数据集对于城市规划者、环境科学家以及灾害管理机构具有很高的实用价值,可以帮助他们更好地理解和分析地面情况,进行模拟预测和决策支持。
2023-06-07 上传

class SpiralIterator: def init(self, source, x=810, y=500, length=None): self.source = source self.row = np.shape(self.source)[0] #第一个元素是行数 self.col = np.shape(self.source)[1] #第二个元素是列数 if length: self.length = min(length, np.size(self.source)) else: self.length = np.size(self.source) if x: self.x = x else: self.x = self.row // 2 if y: self.y = y else: self.y = self.col // 2 self.i = self.x self.j = self.y self.iteSize = 0 geo_transform = dsm_data.GetGeoTransform() self.x_origin = geo_transform[0] self.y_origin = geo_transform[3] self.pixel_width = geo_transform[1] self.pixel_height = geo_transform def hasNext(self): return self.iteSize < self.length # 不能取更多值了 def get(self): if self.hasNext(): # 还能再取一个值 # 先记录当前坐标的值 —— 准备返回 i = self.i j = self.j val = self.source[i][j] # 计算下一个值的坐标 relI = self.i - self.x # 相对坐标 relJ = self.j - self.y # 相对坐标 if relJ > 0 and abs(relI) < relJ: self.i -= 1 # 上 elif relI < 0 and relJ > relI: self.j -= 1 # 左 elif relJ < 0 and abs(relJ) > relI: self.i += 1 # 下 elif relI >= 0 and relI >= relJ: self.j += 1 # 右 #判断索引是否在矩阵内 x = self.x_origin + (j + 0.5) * self.pixel_width y = self.y_origin + (i + 0.5) * self.pixel_height col = int((x - dsm_data.GetGeoTransform()[0]) / dsm_data.GetGeoTransform()[1]) row = int((y - dsm_data.GetGeoTransform()[3]) / dsm_data.GetGeoTransform()[5]) z = val self.iteSize += 1 return x, y, z, row, col dsm_path = 'C:\sanwei\jianmo\Productions\Production_2\Production_2_DSM_part_2_2.tif' dsm_data = gdal.Open(dsm_path) dsm_array = dsm_data.ReadAsArray() spiral_iterator = SpiralIterator(dsm_array,x=810,y=500) while spiral_iterator.hasNext(): x, y, z, row, col = spiral_iterator.get() print(f'Value at ({x},{y}) ({row},{col}):{z}')这段代码怎么改可以当原始航片该位置像素值为 0 值,修改其像素值为 255,当 原始航片该位置像素值为 255 时,说明此点已被占用,则对地面点(X,Y,Z)标记此点位被遮蔽

2023-05-24 上传

class SpiralIterator: def init(self, source, x=810, y=500, length=None): self.source = source self.row = np.shape(self.source)[0]#第一个元素是行数 self.col = np.shape(self.source)[1]#第二个元素是列数 if length: self.length = min(length, np.size(self.source)) else: self.length = np.size(self.source) if x: self.x = x else: self.x = self.row // 2 if y: self.y = y else: self.y = self.col // 2 self.i = self.x self.j = self.y self.iteSize = 0 geo_transform = dsm_data.GetGeoTransform() self.x_origin = geo_transform[0] self.y_origin = geo_transform[3] self.pixel_width = geo_transform[1] self.pixel_height = geo_transform[5] def hasNext(self): return self.iteSize < self.length # 不能取更多值了 def get(self): if self.hasNext(): # 还能再取一个值 # 先记录当前坐标的值 —— 准备返回 i = self.i j = self.j val = self.source[i][j] # 计算下一个值的坐标 relI = self.i - self.x # 相对坐标 relJ = self.j - self.y # 相对坐标 if relJ > 0 and abs(relI) < relJ: self.i -= 1 # 上 elif relI < 0 and relJ > relI: self.j -= 1 # 左 elif relJ < 0 and abs(relJ) > relI: self.i += 1 # 下 elif relI >= 0 and relI >= relJ: self.j += 1 # 右 #判断索引是否在矩阵内 x = self.x_origin + (j + 0.5) * self.pixel_width y = self.y_origin + (i + 0.5) * self.pixel_height z = val self.iteSize += 1 return x, y, z dsm_path = 'C:\sanwei\jianmo\Productions\Production_2\Production_2_DSM_part_2_2.tif' dsm_data = gdal.Open(dsm_path) dsm_array = dsm_data.ReadAsArray() spiral_iterator = SpiralIterator(dsm_array,x=810,y=500) while spiral_iterator.hasNext(): x, y, z = spiral_iterator.get() print(f'Value at ({x},{y}):{z}')这段代码如何添加共线方程

2023-05-24 上传