利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像

利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像

      本文介绍了利用GDAL vrt实现单波段浮点数dem包装为三波段rgb影像,具体为用vrt表达dem、将dem拉伸为0-255 区间的灰度图、灰度着色三个过程,所有中间结果可用vrt格式来表达。


目录

  • 1 dem vrt表达
  • 2 dem灰度拉伸
  • 3 dem着色

  • 1 dem vrt表达
{//vrt表达
		GDALAllRegister();
		std::string srcPath = "test.tif";
		std::string dstPath = "test.vrt";
		GDALDatasetH* srcDs = NULL;

		const char* arr[] = { srcPath.c_str() };
		const char* const* papszSrcDSNames = arr;
		GDALDatasetH hOutDs = GDALBuildVRT(dstPath.c_str(), 1, NULL, papszSrcDSNames, NULL, NULL);
		GDALClose(hOutDs);
	}

        借助GDALBuildVRT构建tif的vrt描述文件。

  • 2 dem灰度拉伸
{//灰度拉伸
		std::string srcPath = "test.vrt";
		std::string dstPath = "gray.vrt";
		GDALAllRegister();
		GDALDataset* inDataset = (GDALDataset*)GDALOpen(srcPath.c_str(), GA_ReadOnly);
		GDALRasterBand*band = inDataset->GetRasterBand(1);
		/*double minValue, maxValue;
		band->ComputeStatistics(false, &minValue, &maxValue, NULL, NULL, NULL, NULL);
		band->SetNoDataValue(0);
		band->SetScale(256 / (maxValue - minValue));
		band->SetOffset(-minValue * 256 / (maxValue - minValue));*/

		CPLStringList options;
		options.AddString("-scale");
		options.AddString("-ot");
		options.AddString("Byte");
		GDALTranslateOptions* psOptions = GDALTranslateOptionsNew(options, NULL);
		GDALTranslate(dstPath.c_str(), inDataset, psOptions, NULL);
		GDALClose(inDataset);
		GDALTranslateOptionsFree(psOptions);
	}

 借助GDALTranslate函数,设置Options参数将高程值拉伸到0-255区间。

  • 3 dem着色
{//颜色映射
		std::string srcPath = "gray.vrt";
		std::string dstPath = "colored.vrt";
		GDALAllRegister();

		GDALDataset* inDataset = (GDALDataset*)GDALOpen(srcPath.c_str(), GA_ReadOnly);
		if (inDataset == NULL)
		{
			printf("Error: Could not open input DEM file\n");
			return 1;
		}

		GDALDEMProcessing(dstPath.c_str(), inDataset, "color-relief", "color-ramp.txt", NULL, NULL);
		GDALClose(inDataset);
	}

借助GDALDEMProcessing函数实现灰度图0-255值赋不同颜色,同时需设置颜色映射表:“color-ramp.txt”,如下:

