无力承担ArcGIS,求QGIS导出SHP转ArcGIS MDB的可行方法
从SHP转换到ArcGIS Personal Geodatabase(MDB)的免费方法
方法1:使用QGIS内置的GDAL/OGR工具
QGIS自带GDAL库,直接通过Processing工具箱即可完成转换。注意Personal Geodatabase(.mdb)基于32位Access格式,64位QGIS可能存在兼容性问题,建议使用32位QGIS版本:
- 打开QGIS并加载目标SHP文件;
- 打开「Processing」→「Toolbox」,搜索「Convert vector format」工具;
- 在工具界面中:
- 输入图层选择待转换的SHP;
- 输出格式选择「Personal Geodatabase」(对应GDAL的PGeo驱动);
- 指定输出.mdb文件的保存路径;
- 点击「Run」执行转换。
若习惯命令行操作,可在32位GDAL环境下直接运行:
ogr2ogr -f "PGeo" output.mdb input.shp
方法2:使用OpenJUMP GIS
OpenJUMP是轻量开源GIS工具,原生支持Personal Geodatabase格式:
- 下载并安装32位版本的OpenJUMP;
- 启动后通过「File」→「Open」导入SHP文件;
- 选中导入的图层,右键选择「Save Layer As」;
- 在保存对话框中,格式选择「Personal Geodatabase」,指定输出路径后完成导出。
方法3:GeoTools(适合有编程基础的用户)
如果需要批量转换或自动化处理,可借助GeoTools库的PGeo驱动:
- 引入GeoTools的
gt-shapefile和gt-pgeo模块依赖; - 编写核心转换逻辑示例:
// 读取SHP文件 File shpFile = new File("input.shp"); ShapefileDataStore shpStore = new ShapefileDataStore(shpFile.toURI().toURL()); SimpleFeatureSource source = shpStore.getFeatureSource(); // 写入MDB文件 File mdbFile = new File("output.mdb"); PGeoDataStore mdbStore = new PGeoDataStore(mdbFile); mdbStore.createSchema(source.getSchema()); SimpleFeatureStore store = (SimpleFeatureStore) mdbStore.getFeatureSource(source.getSchema().getTypeName()); store.addFeatures(source.getFeatures());
关键注意事项
- Personal Geodatabase是ArcGIS旧格式,若接收方兼容,优先选择导出为File Geodatabase(.gdb),QGIS可直接支持该格式转换,兼容性更好;
- 32位环境是读写.mdb的核心前提,64位工具因Access ODBC驱动限制,通常无法正常处理旧版.mdb文件。
内容的提问来源于stack exchange,提问作者mırro gırro
相关产品推荐
相关产品推荐

