欢迎访问宙启技术站
智能推送

如何使用Python将GeoJSON数据转换为KML格式

发布时间:2024-01-08 22:03:32

要将GeoJSON数据转换为KML格式,可以使用Python中的geojson和fastkml库。以下是一个使用示例:

首先,确保安装了所需的库。可以使用以下命令安装:

pip install geojson
pip install fastkml

接下来,创建一个Python脚本,导入所需的库:

import geojson
from fastkml import kml
from shapely.geometry import shape

然后,加载GeoJSON文件:

with open('input.geojson') as f:
    geojson_data = geojson.load(f)

接下来,将GeoJSON数据转换为KML格式:

kml_doc = kml.KML()
placemark = kml.Placemark()
polygon = shape(geojson_data['geometry'])
geom = polygon.__geo_interface__
geom_type = geom['type']
coords = geom['coordinates']

if geom_type == 'Polygon':
    boundary = kml.LinearRing()
    for lon, lat in coords[0]:
        boundary.add_coordinates([(lon, lat)])
    placemark.geometry = kml.Polygon(boundary)

elif geom_type == 'MultiPolygon':
    boundary = kml.LinearRing()
    for polygon_coords in coords:
        for lon, lat in polygon_coords[0]:
            boundary.add_coordinates([(lon, lat)])
    placemark.geometry = kml.MultiGeometry(kml.Polygon(boundary))

elif geom_type == 'Point':
    point = kml.Point(coords[::-1])
    placemark.geometry = point

folder = kml.Folder()
folder.append(placemark)
kml_doc.append(folder)

kml_str = kml_doc.to_string(prettyprint=True)

最后,将KML数据写入文件:

with open('output.kml', 'w') as f:
    f.write(kml_str)

请确保将input.geojson替换为实际的GeoJSON文件路径,并将output.kml替换为您想要保存KML数据的文件路径。

使用这个示例代码,您可以将GeoJSON数据转换为KML格式。根据GeoJSON数据中的几何类型(Polygon、MultiPolygon、Point等),代码将创建相应的KML几何对象(Polygon、MultiGeometry、Point)并将其添加到Placemark中。最后,创建一个KML文件并将其保存到指定的文件中。

有了这个例子,您应该能够使用Python将GeoJSON数据转换为KML格式。