📜  将 shp 转换为 geojson python - Javascript (1)

📅  最后修改于: 2023-12-03 15:39:13.400000             🧑  作者: Mango

将 SHP 转换为 GeoJSON
简介

geoJSON是一种JavaScript对象表示法(JSON)格式,用于表示地理数据。 ESRI shapefile(.shp)是一种矢量数据文件格式,用于存储地理数据,例如点,线和多边形。

将shapefile转换为geoJSON格式可以方便地在Web应用程序中显示地图。在本教程中,我们将使用Python和JavaScript演示如何将shapefile文件转换为geoJSON文件。

Python代码

要将shapefile转换为geoJSON格式,我们需要使用Python中的pyshp库。以下是使用Python的示例代码:

import shapefile
import json

# 读取shapefile文件
reader = shapefile.Reader('file.shp')

# 获取所有要素的列表
features = []

# 获取字段列表
fields = []

# 遍历所有要素
for sr in reader.shapeRecords():
    # 定义要素字典
    feature = {}
    # 添加要素的类型
    feature['type'] = 'Feature'
    # 添加要素的几何形状
    geom = sr.shape.__geo_interface__
    feature['geometry'] = geom
    # 添加所有字段
    prop = sr.record.__dict__
    feature['properties'] = prop
    features.append(feature)

# 获取所有字段名称
for field in reader.fields:
    fields.append(field[0])

# 构建geoJSON字典
geojson = {'type': 'FeatureCollection', 'features': features, 'fields': fields}

# 将geoJSON字典写入文件
with open('file.geojson', 'w') as f:
    json.dump(geojson, f)
JavaScript代码

在JavaScript中,我们可以使用shapefile-js库将shapefile文件转换为geoJSON格式。以下是使用JavaScript的示例代码:

const shp = require('shpjs');

// 读取shapefile文件
shp('file.zip').then(function(data) {
    // 将shapefile数据转换为geoJSON格式
    const geoJSON = JSON.stringify(data);
    // 将geoJSON数据写入文件
    fs.writeFile('file.geojson', geoJSON, (err) => {
        if (err) throw err;
        console.log('File saved!');
    });
});
结论

使用Python和JavaScript的示例代码,我们可以将shapefile文件转换为geoJSON格式,以便在Web应用程序中方便地显示地图。此外,我们还可以根据需要使用其他库和工具进行转换,例如ogr2ogr等。