pygplates专栏——Reconstruc features——reconstruct regular features

pygplates专栏------Reconstruc features------reconstruct regular features

Reconstruct regular features

这个例子展示了几个不同的场景,涉及到重建地质时代的常见特征。

导出重构特征到文件

在这个例子中,我们重建常规特征并将结果导出到Shapefile。

示例代码

bash 复制代码
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)

bash 复制代码
rotation_model = pygplates.RotationModel('rotations.rot')

加载需要重建的特征(pygplates.FeatureCollection)

bash 复制代码
features = pygplates.FeatureCollection('features.gpml')

设置重建时间

bash 复制代码
reconstruction_time = 50

最后完成重建结果并保存

bash 复制代码
pygplates.reconstruct(features, rotation_model, export_filename, reconstruction_time)

计算重建距离

示例代码

bash 复制代码
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.PointOnSphere,pygplates.MultiPointOnSphere,pygplates.PolyineOnSphere或pygplates.PolygonOnSphere。每种几何要素类型需要不同的方法获取质点。

因此我们首先尝试pygplates.PolygonOnSphere.get_interior_centroid(),然后尝试get_centroid(),最后几何要素点就是它本身的质点。

bash 复制代码
def get_geometry_centroid(geometry):
    try:
        return geometry.get_interior_centroid()
    except AttributeError:
        pass
    try:
        return geometry.get_centroid()
    except AttributeError:
        pass
    return geometry

使用pygplates.GeometryOnSphere.distance()方法来计算两个质点之间的最短距离,然后使用pygplates.Earth将其转换为公里数。

bash 复制代码
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
相关推荐
Chef_Chen7 分钟前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
千澜空27 分钟前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩34 分钟前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
yannan201903131 小时前
【算法】(Python)动态规划
python·算法·动态规划
蒙娜丽宁1 小时前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev1 小时前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
好喜欢吃红柚子1 小时前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python1 小时前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯2 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
千天夜2 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流