扩展OGR格式驱动(二)-需要外部依赖库支持

本文详细记录了如何基于GDAL/OGR官方网站提供的教程,自行扩展并整合新的栅格和矢量数据格式。通过遵循一系列精心设计的步骤,包括源文件的编写、目录结构的调整、编译配置的修改以及最终验证编译结果,读者能够成功地将自定义格式编入GDAL/ogr库,实现数据格式的灵活应用。

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

GDAL/OGR官方网站中给了编写栅格和矢量数据新格式的教程,OGR Driver Implementation Tutorial,但是没有给出具体的编译过程,这篇博文记录如何将新建的格式编入gdal/ogr。

一、参考扩展OGR格式驱动(一)-无需外部依赖库

(1) 假设已经完成ogr_spf.h、ogrspfdatasource.cpp、ogrspfdriver.cpp、ogrspflayer.cpp四个源文件的编写,ogrspfdriver.cpp文件中添加驱动注册函数定义: 

1 void RegisterOGRSPF()
2  {
3     OGRSFDriverRegistrar::GetRegistrar()->RegisterDriver( new OGRSPFDriver );
4  }

(2) 修改完成后在ogr\ogrsf_frmts文件夹下创建spf文件夹,将这四个源文件放入其中。

(3) 修改ogrsf_frmts.h和ogrregisterall.cpp文件

在ogrregisterall.cpp中void OGRRegisterAll()函数中添加下面的代码: 

1 #ifdef SPF_ENABLED 
2     RegisterOGRSPF(); 
3 #endif

 在ogrsf_frmts.h中添加:

void CPL_DLL RegisterOGRSPF();

二、修改编译配置文件

(1) 在ogr\ogrsf_frmts\generic\makefile.vc文件中定义SPF_ENABLED:

   1:  !IFDEF SPF_LIB
   2:  SPFDEF    =    -DSPF_ENABLED
   3:  !ENDIF

在EXTRAFLAGS后添加:

   1:  EXTRAFLAGS =    -I.. -I..\.. $(OGDIDEF) $(FMEDEF) $(OCIDEF) $(PGDEF) \
   2:                   $(XLSDEF) $(SPFDEF)

(2) 在nmake.opt中定义SPF_LIB

   1:  # SPF Libraries
   2:  SPF_INC_DIR = D:\SPF\include
   3:  SPF_LIB = D:\SPF\spf.lib  other.lib

在EXTERNAL_LIBS后添加:

   1:   EXTERNAL_LIBS= … $(SPF_LIB)

(3)在ogr\ogrsf_frmts\makefile.vc添加

   1:  !IFDEF SPF_INC_DIR
   2:  SPF_DIR = spf
   3:  SPF_OBJ =spf\*.obj
   4:  !ENDIF

在DIRLIST后追加:

   1:  DIRLIST=... $(SPF_DIR)

在lib /out:后追加:

   1:  lib /out: ... $(SPF_OBJ)

三、检验编译后结果

保存所有修改重新编译gdal/ogr库,在bin下使用ogrinfo --formats命令查看:

_thumb2

2_thumb2

转自:http://www.cnblogs.com/geosky/archive/2013/05/11/new_ogr_driver2.html 

转载于:https://www.cnblogs.com/geosky/archive/2013/05/18/new_ogr_driver2.html

