# supermap-dem-height-server-nogdal **Repository Path**: lingfengsu/supermap-dem-height-server-nogdal ## Basic Information - **Project Name**: supermap-dem-height-server-nogdal - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-31 - **Last Updated**: 2025-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DEM 服务 一个基于 Go 的 HTTP 服务,用于从 GeoTIFF 文件中查询高程数据。 //启动 go run app.go ## window打包 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o ./dist/demServer.exe app.go ## Linux打包 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./dist/demServer app.go ## Linux打包 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o ./dist/demServer-arm app.go ## 功能特点 - 启动时加载 GeoTIFF DEM(数字高程模型)文件 - 提供 REST API 端点,通过给定坐标查询高程 - 使用双线性插值获得准确的高程值 - 无需依赖 GDAL,纯 Go 实现 - 支持 BigTIFF 文件 ## 前提条件 - Go 1.16 或更高版本 - GeoTIFF DEM 文件(注意:由于大小限制,GeoTIFF 文件未包含在仓库中,需要单独添加) ## 安装 1. 克隆仓库: ``` git clone https://gitee.com/lingfengsu/supermap-dem-height-server-nogdal.git cd supermap-dem-height-server-nogdal ``` 2. 安装依赖: ``` go mod tidy ``` ## 使用方法 1. 将您的 GeoTIFF DEM 文件放置在 `demdata` 目录下,并命名为 `ClipResult.tif` (注意:由于大小限制,此文件未包含在仓库中,需要单独添加) 2. 启动服务器: ``` go run app.go ``` 默认情况下,服务器将在 8080 端口启动。您可以使用 PORT 环境变量指定不同的端口: ``` PORT=3000 go run app.go ``` 3. 查询高程数据: ``` curl "http://localhost:8080/elevation?lat=39.9042&lon=116.4074" ``` 响应: ```json { "elevation": 123.45 } ``` ## API 接口 ### GET /elevation 查询指定坐标的高程值。 **参数:** - `lat`(必需):纬度,十进制度数(WGS84) - `lon`(必需):经度,十进制度数(WGS84) **响应:** - 成功:`{"elevation": 123.45}`(高程值,单位为米) - 错误:适当的 HTTP 状态码和错误信息 ## 实现细节 该服务使用: - `github.com/chai2010/tiff` 用于读取 TIFF/BigTIFF 文件 - 自定义实现 GeoTIFF 元数据解析和坐标变换 - 双线性插值算法获得非整数像素坐标的准确高程值 ## 限制 - 目前使用占位符值作为地理变换参数(在生产实现中需要从实际的 GeoTIFF 标签中解析) - 假设 GeoTIFF 位于与输入经纬度匹配或已适当转换的投影坐标系中 - 简化的高程值提取(在生产实现中需要根据 TIFF 标签处理不同的数据类型和比例/偏移值) ## 测试 要使用示例 TIFF 文件测试实现: 1. 生成测试 TIFF 文件: ``` cd cmd/generate_tiff go run main.go ``` 2. 测试高程功能: ``` cd cmd/test go run main.go ``` ## 许可证 MIT