中英文网站模板,常州做网站建设的公司,公司注册网上核名网站,wordpress pdf 预览pygplates专栏——Reconstruc features——reconstruct regular features Reconstruct regular features导出重构特征到文件示例代码详解 计算重建距离示例代码详解 Reconstruct regular features
这个例子展示了几个不同的场景#xff0c;涉及到重建地质时代的常见特征。
导… pygplates专栏——Reconstruc features——reconstruct regular features Reconstruct regular features导出重构特征到文件示例代码详解 计算重建距离示例代码详解 Reconstruct regular features
这个例子展示了几个不同的场景涉及到重建地质时代的常见特征。
导出重构特征到文件
在这个例子中我们重建常规特征并将结果导出到Shapefile。
示例代码
import pygplates# 加载板块运动模型
rotation_model pygplates.RotationModel(Muller2019-Young2019-Cao2020_CombinedRotations.rot)
# 加载一些features
features pygplates.FeatureCollection(Global_EarthByte_GPlates_PresentDay_Coastlines.gpmlz)
# 重建的地质时间
reconstruction_time 50
# 输出的文件
export_filename 6-Exported_reconstructed_features_to_a_file_reconstructed_{0}Ma.shp.format(reconstruction_time)
# 重建
pygplates.reconstruct(features, rotation_model, export_filename, reconstruction_time)详解
首先加载板块运动模型pygplates.RotationModel
rotation_model pygplates.RotationModel(rotations.rot)加载需要重建的特征pygplates.FeatureCollection
features pygplates.FeatureCollection(features.gpml)设置重建时间
reconstruction_time 50最后完成重建结果并保存
pygplates.reconstruct(features, rotation_model, export_filename, reconstruction_time)计算重建距离
示例代码
import pygplates# 返回几何要素(点/多点/折线/多边形)质心的函数。
def get_geometry_centroid(geometry):# 检查几何要素是否为多边形try:return geometry.get_interior_centroid()except AttributeError:# 不是多边形继续pass# 检查几何要素是否为多线条或多点try:return geometry.get_centroid()except AttributeError:pass# 仅剩点return geometry
# 加载板块运动模型
rotation_model pygplates.RotationModel(Muller2019-Young2019-Cao2020_CombinedRotations.rot)
# 加载一些特征
features pygplates.FeatureCollection(2-output_points.gpml)
# 重建地质时间
reconstruction_time 50
# 重建
reconstructed_feature_geometries []
pygplates.reconstruct(features, rotation_model, reconstructed_feature_geometries, reconstruction_time)
# 遍历所有重建结果
for reconstructed_feature_geometry in reconstructed_feature_geometries:# 计算距离今时今日几何要素的质点和重建后的质点distance_reconstructed pygplates.GeometryOnSphere.distance(get_geometry_centroid(reconstructed_feature_geometry.get_present_day_geometry()),get_geometry_centroid(reconstructed_feature_geometry.get_reconstructed_geometry()))# 将弧度转换为公里distance_reconstructed_in_kms distance_reconstructed * pygplates.Earth.mean_radius_in_kms# 输出相关特征名称和板块ID以及重建的距离print(Feature: %s % reconstructed_feature_geometry.get_feature().get_name())print( plate ID: %d % reconstructed_feature_geometry.get_feature().get_reconstruction_plate_id())print( distance reconstructed: %f Kms % distance_reconstructed_in_kms)详解
为了某个功能pygplates定义了许多相关的函数 如果我们可以忽略掉几何要素是否为pygplates.PointOnSpherepygplates.MultiPointOnSpherepygplates.PolyineOnSphere或pygplates.PolygonOnSphere。每种几何要素类型需要不同的方法获取质点。 因此我们首先尝试pygplates.PolygonOnSphere.get_interior_centroid()然后尝试get_centroid()最后几何要素点就是它本身的质点。
def get_geometry_centroid(geometry):try:return geometry.get_interior_centroid()except AttributeError:passtry:return geometry.get_centroid()except AttributeError:passreturn geometry使用pygplates.GeometryOnSphere.distance()方法来计算两个质点之间的最短距离然后使用pygplates.Earth将其转换为公里数。
distance_reconstructed pygplates.GeometryOnSphere.distance(get_geometry_centroid(reconstructed_feature_geometry.get_present_day_geometry()),get_geometry_centroid(reconstructed_feature_geometry.get_reconstructed_geometry()))
distance_reconstructed_in_kms distance_reconstructed * pygplates.Earth.mean_radius_in_kms