@@ -106,15 +106,33 @@ LasHeader IReader.GetMetaData(ImportSettings importSettings, int fileIndex)
106
106
107
107
for ( int k = 0 ; k < gk . NumberOfKeys ; k ++ )
108
108
{
109
- gk . KeyEntries . Add ( new sKeyEntry
109
+ var newEntry = new sKeyEntry
110
110
{
111
- KeyID = g . pKey [ k ] . wKeyID , // Defined key ID for each piece of GeoTIFF data. IDs contained in the GeoTIFF specification
111
+ KeyID = g . pKey [ k ] . wKeyID ,
112
112
KeyIDString = Enum . GetName ( typeof ( GeoTiffKeys ) , g . pKey [ k ] . wKeyID ) ,
113
- TIFFTagLocation = g . pKey [ k ] . wTIFFTagLocation , // 0 =wValue_Offset field as an unsigned short, 34736 means the data is located at index wValue_Offset of the GeoDoubleParamsTag record, 34767 means the data is located at index wValue_Offset of the GeoAsciiParamsTag record
114
- Count = g . pKey [ k ] . wCount , // Number of characters in string for values of GeoAsciiParamsTag, otherwise is 1
115
- Value_Offset = g . pKey [ k ] . wValue_Offset , // Contents vary depending on value for wTIFFTagLocation above
113
+ TIFFTagLocation = g . pKey [ k ] . wTIFFTagLocation ,
114
+ Count = g . pKey [ k ] . wCount ,
115
+ Value_Offset = g . pKey [ k ] . wValue_Offset ,
116
116
Value_OffsetString = Enum . GetName ( typeof ( GeoTiffKeys ) , g . pKey [ k ] . wValue_Offset )
117
- } ) ;
117
+ } ;
118
+
119
+ if ( newEntry . Value_Offset == 32618 ) // or id 3072?
120
+ {
121
+ h . ProjectionID = newEntry . Value_Offset ;
122
+ h . Projection = newEntry . Value_OffsetString ;
123
+ }
124
+
125
+ gk . KeyEntries . Add ( newEntry ) ;
126
+
127
+ //gk.KeyEntries.Add(new sKeyEntry
128
+ //{
129
+ // KeyID = g.pKey[k].wKeyID, // Defined key ID for each piece of GeoTIFF data. IDs contained in the GeoTIFF specification
130
+ // KeyIDString = Enum.GetName(typeof(GeoTiffKeys), g.pKey[k].wKeyID),
131
+ // TIFFTagLocation = g.pKey[k].wTIFFTagLocation, // 0 =wValue_Offset field as an unsigned short, 34736 means the data is located at index wValue_Offset of the GeoDoubleParamsTag record, 34767 means the data is located at index wValue_Offset of the GeoAsciiParamsTag record
132
+ // Count = g.pKey[k].wCount, // Number of characters in string for values of GeoAsciiParamsTag, otherwise is 1
133
+ // Value_Offset = g.pKey[k].wValue_Offset, // Contents vary depending on value for wTIFFTagLocation above
134
+ // Value_OffsetString = Enum.GetName(typeof(GeoTiffKeys), g.pKey[k].wValue_Offset)
135
+ //});
118
136
}
119
137
vlr . GeoKeys . Add ( gk ) ;
120
138
}
@@ -129,138 +147,6 @@ LasHeader IReader.GetMetaData(ImportSettings importSettings, int fileIndex)
129
147
h . VariableLengthRecords . Add ( vlr ) ;
130
148
}
131
149
}
132
-
133
- //Console.WriteLine("user_data_after_header_size:" + lazReader.header.user_data_after_header_size);
134
- //Console.WriteLine("vlrs:" + lazReader.header.vlrs.Count);
135
- //for (int i = 0; i < lazReader.header.vlrs.Count; i++)
136
- //{
137
- // Console.WriteLine("vlrs[" + i + "].reserved:" + lazReader.header.vlrs[i].reserved);
138
- // //var useridstr = System.Text.Encoding.UTF8.GetString(lazReader.header.vlrs[i].user_id);
139
- // string useridstr = "";
140
- // for (int j = 0; j < lazReader.header.vlrs[i].user_id.Length; j++)
141
- // {
142
- // useridstr += (char)lazReader.header.vlrs[i].user_id[j];
143
- // //useridstr += lazReader.header.vlrs[i].user_id[j].ToString("X")+",";
144
- // }
145
- // Console.WriteLine("vlrs[" + i + "].user_id:" + useridstr);
146
- // Console.WriteLine("vlrs[" + i + "].record_id:" + lazReader.header.vlrs[i].record_id);
147
- // Console.WriteLine("vlrs[" + i + "].record_length_after_header:" + lazReader.header.vlrs[i].record_length_after_header);
148
- // Console.WriteLine("datalen: " + lazReader.header.vlrs[i].data.Length);
149
-
150
- // if (lazReader.header.vlrs[i].record_id == 34735) // GeoKeyDirectoryTag
151
- // {
152
- // var g = ParseGeoKeysFromByteArray(lazReader.header.vlrs[i].data);
153
- // PrintGeoKeys(g);
154
- // }
155
-
156
- // if (lazReader.header.vlrs[i].record_id == 34737) // GeoAsciiParamsTag
157
- // {
158
- // var g = System.Text.Encoding.UTF8.GetString(lazReader.header.vlrs[i].data);
159
- // Console.WriteLine("GeoAsciiParamsTag:" + g);
160
- // }
161
-
162
- // //var descstr = System.Text.Encoding.UTF8.GetString(lazReader.header.vlrs[i].description);
163
- // string descstr = "";
164
- // for (int j = 0; j < lazReader.header.vlrs[i].description.Length; j++)
165
- // {
166
- // descstr += (char)lazReader.header.vlrs[i].description[j];
167
- // //descstr += lazReader.header.vlrs[i].description[j].ToString("X")+",";
168
- // }
169
-
170
- // Console.WriteLine("vlrs[" + i + "].description:" + descstr);
171
- //}
172
-
173
- // read data after header
174
- //var h = lazReader.get_header_pointer();
175
- //Console.WriteLine("header_size:" + h.header_size);
176
- //Console.WriteLine("offset_to_point_data:" + h.offset_to_point_data);
177
-
178
- // read binary data after header manually
179
- //var data = new byte[h.header_size];
180
- //var ev = lazReader.read_evlrs();
181
- //Console.WriteLine("ev:"+ev);
182
-
183
- //var file = importSettings.inputFiles[fileIndex];
184
- //int offset = h.header_size+54;
185
-
186
- //var g = ReadGeoKeys(file, offset);
187
- //PrintGeoKeys(g);
188
-
189
- //using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read))
190
- //{
191
- // stream.Seek(offset, SeekOrigin.Begin);
192
-
193
- // using (BinaryReader reader = new BinaryReader(stream))
194
- // {
195
- // int data = reader.ReadInt32();
196
- // Console.WriteLine($"Read data: {data}");
197
- // }
198
- //}
199
-
200
- //h.header_size
201
- //var ud = lazReader.header.user_data_after_header;
202
- //var udstr = "";
203
- //for (int i = 0; i < ud.Length; i++)
204
- //{
205
- // udstr += (char)ud[i];
206
- // //udstr += ud[i].ToString("X") + ",";
207
- //}
208
-
209
- //Console.WriteLine(lazReader.header.point_data_format);
210
- //Console.WriteLine(lazReader.header.x_scale_factor);
211
- //Console.WriteLine(lazReader.header.y_scale_factor);
212
- //Console.WriteLine(lazReader.header.z_scale_factor);
213
- //Console.WriteLine(lazReader.header.x_offset);
214
- //Console.WriteLine(lazReader.header.y_offset);
215
- //Console.WriteLine(lazReader.header.z_offset);
216
- //Console.WriteLine(lazReader.header.max_x);
217
- //Console.WriteLine(lazReader.header.min_x);
218
- //Console.WriteLine(lazReader.header.max_y);
219
- //Console.WriteLine(lazReader.header.min_y);
220
- //Console.WriteLine(lazReader.header.max_z);
221
- //Console.WriteLine(lazReader.header.min_z);
222
- //Console.WriteLine(lazReader.header.start_of_waveform_data_packet_record);
223
-
224
- //Console.WriteLine(lazReader.header.version_major);
225
- //Console.WriteLine(lazReader.header.version_minor);
226
- //Console.WriteLine("----------");
227
- //Console.WriteLine(lazReader.header.number_of_extended_variable_length_records);
228
- //Console.WriteLine(lazReader.header.number_of_variable_length_records);
229
- //Console.WriteLine(lazReader.header.start_of_first_extended_variable_length_record);
230
-
231
- //var d = lazReader.header.number_of_extended_variable_length_records;
232
- //d = lazReader.header.version_major;
233
- //d = lazReader.header.version_minor;
234
- //var d2 = lazReader.header.system_identifier;
235
- //var d3 = lazReader.header.generating_software;
236
- //d = lazReader.header.file_creation_day;
237
- //d = lazReader.header.file_creation_year;
238
- //d = lazReader.header.header_size;
239
- //d = lazReader.header.;
240
- //d = lazReader.header.offset_to_point_data;
241
- //d = lazReader.header.number_of_variable_length_records;
242
- //d = lazReader.header.point_data_format;
243
- //d = lazReader.header.point_data_record_length;
244
- //d = lazReader.header.number_of_point_records;
245
- //d = lazReader.header.number_of_points_by_return;
246
- //d = lazReader.header.x_scale_factor;
247
- //d = lazReader.header.y_scale_factor;
248
- //d = lazReader.header.z_scale_factor;
249
- //d = lazReader.header.x_offset;
250
- //d = lazReader.header.y_offset;
251
- //d = lazReader.header.z_offset;
252
- //d = lazReader.header.max_x;
253
- //d = lazReader.header.min_x;
254
- //d = lazReader.header.max_y;
255
- //d = lazReader.header.min_y;
256
- //d = lazReader.header.max_z;
257
- //d = lazReader.header.min_z;
258
- //d = lazReader.header.start_of_waveform_data_packet_record;
259
- //d = lazReader.header.start_of_first_extended_variable_length_record;
260
- //d = lazReader.header.number_of_extended_variable_length_records;
261
- //d = lazReader.header.number_of_point_records;
262
- //d = lazReader.header.number_of_points_by_return;
263
-
264
150
return h ;
265
151
}
266
152
0 commit comments