用于处理地形数据的topotools模块

笔记本地形工具_示例说明了如何使用一些工具。

文件$CLAW/geoclaw/tests/test_topotools.py包含这些测试工具。查看这些测试例程也可以给出一些关于如何使用它们。

从模块docstring自动生成的文档

GeoClaw拓扑工具模块$CLAW/geoclaw/src/python/geoclav/topotools.py

模块提供了几个用于读取、写入和操作的函数地形(测深)文件。

课程:
  • 地形

功能:
  • 确定地形类型

  • 创建拓扑函数

  • 地形1写入器

  • topo2编写器

  • 拓扑3编写器

  • 抽汲器

TODO公司:
  • 添加子采样和超级采样功能

  • 添加基于地形功能创建地形的功能,合并将create_topo_func添加到Topography类中,可能允许更广泛的类的初始化能力来处理这个问题?

  • 修复聚丙烯(_P)功能

  • 添加删除/填充无数据值

  • 添加更强大的绘图功能

clawpack.geoclaw.topotools。地形(路径=,地形_类型=,地形_功能=,非结构化的=False(错误),**关键字参数)

基础地形等级。

表示单个地形文件的类。

属性:

注意:已修改以检查网格_注册阅读或写作时topo文件并正确处理ll转角注册,在这种情况下x,y数据应从左下角偏移dx/2,dy/2在DEM文件的头中指定。

