1
+
2
+ <!doctype html>
3
+ < html lang ="en ">
4
+
5
+ < head >
6
+ < title > Code coverage report for application/gdal_rasterize.js</ title >
7
+ < meta charset ="utf-8 " />
8
+ < link rel ="stylesheet " href ="../prettify.css " />
9
+ < link rel ="stylesheet " href ="../base.css " />
10
+ < link rel ="shortcut icon " type ="image/x-icon " href ="../favicon.png " />
11
+ < meta name ="viewport " content ="width=device-width, initial-scale=1 " />
12
+ < style type ='text/css '>
13
+ .coverage-summary .sorter {
14
+ background-image : url(../ sor t-arrow-sprite.png);
15
+ }
16
+ </ style >
17
+ </ head >
18
+
19
+ < body >
20
+ < div class ='wrapper '>
21
+ < div class ='pad1 '>
22
+ < h1 > < a href ="../index.html "> All files</ a > / < a href ="index.html "> application</ a > gdal_rasterize.js</ h1 >
23
+ < div class ='clearfix '>
24
+
25
+ < div class ='fl pad1y space-right2 '>
26
+ < span class ="strong "> 100% </ span >
27
+ < span class ="quiet "> Statements</ span >
28
+ < span class ='fraction '> 25/25</ span >
29
+ </ div >
30
+
31
+
32
+ < div class ='fl pad1y space-right2 '>
33
+ < span class ="strong "> 87.5% </ span >
34
+ < span class ="quiet "> Branches</ span >
35
+ < span class ='fraction '> 7/8</ span >
36
+ </ div >
37
+
38
+
39
+ < div class ='fl pad1y space-right2 '>
40
+ < span class ="strong "> 100% </ span >
41
+ < span class ="quiet "> Functions</ span >
42
+ < span class ='fraction '> 4/4</ span >
43
+ </ div >
44
+
45
+
46
+ < div class ='fl pad1y space-right2 '>
47
+ < span class ="strong "> 100% </ span >
48
+ < span class ="quiet "> Lines</ span >
49
+ < span class ='fraction '> 24/24</ span >
50
+ </ div >
51
+
52
+
53
+ </ div >
54
+ < p class ="quiet ">
55
+ Press < em > n</ em > or < em > j</ em > to go to the next uncovered block, < em > b</ em > , < em > p</ em > or < em > k</ em > for the previous block.
56
+ </ p >
57
+ < template id ="filterTemplate ">
58
+ < div class ="quiet ">
59
+ Filter:
60
+ < input oninput ="onInput() " type ="search " id ="fileSearch ">
61
+ </ div >
62
+ </ template >
63
+ </ div >
64
+ < div class ='status-line high '> </ div >
65
+ < pre > < table class ="coverage ">
66
+ < tr > < td class ="line-count quiet "> < a name ='L1 '> </ a > < a href ='#L1 '> 1</ a >
67
+ < a name ='L2 '> </ a > < a href ='#L2 '> 2</ a >
68
+ < a name ='L3 '> </ a > < a href ='#L3 '> 3</ a >
69
+ < a name ='L4 '> </ a > < a href ='#L4 '> 4</ a >
70
+ < a name ='L5 '> </ a > < a href ='#L5 '> 5</ a >
71
+ < a name ='L6 '> </ a > < a href ='#L6 '> 6</ a >
72
+ < a name ='L7 '> </ a > < a href ='#L7 '> 7</ a >
73
+ < a name ='L8 '> </ a > < a href ='#L8 '> 8</ a >
74
+ < a name ='L9 '> </ a > < a href ='#L9 '> 9</ a >
75
+ < a name ='L10 '> </ a > < a href ='#L10 '> 10</ a >
76
+ < a name ='L11 '> </ a > < a href ='#L11 '> 11</ a >
77
+ < a name ='L12 '> </ a > < a href ='#L12 '> 12</ a >
78
+ < a name ='L13 '> </ a > < a href ='#L13 '> 13</ a >
79
+ < a name ='L14 '> </ a > < a href ='#L14 '> 14</ a >
80
+ < a name ='L15 '> </ a > < a href ='#L15 '> 15</ a >
81
+ < a name ='L16 '> </ a > < a href ='#L16 '> 16</ a >
82
+ < a name ='L17 '> </ a > < a href ='#L17 '> 17</ a >
83
+ < a name ='L18 '> </ a > < a href ='#L18 '> 18</ a >
84
+ < a name ='L19 '> </ a > < a href ='#L19 '> 19</ a >
85
+ < a name ='L20 '> </ a > < a href ='#L20 '> 20</ a >
86
+ < a name ='L21 '> </ a > < a href ='#L21 '> 21</ a >
87
+ < a name ='L22 '> </ a > < a href ='#L22 '> 22</ a >
88
+ < a name ='L23 '> </ a > < a href ='#L23 '> 23</ a >
89
+ < a name ='L24 '> </ a > < a href ='#L24 '> 24</ a >
90
+ < a name ='L25 '> </ a > < a href ='#L25 '> 25</ a >
91
+ < a name ='L26 '> </ a > < a href ='#L26 '> 26</ a >
92
+ < a name ='L27 '> </ a > < a href ='#L27 '> 27</ a >
93
+ < a name ='L28 '> </ a > < a href ='#L28 '> 28</ a >
94
+ < a name ='L29 '> </ a > < a href ='#L29 '> 29</ a >
95
+ < a name ='L30 '> </ a > < a href ='#L30 '> 30</ a >
96
+ < a name ='L31 '> </ a > < a href ='#L31 '> 31</ a >
97
+ < a name ='L32 '> </ a > < a href ='#L32 '> 32</ a >
98
+ < a name ='L33 '> </ a > < a href ='#L33 '> 33</ a >
99
+ < a name ='L34 '> </ a > < a href ='#L34 '> 34</ a >
100
+ < a name ='L35 '> </ a > < a href ='#L35 '> 35</ a >
101
+ < a name ='L36 '> </ a > < a href ='#L36 '> 36</ a >
102
+ < a name ='L37 '> </ a > < a href ='#L37 '> 37</ a >
103
+ < a name ='L38 '> </ a > < a href ='#L38 '> 38</ a >
104
+ < a name ='L39 '> </ a > < a href ='#L39 '> 39</ a >
105
+ < a name ='L40 '> </ a > < a href ='#L40 '> 40</ a >
106
+ < a name ='L41 '> </ a > < a href ='#L41 '> 41</ a >
107
+ < a name ='L42 '> </ a > < a href ='#L42 '> 42</ a >
108
+ < a name ='L43 '> </ a > < a href ='#L43 '> 43</ a >
109
+ < a name ='L44 '> </ a > < a href ='#L44 '> 44</ a >
110
+ < a name ='L45 '> </ a > < a href ='#L45 '> 45</ a >
111
+ < a name ='L46 '> </ a > < a href ='#L46 '> 46</ a >
112
+ < a name ='L47 '> </ a > < a href ='#L47 '> 47</ a >
113
+ < a name ='L48 '> </ a > < a href ='#L48 '> 48</ a >
114
+ < a name ='L49 '> </ a > < a href ='#L49 '> 49</ a >
115
+ < a name ='L50 '> </ a > < a href ='#L50 '> 50</ a >
116
+ < a name ='L51 '> </ a > < a href ='#L51 '> 51</ a >
117
+ < a name ='L52 '> </ a > < a href ='#L52 '> 52</ a >
118
+ < a name ='L53 '> </ a > < a href ='#L53 '> 53</ a >
119
+ < a name ='L54 '> </ a > < a href ='#L54 '> 54</ a >
120
+ < a name ='L55 '> </ a > < a href ='#L55 '> 55</ a >
121
+ < a name ='L56 '> </ a > < a href ='#L56 '> 56</ a >
122
+ < a name ='L57 '> </ a > < a href ='#L57 '> 57</ a >
123
+ < a name ='L58 '> </ a > < a href ='#L58 '> 58</ a >
124
+ < a name ='L59 '> </ a > < a href ='#L59 '> 59</ a >
125
+ < a name ='L60 '> </ a > < a href ='#L60 '> 60</ a >
126
+ < a name ='L61 '> </ a > < a href ='#L61 '> 61</ a >
127
+ < a name ='L62 '> </ a > < a href ='#L62 '> 62</ a >
128
+ < a name ='L63 '> </ a > < a href ='#L63 '> 63</ a >
129
+ < a name ='L64 '> </ a > < a href ='#L64 '> 64</ a >
130
+ < a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
131
+ < a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
132
+ < a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
133
+ < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
134
+ < a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
135
+ < a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
136
+ < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-neutral "> </ span >
137
+ < span class ="cline-any cline-neutral "> </ span >
138
+ < span class ="cline-any cline-neutral "> </ span >
139
+ < span class ="cline-any cline-neutral "> </ span >
140
+ < span class ="cline-any cline-neutral "> </ span >
141
+ < span class ="cline-any cline-neutral "> </ span >
142
+ < span class ="cline-any cline-neutral "> </ span >
143
+ < span class ="cline-any cline-neutral "> </ span >
144
+ < span class ="cline-any cline-neutral "> </ span >
145
+ < span class ="cline-any cline-neutral "> </ span >
146
+ < span class ="cline-any cline-neutral "> </ span >
147
+ < span class ="cline-any cline-neutral "> </ span >
148
+ < span class ="cline-any cline-neutral "> </ span >
149
+ < span class ="cline-any cline-neutral "> </ span >
150
+ < span class ="cline-any cline-neutral "> </ span >
151
+ < span class ="cline-any cline-neutral "> </ span >
152
+ < span class ="cline-any cline-neutral "> </ span >
153
+ < span class ="cline-any cline-neutral "> </ span >
154
+ < span class ="cline-any cline-neutral "> </ span >
155
+ < span class ="cline-any cline-neutral "> </ span >
156
+ < span class ="cline-any cline-neutral "> </ span >
157
+ < span class ="cline-any cline-neutral "> </ span >
158
+ < span class ="cline-any cline-neutral "> </ span >
159
+ < span class ="cline-any cline-neutral "> </ span >
160
+ < span class ="cline-any cline-neutral "> </ span >
161
+ < span class ="cline-any cline-neutral "> </ span >
162
+ < span class ="cline-any cline-neutral "> </ span >
163
+ < span class ="cline-any cline-neutral "> </ span >
164
+ < span class ="cline-any cline-neutral "> </ span >
165
+ < span class ="cline-any cline-neutral "> </ span >
166
+ < span class ="cline-any cline-neutral "> </ span >
167
+ < span class ="cline-any cline-yes "> 9x</ span >
168
+ < span class ="cline-any cline-yes "> 9x</ span >
169
+ < span class ="cline-any cline-yes "> 9x</ span >
170
+ < span class ="cline-any cline-yes "> 9x</ span >
171
+ < span class ="cline-any cline-yes "> 3x</ span >
172
+ < span class ="cline-any cline-neutral "> </ span >
173
+ < span class ="cline-any cline-yes "> 9x</ span >
174
+ < span class ="cline-any cline-neutral "> </ span >
175
+ < span class ="cline-any cline-yes "> 9x</ span >
176
+ < span class ="cline-any cline-yes "> 9x</ span >
177
+ < span class ="cline-any cline-yes "> 9x</ span >
178
+ < span class ="cline-any cline-yes "> 9x</ span >
179
+ < span class ="cline-any cline-yes "> 9x</ span >
180
+ < span class ="cline-any cline-yes "> 9x</ span >
181
+ < span class ="cline-any cline-neutral "> </ span >
182
+ < span class ="cline-any cline-neutral "> </ span >
183
+ < span class ="cline-any cline-yes "> 9x</ span >
184
+ < span class ="cline-any cline-yes "> 9x</ span >
185
+ < span class ="cline-any cline-yes "> 9x</ span >
186
+ < span class ="cline-any cline-yes "> 9x</ span >
187
+ < span class ="cline-any cline-yes "> 9x</ span >
188
+ < span class ="cline-any cline-yes "> 9x</ span >
189
+ < span class ="cline-any cline-yes "> 9x</ span >
190
+ < span class ="cline-any cline-neutral "> </ span >
191
+ < span class ="cline-any cline-yes "> 9x</ span >
192
+ < span class ="cline-any cline-yes "> 3x</ span >
193
+ < span class ="cline-any cline-yes "> 3x</ span >
194
+ < span class ="cline-any cline-neutral "> </ span >
195
+ < span class ="cline-any cline-yes "> 6x</ span >
196
+ < span class ="cline-any cline-neutral "> </ span >
197
+ < span class ="cline-any cline-neutral "> </ span >
198
+ < span class ="cline-any cline-yes "> 6x</ span >
199
+ < span class ="cline-any cline-neutral "> </ span >
200
+ < span class ="cline-any cline-neutral "> </ span >
201
+ < span class ="cline-any cline-neutral "> </ span >
202
+ < span class ="cline-any cline-neutral "> </ span >
203
+ < span class ="cline-any cline-neutral "> </ span >
204
+ < span class ="cline-any cline-neutral "> </ span >
205
+ < span class ="cline-any cline-neutral "> </ span >
206
+ < span class ="cline-any cline-neutral "> </ span > </ td > < td class ="text "> < pre class ="prettyprint lang-js "> /* eslint-disable camelcase */
207
+ import { GDALFunctions } from '../../allCFunctions';
208
+ import { getGdalError } from '../helper/error';
209
+ import { drivers } from '../helper/drivers';
210
+ import { getOptions, clearOptions } from '../helper/options';
211
+ import { OUTPUTPATH, getRealOutputPath } from '../helper/const';
212
+ import { getFileListFromDataset } from '../helper/getFileList';
213
+
214
+ /**
215
+ * gdal_rasterize function burns vector geometries (points, lines, and polygons)
216
+ * into the raster band(s) of a raster image. Vectors are read from OGR supported vector formats.
217
+ *
218
+ * {@link https://gdal.org/programs/gdal_rasterize.html}
219
+ *
220
+ * @module a/gdal_rasterize
221
+ * @async
222
+ * @param {TypeDefs.Dataset} dataset Dataset to be converted.
223
+ * @param {Array} [options] Options ({@link https://gdal.org/programs/gdal_rasterize.html#description})
224
+ * @param {string} [outputName] Destination file name without extension.
225
+ * @return {Promise<TypeDefs.FilePath>} "Promise" returns paths of created files.
226
+ * @example
227
+ * const Gdal = await initGdalJs();
228
+ * const dataset = (await Gdal.open('data.geojson')).datasets[0];
229
+ * const options = [
230
+ * '-of', 'GTiff',
231
+ * '-co', 'alpha=yes'
232
+ * ];
233
+ * const filePath = await Gdal.gdal_rasterize(dataset, options);
234
+ *
235
+ */
236
+ export default function gdal_rasterize(dataset, options = < span class ="branch-0 cbranch-no " title ="branch not covered " > [],</ span > outputName = null) {
237
+ return new Promise((resolve, reject) => {
238
+ const optStr = getOptions(options);
239
+ const config = optStr.config;
240
+ Object.entries(config).forEach(([key, value]) => {
241
+ GDALFunctions.CPLSetConfigOption(key, value);
242
+ });
243
+ const optionsPtr = GDALFunctions.GDALRasterizeOptionsNew(optStr.ptr, null);
244
+
245
+ const driverIndex = options.indexOf('-of') + 1;
246
+ let ext = 'tif';
247
+ if (driverIndex !== 0) {
248
+ const driverName = options[driverIndex];
249
+ const driver = drivers.raster[driverName];
250
+ if (driver) ext = driver.extension;
251
+ }
252
+
253
+ const finalOutputName = outputName || dataset.path.split('.', 1)[0];
254
+ const filePath = `${OUTPUTPATH}/${finalOutputName}.${ext}`;
255
+ const datasetPtr = GDALFunctions.GDALRasterize(filePath, null, dataset.pointer, optionsPtr, null);
256
+ const outputFiles = getFileListFromDataset(datasetPtr);
257
+ GDALFunctions.GDALRasterizeOptionsFree(optionsPtr);
258
+ clearOptions(optStr);
259
+ GDALFunctions.GDALClose(datasetPtr);
260
+
261
+ if (GDALFunctions.CPLGetLastErrorNo() >= 3) {
262
+ const error = getGdalError();
263
+ reject(error);
264
+ } else {
265
+ resolve({
266
+ local: filePath,
267
+ real: `${getRealOutputPath()}/${finalOutputName}.${ext}`,
268
+ all: outputFiles.map((file) => ({
269
+ local: file,
270
+ real: file.replace(`${OUTPUTPATH}/`, `${getRealOutputPath()}/`),
271
+ })),
272
+ });
273
+ }
274
+ });
275
+ }
276
+ </ pre > </ td > </ tr > </ table > </ pre >
277
+
278
+ < div class ='push '> </ div > <!-- for sticky footer -->
279
+ </ div > <!-- /wrapper -->
280
+ < div class ='footer quiet pad2 space-top1 center small '>
281
+ Code coverage generated by
282
+ < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
283
+ at 2024-02-22T21:16:42.357Z
284
+ </ div >
285
+ < script src ="../prettify.js "> </ script >
286
+ < script >
287
+ window . onload = function ( ) {
288
+ prettyPrint ( ) ;
289
+ } ;
290
+ </ script >
291
+ < script src ="../sorter.js "> </ script >
292
+ < script src ="../block-navigation.js "> </ script >
293
+ </ body >
294
+ </ html >
295
+
0 commit comments