@echo off setlocal enabledelayedexpansion color 0A title 地质AI工作流一键部署工具 echo. echo **************************************************************** echo * * echo * 地质行业AI智能工具箱 - 一键安装程序 * echo * (专为电脑小白设计,只需点击"下一步") * echo * * echo **************************************************************** echo. REM =============== 第一步:准备工作检查 =============== echo [1/8] 正在检查系统环境... echo. REM 检查管理员权限 net session >nul 2>&1 if %errorlevel% neq 0 ( echo ⚠️ 错误:请右键点击此文件,选择"以管理员身份运行" pause exit /b 1 ) REM 检查Windows 11 ver | find "11." >nul if %errorlevel% neq 0 ( echo ⚠️ 错误:此软件仅支持Windows 11系统 pause exit /b 1 ) REM 检查磁盘空间 set minSpace=50 for /f "tokens=3" %%a in ('dir /-C D:\ ^| find "可用字节"') do set free=%%a set /a freeGB=!free:~0,-9! if !freeGB! lss %minSpace% ( echo ⚠️ 错误:D盘需要至少%minSpace%GB空间,当前仅!freeGB!GB echo 请清理磁盘空间后重新运行 pause exit /b 1 ) echo ✅ 系统检查通过:Windows 11, 管理员权限, 足够磁盘空间 timeout /t 2 /nobreak >nul REM =============== 第步:创建目录结构 =============== echo [2/8] 正在创建软件目录... echo. set "BASE_DIR=D:\地质AI工具箱" set "APPS_DIR=!BASE_DIR!\程序" set "DATA_DIR=!BASE_DIR!\数据" set "MODELS_DIR=!DATA_DIR!\模型" set "REPORTS_DIR=!DATA_DIR!\报告" mkdir "!BASE_DIR!" 2>nul mkdir "!APPS_DIR!" 2>nul mkdir "!DATA_DIR!" 2>nul mkdir "!MODELS_DIR!" 2>nul mkdir "!REPORTS_DIR!\模板" 2>nul mkdir "!REPORTS_DIR!\输出" 2>nul mkdir "!BASE_DIR!\安装包" 2>nul echo ✅ 目录创建完成:!BASE_DIR! timeout /t 1 /nobreak >nul REM =============== 第三步:安装基础组件 =============== echo [3/8] 正在安装基础支持系统... echo 步骤1:启用WSL2(Windows子系统)... powershell -Command "Start-Process PowerShell -ArgumentList 'wsl --install -d Ubuntu --quiet' -Verb RunAs -Wait" echo 步骤2:安装Docker(容器管理系统)... if not exist "!BASE_DIR!\安装包\Docker安装.exe" ( powershell -Command "Invoke-WebRequest -Uri 'https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe' -OutFile '!BASE_DIR!\安装包\Docker安装.exe' -UseBasicParsing" ) start /wait "" "!BASE_DIR!\安装包\Docker安装.exe" install --quiet --accept-license --installation-dir="!APPS_DIR!\Docker" echo 步骤3:安装Python(编程环境)... if not exist "!BASE_DIR!\安装包\Python安装.exe" ( powershell -Command "Invoke-WebRequest -Uri 'https://www.python.org/ftp/python/3.11.9/python-3.11.9-amd64.exe' -OutFile '!BASE_DIR!\安装包\Python安装.exe' -UseBasicParsing" ) start /wait "" "!BASE_DIR!\安装包\Python安装.exe" /quiet InstallAllUsers=0 TargetDir="!APPS_DIR!\Python" Include_launcher=0 AddPythonToPath=1 echo ✅ 基础组件安装完成 timeout /t 2 /nobreak >nul REM =============== 第四步:安装AI核心 =============== echo [4/8] 正在安装AI智能核心... echo 步骤1:安装Ollama(本地AI大脑)... if not exist "!BASE_DIR!\安装包\Ollama安装.exe" ( powershell -Command "Invoke-WebRequest -Uri 'https://ollama.com/download/OllamaSetup.exe' -OutFile '!BASE_DIR!\安装包\Ollama安装.exe' -UseBasicParsing" ) start /wait "" "!BASE_DIR!\安装包\Ollama安装.exe" /S /D=!APPS_DIR!\Ollama echo 步骤2:下载地质专用AI模型... echo 正在下载地质勘探模型(约3GB,首次下载需要10-30分钟,具体取决于网络速度)... "!APPS_DIR!\Ollama\ollama.exe" pull geology-llama echo 正在下载矿物识别模型... "!APPS_DIR!\Ollama\ollama.exe" pull mineral-detector echo ✅ AI智能核心安装完成 timeout /t 2 /nobreak >nul REM =============== 第五步:部署地质应用 =============== echo [5/8] 正在部署地质专用工具... echo 步骤1:启动知识库系统(RAGFlow)... docker run -d --name 地质知识库 -p 8080:8080 -v "!DATA_DIR!\知识库数据":/data -e LOCAL_MODE=1 -e MODEL_PROVIDER=ollama -e OLLAMA_BASE_URL=http://host.docker.internal:11434 -e DEFAULT_VICUNA_MODEL=geology-llama infiniflow/ragflow:latest echo 步骤2:启动工作流平台(Dify)... docker run -d --name 智能工作流 -p 3000:3000 -v "!DATA_DIR!\工作流数据":/app/data -e DATABASE_URL=file:///app/data/dify.db -e OLLAMA_API_BASE=http://host.docker.internal:11434 -e MODEL_PROVIDER=ollama chatchat/oneclick:latest echo ✅ 地质应用部署完成 timeout /t 2 /nobreak >nul REM =============== 第六步:安装地质工具箱 =============== echo [6/8] 正在安装地质专用工具箱... echo 步骤1:配置Python环境... "!APPS_DIR!\Python\python.exe" -m pip install --upgrade pip "!APPS_DIR!\Python\python.exe" -m pip install docxtpl requests python-docx pandas echo 步骤2:添加报告生成工具... ( echo from docxtpl import DocxTemplate echo import os echo import datetime echo. echo def 生成报告(模板名称, 项目数据): echo try: echo 项目数据['生成日期'] = datetime.datetime.now().strftime('%%Y年%%m月%%d日') echo doc = DocxTemplate(f"!REPORTS_DIR!\模板\{模板名称}") echo doc.render(项目数据) echo 输出文件 = f"!REPORTS_DIR!\输出\{项目数据.get('项目名称','地质报告')}_{datetime.datetime.now().strftime('%%Y%%m%%d_%%H%%M')}.docx" echo doc.save(输出文件) echo print(f"报告已生成: {输出文件}") echo return 输出文件 echo except Exception as e: echo print(f"报告生成失败: {str(e)}") echo return None ) > "!BASE_DIR!\工具箱\报告生成器.py" echo 步骤3:添加示例报告模板... ( echo 项目名称: {{项目名称}} echo 勘探地点: {{勘探地点}} echo 生成日期: {{生成日期}} echo. echo # 地质概况 echo {{地质概况}} echo. echo # 矿产发现 echo {{矿产发现}} echo. echo # 结论与建议 echo {{结论建议}} ) > "!REPORTS_DIR!\模板\地质报告模板.docx" echo ✅ 地质工具箱安装完成 timeout /t 2 /nobreak >nul REM =============== 第七步:创建桌面快捷方式 =============== echo [7/8] 正在创建桌面快捷方式... set "DESKTOP=%USERPROFILE%\Desktop" echo [地质AI工具箱] > "!DESKTOP!\地质AI工具箱.url" echo URL="!BASE_DIR!" >> "!DESKTOP!\地质AI工具箱.url" echo IconIndex=0 >> "!DESKTOP!\地质AI工具箱.url" echo IconFile=shell32.dll >> "!DESKTOP!\地质AI工具箱.url" echo [地质知识库] > "!DESKTOP!\地质知识库.url" echo URL=http://localhost:8080 >> "!DESKTOP!\地质知识库.url" echo [智能工作流] > "!DESKTOP!\智能工作流.url" echo URL=http://localhost:3000 >> "!DESKTOP!\智能工作流.url" echo ✅ 快捷方式创建完成 timeout /t 1 /nobreak >nul REM =============== 第八步:完成安装 =============== echo [8/8] 安装完成! echo. echo ================================================================ echo 🎉 地质AI工具箱安装成功! echo ================================================================ echo. echo 已创建以下桌面快捷方式: echo 1. [地质AI工具箱] - 软件主目录 echo 2. [地质知识库] - 地质专业知识库系统 echo 3. [智能工作流] - AI智能工作流平台 echo. echo 使用说明: echo - 首次使用请等待5-10分钟让系统完全启动 echo - 知识库系统账号: 地质AI/ai123456 echo - 工作流平台首次使用请按向导配置 echo. echo ================================================================ echo. REM 自动打开主目录 explorer "!BASE_DIR!" pause优化部署方案思路
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值