update src

This commit is contained in:
张壹 2021-09-16 23:09:12 +08:00
parent f5e1e808e1
commit d6984a3270
9 changed files with 1010370 additions and 393 deletions

View File

@ -5,7 +5,7 @@
#### Compile
```shell
g++ demo.cpp
g++ demo.cpp -O2
```
#### Run demo

BIN
Untitled.nc Normal file

Binary file not shown.

View File

@ -6,10 +6,10 @@
int main(int argc, char const *argv[])
{
// read dem grid
std::vector<double> topo(10201);
std::vector<double> topo(1002001);
std::ifstream infile("topo.txt");
for (int i = 0; i < 10201; ++i)
std::ifstream infile("topo2.txt");
for (int i = 0; i < 1002001; ++i)
{
infile >> topo[i];
}
@ -18,10 +18,10 @@ int main(int argc, char const *argv[])
std::vector<double> err_records;
std::vector<vertex2dc*> tin_vert;
std::vector<triangle*> tin_ele;
dem2tin(topo, 0, 1000, 0, 1000, 10, 10, tin_vert, tin_ele, 1.0, &err_records);
dem2tin(topo, 0, 1000, 0, 1000, 1, 1, tin_vert, tin_ele, 10.0, &err_records);
// Write a log file
std::ofstream logfile("topo_TIN.log");
std::ofstream logfile("topo2_TIN.log");
logfile << "# Insertion Maxi-Error\n";
for (int i = 0; i < err_records.size(); ++i)
{
@ -30,7 +30,7 @@ int main(int argc, char const *argv[])
logfile.close();
// Write a Gmsh's .msh file
std::ofstream outfile("topo_TIN.msh");
std::ofstream outfile("topo2_TIN.msh");
outfile << "$MeshFormat" << std::endl << "2.2 0 8" << std::endl << "$EndMeshFormat "<<std::endl;
outfile << "$Nodes" << std::endl << tin_vert.size() << std::endl;
for (int i = 0; i < tin_vert.size(); i++)

168
tin.h
View File

@ -131,6 +131,7 @@ struct dem_point
{
double x, y; // position of the DEM location
double elev; // elevation at the DEM location
double err;
triangle *host; // host triangle of the DEM location
std::vector<triangle*> circum_host; // triangles which circumcircles include the location
@ -139,10 +140,60 @@ struct dem_point
void set(double inx, double iny, double inelev)
{
x = inx; y = iny; elev = inelev; host = nullptr;
circum_host.clear();
return;
}
};
/**
* @brief Utility function of the heap_sort function.
*
* @param a Input vector
* @param[in] i vector's index i
* @param[in] n vector's index n
*/
void update_heap(std::vector<dem_point*> &a, int i, int n)
{
int iMax = i, iLeft = 2 * i + 1, iRight = 2 * (i + 1);
if (iLeft < n && a[iMax]->err > a[iLeft]->err)
{
iMax = iLeft;
}
if (iRight < n && a[iMax]->err > a[iRight]->err)
{
iMax = iRight;
}
if (iMax != i)
{
dem_point *tmp = a[iMax]; a[iMax] = a[i]; a[i] = tmp;
update_heap(a, iMax, n);
}
return;
}
/**
* @brief Heap sort of the dem_point vector in a descending order with respect to the error values
*
* @param a Input vector
*/
void heap_sort(std::vector<dem_point*> &a)
{
int n = a.size();
for (int i = (n - 1) / 2; i >= 0; i--)
{
update_heap(a, i, n);
}
dem_point *tmp;
for (int i = n - 1; i > 0; --i)
{
tmp = a[i]; a[i] = a[0]; a[0] = tmp;
update_heap(a, 0, i);
}
return;
}
// End DEM definition
/**
@ -177,33 +228,46 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
if (dem.size() != xnum*ynum) return;
// Prepare the DEM points
std::vector<dem_point> dem_grid(xnum*ynum);
std::vector<dem_point>::iterator d_iter;
dem_point *tmp_dem;
std::vector<dem_point*> dem_grid(xnum*ynum);
std::vector<dem_point*>::iterator d_iter;
for (int i = 0; i < ynum; ++i)
{
for (int j = 0; j < xnum; ++j)
{
dem_grid[j + i*xnum].set(xmin + dx*j, ymin + dy*i, dem[j + i*xnum]);
dem_grid[j + i*xnum] = new dem_point(xmin + dx*j, ymin + dy*i, dem[j + i*xnum]);
}
}
vertex2dc *tmp_vert = nullptr;
tmp_vert = new vertex2dc(xmin, ymin, dem_grid[0].elev, out_verts.size()); // lower left corner
tmp_vert = new vertex2dc(xmin, ymin, dem_grid[0]->elev, out_verts.size()); // lower left corner
out_verts.push_back(tmp_vert);
d_iter = dem_grid.begin(); dem_grid.erase(d_iter);
tmp_vert = new vertex2dc(xmax, ymin, dem_grid[xnum-2].elev, out_verts.size()); // lower right corner. Note the first location is already erased
out_verts.push_back(tmp_vert);
d_iter = dem_grid.begin() + (xnum - 2); dem_grid.erase(d_iter);
d_iter = dem_grid.begin();
tmp_dem = *d_iter; delete tmp_dem;
dem_grid.erase(d_iter);
tmp_vert = new vertex2dc(xmax, ymax, dem_grid[xnum*ynum-3].elev, out_verts.size()); // upper right corner. Note the first two locations are already erased
tmp_vert = new vertex2dc(xmax, ymin, dem_grid[xnum-2]->elev, out_verts.size()); // lower right corner. Note the first location is already erased
out_verts.push_back(tmp_vert);
d_iter = dem_grid.begin() + (xnum*ynum - 3); dem_grid.erase(d_iter);
tmp_vert = new vertex2dc(xmin, ymax, dem_grid[xnum*(ynum-1) - 2].elev, out_verts.size()); // upper left corner. Note the first two locations are already erased
d_iter = dem_grid.begin() + (xnum - 2);
tmp_dem = *d_iter; delete tmp_dem;
dem_grid.erase(d_iter);
tmp_vert = new vertex2dc(xmax, ymax, dem_grid[xnum*ynum-3]->elev, out_verts.size()); // upper right corner. Note the first two locations are already erased
out_verts.push_back(tmp_vert);
d_iter = dem_grid.begin() + (xnum*(ynum-1) - 2); dem_grid.erase(d_iter);
d_iter = dem_grid.begin() + (xnum*ynum - 3);
tmp_dem = *d_iter; delete tmp_dem;
dem_grid.erase(d_iter);
tmp_vert = new vertex2dc(xmin, ymax, dem_grid[xnum*(ynum-1) - 2]->elev, out_verts.size()); // upper left corner. Note the first two locations are already erased
out_verts.push_back(tmp_vert);
d_iter = dem_grid.begin() + (xnum*(ynum-1) - 2);
tmp_dem = *d_iter; delete tmp_dem;
dem_grid.erase(d_iter);
triangle *tmp_tri = nullptr;
std::vector<triangle*> cnst_tri, new_tri;
@ -226,9 +290,9 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
{
for (int t = 0; t < out_tris.size(); ++t)
{
if (out_tris[t]->bound_location(dem_grid[i].x, dem_grid[i].y))
if (out_tris[t]->bound_location(dem_grid[i]->x, dem_grid[i]->y))
{
dem_grid[i].host = out_tris[t];
dem_grid[i]->host = out_tris[t];
break; // already found, no need to search more
}
}
@ -240,52 +304,45 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
{
for (int t = 0; t < out_tris.size(); ++t)
{
dist = (out_tris[t]->cx - dem_grid[i].x) * (out_tris[t]->cx - dem_grid[i].x)
+ (out_tris[t]->cy - dem_grid[i].y) * (out_tris[t]->cy - dem_grid[i].y);
dist = (out_tris[t]->cx - dem_grid[i]->x) * (out_tris[t]->cx - dem_grid[i]->x)
+ (out_tris[t]->cy - dem_grid[i]->y) * (out_tris[t]->cy - dem_grid[i]->y);
if ((dist - out_tris[t]->cr) <= ZERO) // Points on the circumcircle are also included
{
dem_grid[i].circum_host.push_back(out_tris[t]);
dem_grid[i]->circum_host.push_back(out_tris[t]);
// no beak here. There might be more than one triangle's circumcircle includes the DEM location
}
}
}
int now_maxi_id;
double now_err, now_maxi_err;
// loop all DEM data to find the location with maximal error
for (int i = 0; i < dem_grid.size(); ++i)
{
dem_grid[i]->err = fabs(dem_grid[i]->host->interpolate(dem_grid[i]->x, dem_grid[i]->y) - dem_grid[i]->elev);
}
heap_sort(dem_grid);
bool removed;
edge tmp_edge;
std::vector<edge> cnst_edge;
std::vector<edge>::iterator e_iter;
do // quit til the threshold is meet
while (dem_grid[0]->err >= maxi_err) // quit til the threshold is meet
{
// loop all DEM data to find the location with maximal error
now_maxi_err = -1.0;
for (int i = 0; i < dem_grid.size(); ++i)
{
now_err = fabs(dem_grid[i].host->interpolate(dem_grid[i].x, dem_grid[i].y) - dem_grid[i].elev);
if (now_err > now_maxi_err)
{
now_maxi_err = now_err;
now_maxi_id = i;
}
}
if (err_records != nullptr)
{
err_records->push_back(now_maxi_err);
err_records->push_back(dem_grid[0]->err);
}
// create a new vertex
tmp_vert = new vertex2dc(dem_grid[now_maxi_id].x, dem_grid[now_maxi_id].y, dem_grid[now_maxi_id].elev, out_verts.size());
tmp_vert = new vertex2dc(dem_grid[0]->x, dem_grid[0]->y, dem_grid[0]->elev, out_verts.size());
out_verts.push_back(tmp_vert);
// Move triangles which circumcircles include the new vertex to the cnst_tri and remove it from out_tris
cnst_tri.clear();
for (int i = 0; i < dem_grid[now_maxi_id].circum_host.size(); ++i)
for (int i = 0; i < dem_grid[0]->circum_host.size(); ++i)
{
cnst_tri.push_back(dem_grid[now_maxi_id].circum_host[i]);
cnst_tri.push_back(dem_grid[0]->circum_host[i]);
}
for (int i = 0; i < cnst_tri.size(); ++i)
@ -303,9 +360,10 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
}
// clear host and circumcircle triangles for the used DEM location
dem_grid[now_maxi_id].host = nullptr;
dem_grid[now_maxi_id].circum_host.clear();
d_iter = dem_grid.begin() + now_maxi_id; dem_grid.erase(d_iter);
dem_grid[0]->circum_host.clear();
d_iter = dem_grid.begin();
tmp_dem = *d_iter; delete tmp_dem;
dem_grid.erase(d_iter);
// loop to remove duplicate edges
cnst_edge.clear();
@ -351,11 +409,11 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
{
for (int i = 0; i < dem_grid.size(); ++i)
{
for (t_iter = dem_grid[i].circum_host.begin(); t_iter != dem_grid[i].circum_host.end(); )
for (t_iter = dem_grid[i]->circum_host.begin(); t_iter != dem_grid[i]->circum_host.end(); )
{
if (cnst_tri[c] == *t_iter)
{
t_iter = dem_grid[i].circum_host.erase(t_iter);
t_iter = dem_grid[i]->circum_host.erase(t_iter);
break; // no need to search more
}
else t_iter++;
@ -368,9 +426,10 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
{
for (int n = 0; n < new_tri.size(); ++n) // search in newly created triangles to find new host
{
if (new_tri[n]->bound_location(dem_grid[i].x, dem_grid[i].y))
if (new_tri[n]->bound_location(dem_grid[i]->x, dem_grid[i]->y))
{
dem_grid[i].host = new_tri[n];
dem_grid[i]->host = new_tri[n];
dem_grid[i]->err = fabs(new_tri[n]->interpolate(dem_grid[i]->x, dem_grid[i]->y) - dem_grid[i]->elev);
break; // already found, no need to search more
}
}
@ -381,11 +440,11 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
{
for (int n = 0; n < new_tri.size(); ++n) // search in newly created triangles to find new circumcircle triangles
{
dist = (new_tri[n]->cx - dem_grid[i].x) * (new_tri[n]->cx - dem_grid[i].x)
+ (new_tri[n]->cy - dem_grid[i].y) * (new_tri[n]->cy - dem_grid[i].y);
dist = (new_tri[n]->cx - dem_grid[i]->x) * (new_tri[n]->cx - dem_grid[i]->x)
+ (new_tri[n]->cy - dem_grid[i]->y) * (new_tri[n]->cy - dem_grid[i]->y);
if ((dist - new_tri[n]->cr) <= ZERO) // Points on the circumcircle are also included
{
dem_grid[i].circum_host.push_back(new_tri[n]);
dem_grid[i]->circum_host.push_back(new_tri[n]);
// no beak here. There might be more than one triangle's circumcircle includes the DEM location
}
}
@ -398,7 +457,20 @@ void dem2tin(const std::vector<double> &dem, double xmin, double xmax, double ym
delete tmp_tri; tmp_tri = nullptr;
}
} while (now_maxi_err >= maxi_err);
heap_sort(dem_grid);
}
if (err_records != nullptr)
{
err_records->push_back(dem_grid[0]->err);
}
// destroy remaining DEM data
for (int i = 0; i < dem_grid.size(); ++i)
{
tmp_dem = dem_grid[i];
delete tmp_dem; tmp_dem = nullptr;
}
return;
}

1002001
topo2.txt Normal file

File diff suppressed because it is too large Load Diff

1596
topo2_TIN.log Normal file

File diff suppressed because it is too large Load Diff

6312
topo2_TIN.msh Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2086,10 +2086,10 @@
2085 1.4206
2086 1.1363
2087 1.136
2088 2.002
2089 1.136
2090 1.4285
2091 3.5135
2088 1.4285
2089 3.5135
2090 1.136
2091 2.002
2092 1.1352
2093 1.69885
2094 1.1346

View File

@ -2,7 +2,7 @@ $MeshFormat
2.2 0 8
$EndMeshFormat
$Nodes
2346
2345
1 0 0 0
2 1000 0 16.0985
3 1000 1000 1.00237
@ -2093,11 +2093,11 @@ $Nodes
2088 350 750 84.5986
2089 330 750 89.6465
2090 240 570 45.0428
2091 700 420 115.744
2092 690 420 125.532
2093 520 470 168.821
2094 510 470 168.277
2095 510 460 176.628
2091 520 470 168.821
2092 510 470 168.277
2093 510 460 176.628
2094 700 420 115.744
2095 690 420 125.532
2096 910 280 26.9883
2097 900 260 26.7625
2098 750 460 65.73990000000001
@ -2348,10 +2348,9 @@ $Nodes
2343 450 950 9.091430000000001
2344 630 540 77.0005
2345 500 450 174.769
2346 880 840 11.7802
$EndNodes
$Elements
4637
4635
1 2 0 131 88 194
2 2 0 198 32 199
3 2 0 18 151 223
@ -5811,28 +5810,28 @@ $Elements
3457 2 0 1553 1399 2090
3458 2 0 1399 1992 2090
3459 2 0 1992 962 2090
3460 2 0 564 303 2091
3461 2 0 249 916 2092
3462 2 0 916 762 2092
3463 2 0 303 1796 2092
3464 2 0 1796 249 2092
3465 2 0 2091 303 2092
3466 2 0 762 1112 2092
3467 2 0 1112 2091 2092
3468 2 0 47 463 2093
3469 2 0 463 467 2093
3470 2 0 467 884 2093
3471 2 0 884 468 2093
3472 2 0 1867 1869 2094
3473 2 0 1869 546 2094
3474 2 0 468 1867 2094
3475 2 0 2093 468 2094
3476 2 0 464 47 2095
3477 2 0 532 464 2095
3478 2 0 546 547 2095
3479 2 0 2094 546 2095
3480 2 0 47 2093 2095
3481 2 0 2093 2094 2095
3460 2 0 47 463 2091
3461 2 0 463 467 2091
3462 2 0 467 884 2091
3463 2 0 884 468 2091
3464 2 0 1867 1869 2092
3465 2 0 1869 546 2092
3466 2 0 468 1867 2092
3467 2 0 2091 468 2092
3468 2 0 464 47 2093
3469 2 0 532 464 2093
3470 2 0 546 547 2093
3471 2 0 2092 546 2093
3472 2 0 47 2091 2093
3473 2 0 2091 2092 2093
3474 2 0 564 303 2094
3475 2 0 249 916 2095
3476 2 0 916 762 2095
3477 2 0 303 1796 2095
3478 2 0 1796 249 2095
3479 2 0 2094 303 2095
3480 2 0 762 1112 2095
3481 2 0 1112 2094 2095
3482 2 0 1535 2051 2096
3483 2 0 399 400 2097
3484 2 0 2096 399 2097
@ -5987,10 +5986,10 @@ $Elements
3633 2 0 1511 563 2134
3634 2 0 2133 1511 2134
3635 2 0 1112 1873 2135
3636 2 0 2091 1112 2135
3636 2 0 2094 1112 2135
3637 2 0 1873 1111 2135
3638 2 0 1111 2133 2135
3639 2 0 564 2091 2135
3639 2 0 564 2094 2135
3640 2 0 2133 2134 2135
3641 2 0 2134 564 2135
3642 2 0 1208 84 2136
@ -6694,301 +6693,299 @@ $Elements
4340 2 0 414 1044 2289
4341 2 0 1044 1220 2289
4342 2 0 1220 1218 2289
4343 2 0 1218 2187 2289
4344 2 0 2187 2064 2289
4345 2 0 1066 1067 2290
4346 2 0 1067 2051 2290
4347 2 0 2084 1066 2290
4348 2 0 2051 1535 2290
4349 2 0 1535 2123 2290
4350 2 0 822 2083 2290
4351 2 0 2123 822 2290
4352 2 0 2083 2084 2290
4353 2 0 1714 281 2291
4354 2 0 1158 1917 2291
4355 2 0 281 2215 2291
4356 2 0 1908 1158 2291
4357 2 0 1907 1908 2291
4358 2 0 2215 1907 2291
4359 2 0 386 1663 2292
4360 2 0 1876 386 2292
4361 2 0 1877 1876 2292
4362 2 0 387 1657 2292
4363 2 0 1657 1878 2292
4364 2 0 1663 387 2292
4365 2 0 1878 1877 2292
4366 2 0 308 1087 2293
4367 2 0 1910 308 2293
4368 2 0 1087 1088 2293
4369 2 0 1088 1478 2293
4370 2 0 1478 1910 2293
4371 2 0 147 1179 2294
4372 2 0 1179 1181 2294
4373 2 0 1182 587 2294
4374 2 0 587 1217 2294
4375 2 0 1217 147 2294
4376 2 0 1181 2036 2294
4377 2 0 2036 1182 2294
4378 2 0 1084 1514 2295
4379 2 0 1916 1084 2295
4380 2 0 311 1587 2295
4381 2 0 1587 1916 2295
4382 2 0 1514 1919 2295
4383 2 0 1919 311 2295
4384 2 0 1107 1105 2296
4385 2 0 1105 1278 2296
4386 2 0 1911 1107 2296
4387 2 0 2296 1278 2297
4388 2 0 229 1911 2297
4389 2 0 1911 2296 2297
4390 2 0 1277 1785 2298
4391 2 0 1785 229 2298
4392 2 0 1278 1787 2298
4393 2 0 1787 1277 2298
4394 2 0 229 2297 2298
4395 2 0 2297 1278 2298
4396 2 0 82 1427 2299
4397 2 0 1427 1074 2299
4398 2 0 1074 1997 2299
4399 2 0 1997 1715 2299
4400 2 0 1715 2285 2299
4401 2 0 2285 82 2299
4402 2 0 402 772 2300
4403 2 0 1982 402 2300
4404 2 0 772 1398 2300
4405 2 0 2254 1982 2300
4406 2 0 1398 2082 2300
4407 2 0 2082 2254 2300
4408 2 0 213 649 2301
4409 2 0 649 265 2301
4410 2 0 282 757 2301
4411 2 0 757 213 2301
4412 2 0 265 1098 2301
4413 2 0 1098 184 2301
4414 2 0 184 1602 2301
4415 2 0 1602 282 2301
4416 2 0 370 833 2302
4417 2 0 1642 1643 2302
4418 2 0 1643 370 2302
4419 2 0 1641 1253 2303
4420 2 0 1253 1642 2303
4421 2 0 1642 2302 2303
4422 2 0 833 2266 2303
4423 2 0 2302 833 2303
4424 2 0 2266 1641 2303
4425 2 0 232 810 2304
4426 2 0 810 1476 2304
4427 2 0 175 725 2304
4428 2 0 1476 175 2304
4429 2 0 2009 232 2305
4430 2 0 232 2304 2305
4431 2 0 725 1702 2305
4432 2 0 2304 725 2305
4433 2 0 1702 2009 2305
4434 2 0 882 1588 2306
4435 2 0 1588 438 2306
4436 2 0 1606 2156 2306
4437 2 0 2156 882 2306
4438 2 0 438 439 2307
4439 2 0 2306 438 2307
4440 2 0 1606 2306 2307
4441 2 0 130 1617 2308
4442 2 0 1237 789 2308
4443 2 0 1617 1237 2308
4444 2 0 790 438 2309
4445 2 0 1100 130 2309
4446 2 0 130 2308 2309
4447 2 0 789 790 2309
4448 2 0 2308 789 2309
4449 2 0 311 1919 2310
4450 2 0 1919 1100 2310
4451 2 0 1100 2309 2310
4452 2 0 1587 311 2310
4453 2 0 438 1587 2310
4454 2 0 2309 438 2310
4455 2 0 1735 9 2311
4456 2 0 1253 1641 2312
4457 2 0 1641 1735 2312
4458 2 0 1735 2311 2312
4459 2 0 9 908 2313
4460 2 0 908 2173 2313
4461 2 0 2173 1822 2313
4462 2 0 2311 9 2313
4463 2 0 2312 2311 2313
4464 2 0 1822 827 2313
4465 2 0 827 2312 2313
4466 2 0 1254 1253 2314
4467 2 0 1987 1254 2314
4468 2 0 827 2276 2314
4469 2 0 2276 1987 2314
4470 2 0 2312 827 2314
4471 2 0 1253 2312 2314
4472 2 0 136 1078 2315
4473 2 0 2263 136 2315
4474 2 0 1406 2264 2315
4475 2 0 2264 2263 2315
4476 2 0 1078 2277 2315
4477 2 0 2277 1406 2315
4478 2 0 826 922 2316
4479 2 0 922 155 2316
4480 2 0 1403 826 2316
4481 2 0 1432 1403 2316
4482 2 0 155 2272 2316
4483 2 0 2272 1432 2316
4484 2 0 835 781 2317
4485 2 0 836 964 2317
4486 2 0 964 835 2317
4487 2 0 716 1843 2317
4488 2 0 1843 836 2317
4489 2 0 781 2193 2317
4490 2 0 2193 716 2317
4491 2 0 369 2053 2318
4492 2 0 2053 615 2318
4493 2 0 2251 369 2318
4494 2 0 615 1575 2318
4495 2 0 1575 2251 2318
4496 2 0 976 993 2319
4497 2 0 993 1978 2319
4498 2 0 647 976 2319
4499 2 0 2063 647 2319
4500 2 0 1978 1372 2319
4501 2 0 1372 2063 2319
4502 2 0 1061 738 2320
4503 2 0 1486 1061 2320
4504 2 0 1204 37 2320
4505 2 0 2155 1204 2320
4506 2 0 37 1486 2320
4507 2 0 738 2155 2320
4508 2 0 1017 14 2321
4509 2 0 1018 1017 2321
4510 2 0 14 1072 2321
4511 2 0 1072 1019 2321
4512 2 0 1019 1717 2321
4513 2 0 1602 1018 2321
4514 2 0 1646 1602 2321
4515 2 0 1717 1646 2321
4516 2 0 510 1220 2322
4517 2 0 1307 510 2322
4518 2 0 1220 799 2322
4519 2 0 799 1307 2322
4520 2 0 863 406 2323
4521 2 0 1449 863 2323
4522 2 0 1292 1449 2323
4523 2 0 406 1816 2323
4524 2 0 1816 1292 2323
4525 2 0 867 507 2324
4526 2 0 1559 867 2324
4527 2 0 507 2186 2324
4528 2 0 2186 1266 2324
4529 2 0 1266 2204 2324
4530 2 0 2204 1559 2324
4531 2 0 142 8 2325
4532 2 0 8 408 2325
4533 2 0 225 227 2325
4534 2 0 408 225 2325
4535 2 0 227 879 2325
4536 2 0 879 1446 2325
4537 2 0 1446 142 2325
4538 2 0 1605 2175 2326
4539 2 0 2175 1606 2326
4540 2 0 439 1605 2326
4541 2 0 2307 439 2326
4542 2 0 1606 2307 2326
4543 2 0 668 1573 2327
4544 2 0 1681 668 2327
4545 2 0 54 1116 2327
4546 2 0 1772 54 2327
4547 2 0 1116 1681 2327
4548 2 0 1573 1772 2327
4549 2 0 241 146 2328
4550 2 0 816 241 2328
4551 2 0 1322 816 2328
4552 2 0 146 1396 2328
4553 2 0 1396 1227 2328
4554 2 0 1227 1466 2328
4555 2 0 1466 1322 2328
4556 2 0 51 1588 2329
4557 2 0 1588 882 2329
4558 2 0 2022 51 2329
4559 2 0 1708 2022 2329
4560 2 0 2156 1708 2329
4561 2 0 882 2156 2329
4562 2 0 340 1555 2330
4563 2 0 1555 1485 2330
4564 2 0 1485 1850 2330
4565 2 0 1850 340 2330
4566 2 0 1104 1790 2331
4567 2 0 1790 1789 2331
4568 2 0 1789 2283 2331
4569 2 0 2285 1715 2331
4570 2 0 2283 2284 2331
4571 2 0 2284 2285 2331
4572 2 0 1715 1714 2332
4573 2 0 2331 1715 2332
4574 2 0 1708 1104 2334
4575 2 0 2022 1708 2334
4576 2 0 2333 2022 2334
4577 2 0 1104 2331 2334
4578 2 0 2331 2332 2334
4579 2 0 2332 2333 2334
4580 2 0 1714 2291 2335
4581 2 0 2291 1917 2335
4582 2 0 1917 2022 2335
4583 2 0 2022 2333 2335
4584 2 0 2332 1714 2335
4585 2 0 2333 2332 2335
4586 2 0 1616 749 2336
4587 2 0 749 1697 2336
4588 2 0 1697 336 2336
4589 2 0 342 1616 2336
4590 2 0 2253 342 2336
4591 2 0 336 2011 2336
4592 2 0 2011 2253 2336
4593 2 0 441 1735 2337
4594 2 0 2103 441 2337
4595 2 0 1735 1641 2337
4596 2 0 1641 2266 2338
4597 2 0 2337 1641 2338
4598 2 0 2101 2103 2338
4599 2 0 2103 2337 2338
4600 2 0 2266 2101 2338
4601 2 0 1175 61 2339
4602 2 0 1575 1175 2339
4603 2 0 2251 1575 2339
4604 2 0 61 1930 2339
4605 2 0 1930 1749 2339
4606 2 0 1749 2251 2339
4607 2 0 1728 100 2340
4608 2 0 1866 1728 2340
4609 2 0 1986 2030 2341
4610 2 0 2030 1866 2341
4611 2 0 260 1986 2341
4612 2 0 1866 2340 2341
4613 2 0 925 519 2342
4614 2 0 1088 925 2342
4615 2 0 2131 1088 2342
4616 2 0 1731 163 2343
4617 2 0 163 2131 2343
4618 2 0 519 1730 2343
4619 2 0 2342 519 2343
4620 2 0 1730 1731 2343
4621 2 0 2131 2342 2343
4622 2 0 491 903 2344
4623 2 0 902 304 2344
4624 2 0 903 902 2344
4625 2 0 304 1137 2344
4626 2 0 1137 491 2344
4627 2 0 547 274 2345
4628 2 0 274 1690 2345
4629 2 0 226 532 2345
4630 2 0 651 226 2345
4631 2 0 1690 651 2345
4632 2 0 532 2095 2345
4633 2 0 2095 547 2345
4634 2 0 2063 414 2346
4635 2 0 414 2289 2346
4636 2 0 2064 2063 2346
4637 2 0 2289 2064 2346
4343 2 0 2063 414 2289
4344 2 0 2064 2063 2289
4345 2 0 1218 2187 2289
4346 2 0 2187 2064 2289
4347 2 0 1066 1067 2290
4348 2 0 1067 2051 2290
4349 2 0 2084 1066 2290
4350 2 0 2051 1535 2290
4351 2 0 1535 2123 2290
4352 2 0 822 2083 2290
4353 2 0 2123 822 2290
4354 2 0 2083 2084 2290
4355 2 0 1714 281 2291
4356 2 0 1158 1917 2291
4357 2 0 281 2215 2291
4358 2 0 1908 1158 2291
4359 2 0 1907 1908 2291
4360 2 0 2215 1907 2291
4361 2 0 386 1663 2292
4362 2 0 1876 386 2292
4363 2 0 1877 1876 2292
4364 2 0 387 1657 2292
4365 2 0 1657 1878 2292
4366 2 0 1663 387 2292
4367 2 0 1878 1877 2292
4368 2 0 308 1087 2293
4369 2 0 1910 308 2293
4370 2 0 1087 1088 2293
4371 2 0 1088 1478 2293
4372 2 0 1478 1910 2293
4373 2 0 147 1179 2294
4374 2 0 1179 1181 2294
4375 2 0 1182 587 2294
4376 2 0 587 1217 2294
4377 2 0 1217 147 2294
4378 2 0 1181 2036 2294
4379 2 0 2036 1182 2294
4380 2 0 1084 1514 2295
4381 2 0 1916 1084 2295
4382 2 0 311 1587 2295
4383 2 0 1587 1916 2295
4384 2 0 1514 1919 2295
4385 2 0 1919 311 2295
4386 2 0 1107 1105 2296
4387 2 0 1105 1278 2296
4388 2 0 1911 1107 2296
4389 2 0 2296 1278 2297
4390 2 0 229 1911 2297
4391 2 0 1911 2296 2297
4392 2 0 1277 1785 2298
4393 2 0 1785 229 2298
4394 2 0 1278 1787 2298
4395 2 0 1787 1277 2298
4396 2 0 229 2297 2298
4397 2 0 2297 1278 2298
4398 2 0 82 1427 2299
4399 2 0 1427 1074 2299
4400 2 0 1074 1997 2299
4401 2 0 1997 1715 2299
4402 2 0 1715 2285 2299
4403 2 0 2285 82 2299
4404 2 0 402 772 2300
4405 2 0 1982 402 2300
4406 2 0 772 1398 2300
4407 2 0 2254 1982 2300
4408 2 0 1398 2082 2300
4409 2 0 2082 2254 2300
4410 2 0 213 649 2301
4411 2 0 649 265 2301
4412 2 0 282 757 2301
4413 2 0 757 213 2301
4414 2 0 265 1098 2301
4415 2 0 1098 184 2301
4416 2 0 184 1602 2301
4417 2 0 1602 282 2301
4418 2 0 370 833 2302
4419 2 0 1642 1643 2302
4420 2 0 1643 370 2302
4421 2 0 1641 1253 2303
4422 2 0 1253 1642 2303
4423 2 0 1642 2302 2303
4424 2 0 833 2266 2303
4425 2 0 2302 833 2303
4426 2 0 2266 1641 2303
4427 2 0 232 810 2304
4428 2 0 810 1476 2304
4429 2 0 175 725 2304
4430 2 0 1476 175 2304
4431 2 0 2009 232 2305
4432 2 0 232 2304 2305
4433 2 0 725 1702 2305
4434 2 0 2304 725 2305
4435 2 0 1702 2009 2305
4436 2 0 882 1588 2306
4437 2 0 1588 438 2306
4438 2 0 1606 2156 2306
4439 2 0 2156 882 2306
4440 2 0 438 439 2307
4441 2 0 2306 438 2307
4442 2 0 1606 2306 2307
4443 2 0 130 1617 2308
4444 2 0 1237 789 2308
4445 2 0 1617 1237 2308
4446 2 0 790 438 2309
4447 2 0 1100 130 2309
4448 2 0 130 2308 2309
4449 2 0 789 790 2309
4450 2 0 2308 789 2309
4451 2 0 311 1919 2310
4452 2 0 1919 1100 2310
4453 2 0 1100 2309 2310
4454 2 0 1587 311 2310
4455 2 0 438 1587 2310
4456 2 0 2309 438 2310
4457 2 0 1735 9 2311
4458 2 0 1253 1641 2312
4459 2 0 1641 1735 2312
4460 2 0 1735 2311 2312
4461 2 0 9 908 2313
4462 2 0 908 2173 2313
4463 2 0 2173 1822 2313
4464 2 0 2311 9 2313
4465 2 0 2312 2311 2313
4466 2 0 1822 827 2313
4467 2 0 827 2312 2313
4468 2 0 1254 1253 2314
4469 2 0 1987 1254 2314
4470 2 0 827 2276 2314
4471 2 0 2276 1987 2314
4472 2 0 2312 827 2314
4473 2 0 1253 2312 2314
4474 2 0 136 1078 2315
4475 2 0 2263 136 2315
4476 2 0 1406 2264 2315
4477 2 0 2264 2263 2315
4478 2 0 1078 2277 2315
4479 2 0 2277 1406 2315
4480 2 0 826 922 2316
4481 2 0 922 155 2316
4482 2 0 1403 826 2316
4483 2 0 1432 1403 2316
4484 2 0 155 2272 2316
4485 2 0 2272 1432 2316
4486 2 0 835 781 2317
4487 2 0 836 964 2317
4488 2 0 964 835 2317
4489 2 0 716 1843 2317
4490 2 0 1843 836 2317
4491 2 0 781 2193 2317
4492 2 0 2193 716 2317
4493 2 0 369 2053 2318
4494 2 0 2053 615 2318
4495 2 0 2251 369 2318
4496 2 0 615 1575 2318
4497 2 0 1575 2251 2318
4498 2 0 976 993 2319
4499 2 0 993 1978 2319
4500 2 0 647 976 2319
4501 2 0 2063 647 2319
4502 2 0 1978 1372 2319
4503 2 0 1372 2063 2319
4504 2 0 1061 738 2320
4505 2 0 1486 1061 2320
4506 2 0 1204 37 2320
4507 2 0 2155 1204 2320
4508 2 0 37 1486 2320
4509 2 0 738 2155 2320
4510 2 0 1017 14 2321
4511 2 0 1018 1017 2321
4512 2 0 14 1072 2321
4513 2 0 1072 1019 2321
4514 2 0 1019 1717 2321
4515 2 0 1602 1018 2321
4516 2 0 1646 1602 2321
4517 2 0 1717 1646 2321
4518 2 0 510 1220 2322
4519 2 0 1307 510 2322
4520 2 0 1220 799 2322
4521 2 0 799 1307 2322
4522 2 0 863 406 2323
4523 2 0 1449 863 2323
4524 2 0 1292 1449 2323
4525 2 0 406 1816 2323
4526 2 0 1816 1292 2323
4527 2 0 867 507 2324
4528 2 0 1559 867 2324
4529 2 0 507 2186 2324
4530 2 0 2186 1266 2324
4531 2 0 1266 2204 2324
4532 2 0 2204 1559 2324
4533 2 0 142 8 2325
4534 2 0 8 408 2325
4535 2 0 225 227 2325
4536 2 0 408 225 2325
4537 2 0 227 879 2325
4538 2 0 879 1446 2325
4539 2 0 1446 142 2325
4540 2 0 1605 2175 2326
4541 2 0 2175 1606 2326
4542 2 0 439 1605 2326
4543 2 0 2307 439 2326
4544 2 0 1606 2307 2326
4545 2 0 668 1573 2327
4546 2 0 1681 668 2327
4547 2 0 54 1116 2327
4548 2 0 1772 54 2327
4549 2 0 1116 1681 2327
4550 2 0 1573 1772 2327
4551 2 0 241 146 2328
4552 2 0 816 241 2328
4553 2 0 1322 816 2328
4554 2 0 146 1396 2328
4555 2 0 1396 1227 2328
4556 2 0 1227 1466 2328
4557 2 0 1466 1322 2328
4558 2 0 51 1588 2329
4559 2 0 1588 882 2329
4560 2 0 2022 51 2329
4561 2 0 1708 2022 2329
4562 2 0 2156 1708 2329
4563 2 0 882 2156 2329
4564 2 0 340 1555 2330
4565 2 0 1555 1485 2330
4566 2 0 1485 1850 2330
4567 2 0 1850 340 2330
4568 2 0 1104 1790 2331
4569 2 0 1790 1789 2331
4570 2 0 1789 2283 2331
4571 2 0 2285 1715 2331
4572 2 0 2283 2284 2331
4573 2 0 2284 2285 2331
4574 2 0 1715 1714 2332
4575 2 0 2331 1715 2332
4576 2 0 1708 1104 2334
4577 2 0 2022 1708 2334
4578 2 0 2333 2022 2334
4579 2 0 1104 2331 2334
4580 2 0 2331 2332 2334
4581 2 0 2332 2333 2334
4582 2 0 1714 2291 2335
4583 2 0 2291 1917 2335
4584 2 0 1917 2022 2335
4585 2 0 2022 2333 2335
4586 2 0 2332 1714 2335
4587 2 0 2333 2332 2335
4588 2 0 1616 749 2336
4589 2 0 749 1697 2336
4590 2 0 1697 336 2336
4591 2 0 342 1616 2336
4592 2 0 2253 342 2336
4593 2 0 336 2011 2336
4594 2 0 2011 2253 2336
4595 2 0 441 1735 2337
4596 2 0 2103 441 2337
4597 2 0 1735 1641 2337
4598 2 0 1641 2266 2338
4599 2 0 2337 1641 2338
4600 2 0 2101 2103 2338
4601 2 0 2103 2337 2338
4602 2 0 2266 2101 2338
4603 2 0 1175 61 2339
4604 2 0 1575 1175 2339
4605 2 0 2251 1575 2339
4606 2 0 61 1930 2339
4607 2 0 1930 1749 2339
4608 2 0 1749 2251 2339
4609 2 0 1728 100 2340
4610 2 0 1866 1728 2340
4611 2 0 1986 2030 2341
4612 2 0 2030 1866 2341
4613 2 0 260 1986 2341
4614 2 0 1866 2340 2341
4615 2 0 925 519 2342
4616 2 0 1088 925 2342
4617 2 0 2131 1088 2342
4618 2 0 1731 163 2343
4619 2 0 163 2131 2343
4620 2 0 519 1730 2343
4621 2 0 2342 519 2343
4622 2 0 1730 1731 2343
4623 2 0 2131 2342 2343
4624 2 0 491 903 2344
4625 2 0 902 304 2344
4626 2 0 903 902 2344
4627 2 0 304 1137 2344
4628 2 0 1137 491 2344
4629 2 0 547 274 2345
4630 2 0 274 1690 2345
4631 2 0 226 532 2345
4632 2 0 651 226 2345
4633 2 0 1690 651 2345
4634 2 0 532 2093 2345
4635 2 0 2093 547 2345
$EndElements
$NodeData
1
@ -6998,7 +6995,7 @@ $NodeData
3
0
1
2346
2345
1 0
2 16.0985
3 1.00237
@ -9089,11 +9086,11 @@ $NodeData
2088 84.5986
2089 89.6465
2090 45.0428
2091 115.744
2092 125.532
2093 168.821
2094 168.277
2095 176.628
2091 168.821
2092 168.277
2093 176.628
2094 115.744
2095 125.532
2096 26.9883
2097 26.7625
2098 65.73990000000001
@ -9344,5 +9341,4 @@ $NodeData
2343 9.091430000000001
2344 77.0005
2345 174.769
2346 11.7802
$EndNodeData