0 0 0 0
1 17 62 232
2 17 65 230
3 17 68 227
4 17 71 225
5 17 74 222
6 17 77 220
7 17 80 217
8 17 83 215
9 17 86 212
10 17 89 210
11 17 92 207
12 17 95 205
13 17 97 202
14 17 100 200
15 17 103 197
16 17 106 195
17 17 109 192
18 17 112 190
19 17 115 187
20 17 118 185
21 17 121 182
22 17 124 180
23 17 127 177
24 17 130 175
25 17 132 172
26 17 135 170
27 17 138 167
28 17 141 165
29 17 144 162
30 17 147 160
31 17 150 158
32 17 153 155
33 17 156 153
34 17 159 150
35 17 162 148
36 17 165 145
37 17 167 143
38 17 170 140
39 17 173 138
40 17 176 135
41 17 179 133
42 17 182 130
43 17 185 128
44 17 188 125
45 17 191 123
46 17 194 120
47 17 197 118
48 17 200 115
49 17 202 113
50 17 205 110
51 17 208 108
52 17 211 105
53 17 214 103
54 17 217 100
55 17 220 98
56 17 223 95
57 17 226 93
58 17 229 90
59 17 232 88
60 17 235 86
61 20 233 84
62 24 232 83
63 27 231 82
64 31 230 81
65 35 229 80
66 38 228 79
67 42 227 77
68 46 226 76
69 49 225 75
70 53 224 74
71 56 223 73
72 60 222 72
73 64 221 71
74 67 220 69
75 71 219 68
76 75 218 67
77 78 217 66
78 82 216 65
79 86 215 64
80 89 214 63
81 93 213 61
82 96 212 60
83 100 211 59
84 104 210 58
85 107 209 57
86 111 208 56
87 115 207 54
88 118 206 53
89 122 205 52
90 126 204 51
91 129 202 50
92 133 201 49
93 136 200 48
94 140 199 46
95 144 198 45
96 147 197 44
97 151 196 43
98 155 195 42
99 158 194 41
100 162 193 40
101 165 192 38
102 169 191 37
103 173 190 36
104 176 189 35
105 180 188 34
106 184 187 33
107 187 186 31
108 191 185 30
109 195 184 29
110 198 183 28
111 202 182 27
112 205 181 26
113 209 180 25
114 213 179 23
115 216 178 22
116 220 177 21
117 224 176 20
118 227 175 19
119 231 174 18
120 235 173 17
121 235 171 17
122 235 169 17
123 235 167 17
124 235 165 17
125 235 163 17
126 235 161 17
127 235 159 17
128 235 157 17
129 235 156 17
130 235 154 17
131 235 152 17
132 235 150 17
133 235 148 17
134 235 146 17
135 235 144 17
136 235 142 17
137 235 140 17
138 235 139 17
139 235 137 17
140 235 135 17
141 235 133 17
142 235 131 17
143 235 129 17
144 235 127 17
145 235 125 17
146 235 124 17
147 235 122 17
148 235 120 17
149 235 118 17
150 235 116 17
151 235 114 17
152 235 112 17
153 235 110 17
154 235 108 17
155 235 107 17
156 235 105 17
157 235 103 17
158 235 101 17
159 235 99 17
160 235 97 17
161 235 95 17
162 235 93 17
163 235 92 17
164 235 90 17
165 235 88 17
166 235 86 17
167 235 84 17
168 235 82 17
169 235 80 17
170 235 78 17
171 235 76 17
172 235 75 17
173 235 73 17
174 235 71 17
175 235 69 17
176 235 67 17
177 235 65 17
178 235 63 17
179 235 61 17
180 235 60 17
181 235 59 19
182 235 58 22
183 235 58 25
184 235 57 28
185 235 57 31
186 235 56 34
187 235 56 37
188 235 55 39
189 235 54 42
190 235 54 45
191 235 53 48
192 235 53 51
193 235 52 54
194 235 52 57
195 235 51 60
196 235 50 62
197 235 50 65
198 235 49 68
199 235 49 71
200 235 48 74
201 235 48 77
202 235 47 80
203 235 46 82
204 235 46 85
205 235 45 88
206 235 45 91
207 235 44 94
208 235 44 97
209 235 43 100
210 235 43 103
211 235 42 105
212 235 41 108
213 235 41 111
214 235 40 114
215 235 40 117
216 235 39 120
217 235 39 123
218 235 38 126
219 235 37 128
220 235 37 131
221 235 36 134
222 235 36 137
223 235 35 140
224 235 35 143
225 235 34 146
226 235 33 148
227 235 33 151
228 235 32 154
229 235 32 157
230 235 31 160
231 235 31 163
232 235 30 166
233 235 30 169
234 235 29 171
235 235 28 174
236 235 28 177
237 235 27 180
238 235 27 183
239 235 26 186
240 235 26 189
241 235 25 191
242 235 24 194
243 235 24 197
244 235 23 200
245 235 23 203
246 235 22 206
247 235 22 209
248 235 21 212
249 235 20 214
250 235 20 217
251 235 19 220
252 235 19 223
253 235 18 226
254 235 18 229
255 235 17 232
 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHPCWWHSU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值