使用OSGeo OGR复制GPX文件时丢失属性信息且要素数量翻倍的问题求助
OSGeo OGR复制GPX文件时丢失属性信息且要素数量翻倍的问题求助
我现在用OSGeo的OGR库处理GPX文件,本来想做个最基础的测试——把in.gpx里的所有图层完整复制到out.gpx里,但遇到了两个奇怪的问题:一是输出的track_points要素数量翻倍了,二是原本的ele(海拔)和time(时间)属性都丢失了。
以下是我用的测试代码:
from osgeo import ogr, osr, gdal in_file = "in.gpx" out_file = "out.gpx" in_ds = ogr.Open(in_file) out_ds = ogr.GetDriverByName("GPX").CreateDataSource(out_file) for in_layer in in_ds: in_layer_defn = in_layer.GetLayerDefn() out_layer = out_ds.CreateLayer(in_layer.GetName(), in_layer.GetSpatialRef(), in_layer_defn.GetGeomType()) for feature in in_layer: out_layer.CreateFeature(feature)
我用ogrinfo -al分别查看了输入和输出文件的内容,结果如下:
输入文件(in.gpx)的关键输出片段:
... Layer name: track_points Geometry: Point Feature Count: 17 ... OGRFeature(track_points):0 track_fid (Integer) = 0 track_seg_id (Integer) = 0 track_seg_point_id (Integer) = 0 ele (Real) = 93.18 time (DateTime) = 2024/03/20 15:44:02.856+00 POINT (-8.617004 41.1505952)
输出文件(out.gpx)的关键输出片段:
... Layer name: track_points Geometry: Point Feature Count: 34 #### 要素数量翻倍了! ... OGRFeature(track_points):0 track_fid (Integer) = 0 track_seg_id (Integer) = 0 track_seg_point_id (Integer) = 0 POINT (-8.617004 41.1505952) #### 丢失了ele和time字段!
我反复检查了代码逻辑,觉得就是简单的遍历图层和要素然后创建,完全没搞懂为什么会出现这两个问题。有没有大佬能帮忙分析下原因,以及给出修复方案,让复制后的GPX文件和原文件保持完全一致?
内容来源于stack exchange
相关产品推荐
相关产品推荐

