尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

GDAL能正确运行的代码:使用不同ZOOM读取瓦片数据,转换为PNG

GDAL能正确运行的代码:使用不同ZOOM读取瓦片数据,转换为PNG
📅 发布时间:2026/7/11 8:30:34

我用AI搜索了很久,总算完成了这个代码。

  • 工作思路

无人机在空中飞行,需要匹配地面影像,确认自己的真实位置。

  • 瓦片数据

使用QGIS下载瓦片地图-CSDN博客

  • 代码

能编译运行,能正确产生不同ZOOM的图片。

#include <stdio.h> #include <stdlib.h> #include "gdal.h" #include "gdal_utils.h" #define MAPTILE_FILE "wuxi.mbtiles" #define POINT_LONGITUDE 120.337 #define POINT_LATITUDE 31.505 #define AREA_SIZE 0.010 static GDALDatasetH openMapFile(const int zoom) { #if 1 char param1[32]; sprintf(param1, "ZOOM_LEVEL=%d", zoom); const char* openOpts[] = {param1, NULL}; // 3. 使用GDALOpenEx打开数据集 GDALDatasetH hSrcDS = GDALOpenEx( MAPTILE_FILE, // 文件名 GDAL_OF_RASTER | GDAL_OF_READONLY, // 只读方式打开栅格数据 NULL, // 不限制驱动 openOpts, // 传入我们设置的打开选项 NULL // 无关联文件 ); #else GDALDatasetH hSrcDS = GDALOpen(MAPTILE_FILE, GA_ReadOnly); #endif return hSrcDS; } static int convertToPng(const char* file, const GDALDatasetH hSrcDS, const GDALTranslateOptions* psOptions) { // 6. 执行裁剪和格式转换 GDALDatasetH hDstDS = GDALTranslate(file, hSrcDS, psOptions, NULL); if (hDstDS) { printf("成功将 %s 裁剪并保存为 %s\n", MAPTILE_FILE, file); return -1; } else { printf("转换失败!\n"); } return 0; } static GDALTranslateOptions* initTransOptions() { // 2, 将边界值转换为字符串,并加入到参数数组中 char szMinLon[32], szMaxLat[32], szMaxLon[32], szMinLat[32]; snprintf(szMinLon, sizeof(szMinLon), "%.6f", (POINT_LONGITUDE-AREA_SIZE/2)); snprintf(szMaxLat, sizeof(szMaxLat), "%.6f", (POINT_LATITUDE +AREA_SIZE/2)); snprintf(szMaxLon, sizeof(szMaxLon), "%.6f", (POINT_LONGITUDE+AREA_SIZE/2)); snprintf(szMinLat, sizeof(szMinLat), "%.6f", (POINT_LATITUDE -AREA_SIZE/2)); // 3. 构建 参数数组 // 重新构建包含边界值的参数数组 // 示例范围:围绕北京的区域 (经度: 116.3 ~ 116.5, 纬度: 39.8 ~ 40.0) // 注意:-projwin 的顺序是左上角 (minLon, maxLat) 到右下角 (maxLon, minLat) const char* const apszArgvFull[] = { "-projwin", szMinLon, szMaxLat, szMaxLon, szMinLat, "-projwin_srs", "EPSG:4326", "-of", "PNG", NULL }; // 4. 创建 GDALTranslateOptions 对象 GDALTranslateOptions* psOptions = GDALTranslateOptionsNew((char**)apszArgvFull, NULL); if (!psOptions) { printf("解析 GDALTranslateOptions 参数失败!\n"); return NULL; } return psOptions; } int main() { // 1. 注册所有 GDAL 驱动 GDALAllRegister(); GDALTranslateOptions* psOptions = initTransOptions(); if (!psOptions) { return -1; } for (int zoom=8; zoom<=16; zoom++) { // 5. 打开源数据集 (MBTiles) GDALDatasetH hSrcDS = openMapFile(zoom); if (hSrcDS == NULL) { printf("无法打开源文件: %s(zoom=%d)\n", MAPTILE_FILE, zoom); continue; } char file[32]; sprintf(file, "zoom%d.png", zoom); convertToPng(file, hSrcDS, psOptions); GDALClose(hSrcDS); } // 7. 清理资源 GDALTranslateOptionsFree(psOptions); GDALClearMemoryCaches(); GDALDestroy(); // Why core dump ? return 0; }
  • 编译脚本
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HOME}/map_gdal/lib:${HOME}/map_proj/lib export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:${HOME}/map_gdal/lib/pkgconfig rm core.* reset SRC_FILE=test2.cpp EXE_FILE=test if [ -f ${EXE_FILE} ]; then rm ${EXE_FILE} fi g++ ${SRC_FILE} \ -o ${EXE_FILE} \ $(pkg-config --cflags --libs gdal) ./${EXE_FILE}

相关新闻

  • 基于腾讯混元Hy3模型构建智能体:从核心机制到实践指南
  • TMC7300与PIC18F86K90在有刷直流电机控制中的优化应用
  • 重庆旧金避坑盘点,远离小作坊,选择持证实体回收店 - 每日生活报

最新新闻

  • 计算机毕业设计之基于SSM的村务管理系统的设计与实现
  • Edge如何成为Gemini 3.1 Pro最佳浏览器载体?
  • 从斐波那契到卢卡斯数列:二阶递推通项公式的 2 个经典应用对比
  • 2026南宁靠谱防水补漏企业推荐:卫生间免砸砖、外墙、地下室、屋顶渗漏维修 选对服务商(7月最新) - 防水企业百科
  • 腾讯混元Hy3:MoE架构与快慢思考机制实现高性价比物理模拟
  • 2026衡阳防水补漏公司口碑排行:卫生间免砸砖、外墙、地下室、屋顶渗漏维修 售后有保障(7月最新防水资讯) - 防水企业百科

日新闻

  • OpenClaw本地部署:一键直连微信的私有化AI Agent实战指南
  • Kubernetes 系列【10】控制器:ReplicaSet(副本集)
  • 怎么寄快递才能便宜呢?2026年7月寄快递省钱攻略 - 生活情报姬

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号