用QGIS将shp转json

本文介绍如何使用QGIS进行矢量文件的加载与转换,包括shp文件的导入和geojson文件的导出流程,并解决乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 下载 QGIS,QGIS 为开源免费软件,不用破解,安装比较容易,这里就不再列出详细教程。

  2. 打开 QGIS Destktop。

  3. 添加 vector file,如图箭头所示。
    1
    更快捷的方法是将 ,将 shp 、dbf 等文件直接拖到 Layers Panel 框里面 。这样就可以跳过步骤 4 直接打开文件了。

  4. 弹出选择文件的对话框,Encoding 选择 System,然后点击 Browse,选择 shp 及相关的文件添加进来。(最重要的是 shp 格式的文件和 dbf 格式的文件)。
    这里写图片描述
    其中步骤 2 点击后如下图所示
    这里写图片描述

  5. 打开文件后,点击属性表看一下中文是否乱码
    这里写图片描述
    打开后的属性表如图所示,没有乱码,如果乱码,一般是因为步骤 4
    的 Encoding 选项那里选错了。
    这里写图片描述

  6. 导出 geojson 文件:在左边的 Layers panel 区域,在任意一个图层右键,选择 Save As。
    这里写图片描述
    弹出保存文件的对话框,顶部的 Format 选择 geojson,然后点击
    browse,选择保存文件的路径。点击确定保存。这样就可以把shp转为json了。
    这里写图片描述
    导出完成后,全选 Layers panel 里面打开的图层文件,右键→remove,
    即可关闭所打开的图层。

### 将SHP文件换为JSON格式的方法或工具 将SHP文件换为JSON格式是地理信息系统(GIS)数据处理中的常见需求。以下是实现这一目标的几种方法和工具: #### 方法一:使用QGIS进行QGIS是一款功能强大的开源GIS软件,支持多种文件格式的换。具体步骤如下: - 打开QGIS并加载需要换的SHP文件。 - 在菜单栏中选择“图层” > “保存为”。 - 在弹出的对话框中选择输出格式为GeoJSON[^1]。 - 设置输出路径并保存文件。 这种方法适合于用户界面操作,尤其适合对编程不熟悉的用户。 #### 方法二:使用GDAL/OGR库 GDAL(Geospatial Data Abstraction Library)是一个用于读写栅格和矢量地理空间数据格式的开源库。可以通过命令行或编程方式实现SHPJSON换。 ##### 命令行方式 ```bash ogr2ogr -f GeoJSON output.json input.shp ``` 上述命令会将`input.shp`文件换为`output.json`文件,格式为GeoJSON[^3]。 ##### 编程方式(Python示例) GDAL也提供了Python绑定,可以编写脚本完成换: ```python from osgeo import ogr # 打开SHP文件 in_driver = ogr.GetDriverByName('ESRI Shapefile') in_data_source = in_driver.Open('input.shp', 0) in_layer = in_data_source.GetLayer() # 创建GeoJSON文件 out_driver = ogr.GetDriverByName('GeoJSON') out_data_source = out_driver.CreateDataSource('output.json') out_layer = out_data_source.CreateLayer('output', in_layer.GetSpatialRef(), geom_type=in_layer.GetGeomType()) # 复制字段定义 in_layer_defn = in_layer.GetLayerDefn() for i in range(in_layer_defn.GetFieldCount()): field_defn = in_layer_defn.GetFieldDefn(i) out_layer.CreateField(field_defn) # 获取输出图层定义 out_layer_defn = out_layer.GetLayerDefn() # 复制要素 for in_feature in in_layer: out_feature = ogr.Feature(out_layer_defn) out_feature.SetGeometry(in_feature.GetGeometryRef().Clone()) for i in range(out_layer_defn.GetFieldCount()): out_feature.SetField(out_layer_defn.GetFieldDefn(i).GetNameRef(), in_feature.GetField(i)) out_layer.CreateFeature(out_feature) out_feature = None # 关闭数据源 in_data_source = None out_data_source = None ``` #### 方法三:在线工具 如果不想安装软件或配置环境,可以使用在线工具完成换。例如: - **MapShaper** (https://mapshaper.org/):支持直接上传SHP文件并导出为GeoJSON。 - **AConvert** (https://www.aconvert.com/):提供多种文件格式的换服务,包括SHPJSON。 这些工具适合快速测试或小规模数据处理。 --- ### 注意事项 - 确保SHP文件及其关联文件(如`.shx`、`.dbf`)完整无缺,否则可能导致换失败。 - 如果SHP文件包含复杂的几何类型(如多边形、线),需确认输出JSON格式是否能正确表示这些几何结构。 - 换过程中可能涉及坐标系换,请根据实际需求设置相应的投影参数。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值