初始化:
示例:
>>>进口 clawpack.geoclaw.topotools软件 作为 地形
>>>拓扑文件(_F) = 地形.地形()
>>>拓扑文件(_F).阅读('./地形tt3’, 地形_类型=)
>>>拓扑文件(_F).情节()
财产 X(X)

x方向的二维坐标阵列。

财产 Y(Y)

y方向的二维坐标阵列。

财产 Z

将数据表示为二维数组。

作物(过滤器区域=,使变粗=1)

裁剪区域到过滤器区域

创建与此对象相同但已裁剪的新地形对象到filter_region指定的区域

TODO公司:
  • 目前,这不适用于非结构化数据,原则上可以

  • 这可能是in_poly的特殊情况,尽管该例程可以有效地使生成的地形保持非结构化。

财产 三角洲

数据点的间距。

财产 程度

地形范围。

生成2d坐标(面具=False(错误))

生成二维坐标阵列。

生成2d_topo(面具=False(错误))

生成地形的二维数组。

聚丙烯(_P)(多边形)

遮罩不在指定多边形中的点(x,y)。

使用简单的光线投射算法提高速度,因此要小心拐角情况!

输入:
  • 多边形(list)组成多边形的点的列表。请注意如果这样做有效(积极与消极绕组顺序)。点应逆时针排列。

退换商品:
  • X任务(_M)(numpy.ma.MaskedArray)X坐标的屏蔽数组,其中多边形外部的点已被遮罩。

  • Y(Y)(numpy.narray)网格类型中y方向的坐标配置。

非结构化交互(填充_topo,程度=,方法=“最近的”,三角洲=,增量限制(_L)=20,无数据值=-99999,缓冲区长度=100,近似_半径=100,分辨率极限=2000)

将非结构化数据插值到常规网格上。

函数将拓扑对象中的非结构化数据插值到结构化网格。使用边界框和大小为的缓冲区缓冲区长度(米)包含所有数据,除非范围不是“无”真的然后使用填充地形填充(_PO)填写非结构化数据中的缺口。默认情况下,这是通过屏蔽使用范围、值填充数据无数据值如果近似_半径(米)不是0,半径为近似_半径从对象中的所有网格点。存储导致自我。X(X),自我。Y(Y)自我。Z对象属性。这个最终网格的分辨率通过计算最小值确定所有之间的距离x个硬下限为的数据增量限制(_L)(米)。

注意,函数科学.互联网.gridata不尊重屏蔽对的呼叫numpy.ma.MaskedArray.compressed()必须做到删除屏蔽的数据。

输入:
  • 填充_topo(list)-用作填充数据的地形对象列表在投影中。

  • 程度(元组)-定义子节矩形的元组。必须采用以下形式(x下,x上,y下,y上)。

  • 方法(string)-用于插值的方法,有效方法为在中找到科学.互联网.gridata。默认值为最近的.

  • 三角洲(tuple)-直接设置插值的网格间距而不是从数据本身来确定。默认为这会导致方法本身确定该值。应该是浮点数的2元组(delta_x,delta_y)。

  • 增量限制(_L)(浮点)-最佳水平分辨率的极限,默认值为20米。

  • 无数据值(float)—未找到要填充的数据时使用的值缺少值,如果方法=“最近”。默认值为-99999.

  • 缓冲区长度(浮动)-边界框周围的缓冲区,仅适用什么时候程度“无”。默认值为100米。

  • 近似_半径(float)—每个非结构化数据点的半径用于用屏蔽填充数据。默认值为100米。

  • 分辨率极限(int)-限制单一维度。引发值错误如果违反了限制。默认值为2000.

设置此对象的非结构化的属性到False(错误)如果成功。

make_shoreline_xy品牌(海平面=0)

返回数组海岸线_xy包含2列包含x和y值海岸线的所有分段(定义为等高线其中self.z=海平面)由[nan,nan]对分隔。这允许通过以下方式快速绘制所有海岸线:

>>>情节(海岸线_xy[:,0], 海岸线_xy[:,1])

海岸线可以保存为二进制.npy文件文件通过:

>>>努皮.节约(文件名, 海岸线_xy)

它比原始地形文件小得多。通过以下方式重新加载:

>>>海岸线_xy = 努皮.负载(文件名)
情节(=,轮廓_水平=,轮廓_kwargs={},限制=,cmap公司=,添加颜色栏=真的,绘图框=False(错误),长_长=真的,图_kwargs={},数据中断=0,cb_夸格斯={})

绘制地形。

输入:
  • (matplotlib.pyplot.axis)-如果传入,则plot将为添加到此轴。否则将创建新的绘图图形(使用图_kwargs)和一个新的对象已创建并返回。

  • 轮廓_水平(列表)-等高线的标高,如果是要添加(默认值). 设置为[0.]以绘制海岸线。

  • 轮廓_kwargs要传递给的(dict)-关键字参数轮廓命令,例如{'colors':'r','linestyles':'-'}。默认值为空字典。

  • 限制(list)-彩色地图的拓扑值的(最小值,最大值)。默认为None,在这种情况下(self.Z.min(),self。Z.max())。

  • cmap公司(matplotlib.colors.Colormap)-颜色映射,默认为专业地图,蓝色用于测深,绿色/棕色用于地形。

  • 图_kwargs(dict)-要传递给图形的关键字参数。

  • 绘图框(布尔或颜色说明符)-如果计算结果为True,则打印围绕此地形界限的框。

  • 长_长(布尔)-如果这是一个经纬度图,则设置用于补偿拉伸的绘图方面。如果不是,那么方面设置为“相等”。

  • 数据中断(float)-当使用默认cmap时,要使用的值打破水陆色彩图之间的界限。默认为0.,但对于某些拓扑文件,可能需要使用例如0.01或者可能希望显示不同潮汐阶段的绘图。

  • cb_夸格斯(dict)-要传递到颜色栏的关键字参数例如“收缩”、“延伸”、“标签”。还可以为cbar设置“title”

输出:
  • (matplotlib.pyplot.axis)-创建绘图的轴。

请注意:
  • 如果类型(self.Z)numpy.ma.MaskedArray数然后伪彩图使用,

  • 如果类型(self.Z)数字标准然后显示图像使用。(这对于大文件来说更快)

阅读(路径=,地形_类型=,非结构化的=False(错误),面具=False(错误),过滤器区域=,=False(错误),步幅=[1, 1],网络控制图={})

从对象的路径属性。

将结果数据存储在x个,、和z(z)X(X),Y(Y)、和Z.

输入:
  • 路径要读取的(str)文件

  • 地形_类型(int)-GeoClaw格式topo_type

  • 非结构化的(bool)-对于lat-long栅格,默认值为False。

  • 面具(bool)-是否存储为缺少的屏蔽数组值(如果为False,则为默认值)

  • 过滤器区域(元组)

  • 跨步(列表).x和y维度的步幅列表分别是。默认值为[1, 1]。请注意,这只是目前已实现NetCDF读取。

  • nc_参数(判决)-

在实例化对象时,前三个可能已经设置。

read_header(读取页眉)()

在路径处读取地形文件的标题。

如果值返回numpy.nan,则该值不可检索。注释此例程可以读取值和标签为交换了的。

替换no_data_values(方法=“填充”)

更换无数据值其他值由方法.

自编号数据值

输入:
  • 方法可以是以下之一:

    • 填满-填写全部无数据值位置,具有价值

    • 最近的-填写无数据值具有的位置最近邻居的平均值。

替换值(指数,价值=,方法=“填充”)

替换处的值指数通过指定的方法

方法:
  • “填充”

  • “最近的”

设置_xyZ(X(X),Y(Y),Z)

设置_x、_y和_Z属性,然后生成x、y、Z。

如果X,Y是1d数组,那么Z的形状应该是(len(Y),len(X))。

允许X、Y是形状Z.shape的二维数组,在这种情况下第一次提取x,y

平滑数据(指数,第页=1)

在以下位置过滤地形数据指数通过平均周围的数据。

周围数据考虑在半径范围内第页在中信息-形式。用作低频带通滤波器,可消除振荡数据。

输入:
  • 指数(列表)

  • 第页(整数)

输出:

(路径,地形_类型=,无数据值=,fill_value(填充值)=,页眉_样式=“土爪”,Z格式(_F)=“%15.7e”,网格注册=)

将地形文件写入类型的路径地形_类型.

写出用指定的地形类型的地形文件地形_类型从输出文件的扩展名推断,默认为3,路径为来自Z中的数据。其余参数用于写入标头数据。

输入:
  • 路径(str)-要写入的文件

  • 地形_类型(int)-GeoClaw格式topo_type注:这是第二个立场论点,同意这个类中的read函数。这是年第三次辩论GeoClaw 5.3.1及更早版本。

  • 无数据值-用于指示缺失数据的值

  • fill_value(填充值)(float)—填充屏蔽数组时使用的值

  • 页眉_样式(str)-表示标题行的格式
    “geoclaw”或“default”==>写入值然后标记

    默认为grid_registration==“lower”

    “arcgis”或“asc”==>写入标签然后写入值

    默认为grid_registration=='llcorner'(ArcGIS中的.asc文件需要)

  • Z格式(_F)(str)-用于Z值的字符串格式默认格式“%15.7e”提供的精度至少为毫米对于abs(Z)<10000的地形,结果为小于中使用的先前默认值“%22.15e”的文件GeoClaw 5.3.1及更早版本。可以使用较短的格式如果用户知道有效数字较少,例如。etopo1数据是整数,因此分辨率为1米。在这种情况下,可以编写裁剪或粗化版本具有Z_format=“%7i”例如。

  • 网格_注册(str)-“lower”,“llcorner”,“ll中心”

    对于上述默认值,则为“无”。

财产 x个

x方向的一维坐标数组。

财产

y方向的一维坐标阵列。

财产 z(z)

将数据表示为1d数组。

clawpack.geoclaw.topotools。创建拓扑函数(本地,冗长的=False(错误))

给定一组(x,z)指定的一维地形剖面值,创建一个lambda函数,该函数在求值时将给出在点(x,y)处进行顶描。(结果函数以y为单位为常量)

例子:
>>>(f) = 创建拓扑函数(本地)
>>>b条 = (f)(x个, )
输入:
  • 本地(list)-创建一个地形文件,其轮廓由loc中的元组。下面显示了一组示例点。注释列表的第一个值是x位置,第二个值是地形的高度。

    z(z) ()
    ^                                                  o个 本地[5]  o个
    |                                                    
    |                                          本地[4]   
    |--------------------------------------------o个-----> x个 () ( 水平)
    |                                            
    |                                o个 本地[2] o个 本地[]
    |                         
    |                         
    |                           o个 本地[1]
    |           
    |                               
    |__________________o个 本地[0]
    0               
    
clawpack.geoclaw.topotools。确定地形类型(路径,违约=)

使用路径的文件后缀,尝试确定拓扑类型。

输入:
  • 路径(字符串)-文件的路径。可以包括存档扩展(它们将被剥离)。

  • 违约(object)—如果没有合适的拓扑类型,则返回值已确定。默认值为.

返回1-3之间的整数或违约如果没有匹配项。

clawpack.geoclaw.topotools。获取topo_url(网址,本地_名称=,=,冗长的=False(错误),询问用户(_U)=False(错误))

弃用:使用clawpack.clawutil.data.get远程文件相反(见下文注释)。

替换get_topo函数。

从web下载拓扑文件,前提是该文件没有本地已存在。

输入:
  • 网址(str)包含文件名的URL

  • 本地_名称(str)要创建的本地文件的名称。如果local_fname==无,从URL中获取文件名

  • (bool)如果为False,请在下载之前提示用户。

对于GeoClaw示例,可以在中找到一些拓扑文件`http://www.geoclaw.org/topo`_有关存档的地形数据集的列表,请参阅该网站。

如果force==False,则提示用户确保可以下载,

如果force==None,则检查环境变量CLAW_TOPO_DOWNLOAD如果存在,则使用其值。这对脚本很有用python/runeexamples.py,它运行所有示例,因此不会停止提示。

此例程已被弃用,取而代之的是clawpack.clawutil.data.get远程文件。所有功能都应该是相同,但在内部调用另一个例程。

clawpack.geoclaw.topotools。获取_目标(地形_名称,远程目录,=)

弃用:使用clawpack.geoclaw.util.get_远程文件相反

从web下载拓扑文件,前提是该文件没有本地已存在。

remote_directory应该是URL。对于GeoClaw数据,它可能是的子目录http://www.clawpack.org/geoclaw/topo有关存档的地形数据集的列表,请参阅该网站。

如果force==False,则提示用户确保可以下载,可以选择首先获取元数据的小文件。

如果force==None,则检查环境变量CLAW_TOPO_DOWNLOAD如果存在,则使用其值。这对脚本很有用python/runeexamples.py,它运行所有示例,因此不会停止提示。

clawpack.geoclaw.topotools。读取_获取cdf(路径,zvar公司=,程度=“全部”,使变粗=1,返回_topo=真的,return_x数组=False(错误),冗长的=False(错误))
输入:
  • 路径(str)—要读取的文件的路径,或远程文件的url,或topotools.remotetopourls字典中的键。

  • zvar公司(str)-变量,读取为Z=高程。如果无,将尝试“Band1”、“z”、“elevation”。

  • 程度-[x1,x2,y1,y2]表示所需子集,或“all”表示整个文件

  • 使变粗(int)-粗化因子,默认为1。

  • 返回_topo(bool)-如果为True,则返回topotools。地形对象。默认值为True

  • 返回数组(_X)(bool)-如果为True,则返回xarray。数据集对象。默认值为False

输出:
  • topo和/或xarrayds取决于请求的内容。(单个对象或两个对象的元组。)

如果return_xarray==真然后沙雷用于读取数据,否则净CDF4直接使用。

示例用法:

从clawpack.geoclaw导入拓扑工具范围=[-126,-122,46,49]路径=“etopo1”topo=topotools.read_netcdf(路径,范围=范围,粗化=2,冗余=True)

#要绘图:地形点()

#要保存地形文件以输入到GeoClaw,请执行以下操作:topo.write('etopo_sample_2min.tt3',topo_type=3,Z_format='%.0f')

这将为华盛顿西海岸提供2分钟分辨率的DEM。注意,etopo1 Z值是整数(垂直分辨率为1米)和使用Z_format=“%.0f”将保存为整数以最小化文件大小。

clawpack.geoclaw.topools。洗蜡机(输入文件,输出文件)

首先将标题中的键和值的顺序交换为值。

请注意,这是Topography类中功能的包装。

clawpack.geoclaw.topotools。地形1写入器(输出文件,地形,xlower公司,徐珀,伊洛尔,雅珀,nx点,nypoint(nypoint))

函数topo1writer将通过计算其他参数指定的网格上的函数topo。

假设topo可以在numpy.meshgrid生成的数组X、Y上调用。

输出文件是“topotype1”,我们使用它来引用带有每行上的(x,y,z)值,从左上角开始行,然后向下。

clawpack.geoclaw.topotools。topo2编写器(输出文件,地形,xlower公司,徐珀,伊洛尔,雅珀,nx点,nypoint(nypoint),节点数据值=-99999)

通过计算函数,写出拓扑类型2文件地形.

这个例程是为了向后兼容,只需创建一个新的topology对象并将其写出。

clawpack.geoclaw.topotools。拓扑3编写器(输出文件,地形,xlower公司,徐珀,伊洛尔,雅珀,nx点,nypoint(nypoint),节点数据值=-99999)

通过计算函数,写出拓扑类型3文件地形.

这个例程是为了向后兼容,只需创建一个新的topology对象并将其写出。