Mensen, ik zit met een uitdaging waarbij ik graag zou horen of ik in de juiste richting denk of dat jullie het anders zouden doen.
case
Bij ons op het werk krijgen wij met enige regelmaat een 3D puntenbestand aangeleverd.
Vanuit dit puntenbestand is het voor mij met AutoCAD Civil 3D een koud kunstje om hier een Suface van te maken om zo volume bepalingen en andere taken op uit te voeren.
Mijn collega's werken echter met AutoCAD LT en bezitten dus niet de benodigde functies om een 3D surface / puntenbestand in te lezen.
Om mijn collega's ook te kunnen laten werken met de aangeleverde hoogte gegevens zet ik zo'n puntenbestand dan om naar hoogtelijnen en een tekstueele weergave van de hoogtes.
Echter onstaat dan al snel een bestand dat niet prettig is om te werken door de hoeveelheid aan data. Dit is dan op te lossen door handmatig overbodige informatie te verwijderen, echter bij grote bestanden is dit erg tijdrovend.
gewenste oplossing / gedachten gang
Hieronder een deel van een data set.
Iedere regel in de dataset is opgebouwd uit een Nummer, X-coordinaat, Y-coordinaat, en Z-waarde.
Zoals in de dataset te zien zitten punt 29-40 op dezelfde Z-waarde, hier zouden dus rustig enkele punten weg mogen vallen.
Zelf zat ik te denken om doormiddel van een VB.net plugin zo'n dataset te importeren en dan op basis van het gelijk zijn van de Z-waarde het aantal records te reduceren.
Dit zou kunnen door simpel weg het bestand te doorlopen en te kijken waar een blok met dezelfde hoogtes voorkomt om vervolgens hier bijvoorbeeld iedere 5e record te handhaven.
Wanneer de punten dicht bij elkaar staan dan kan dit prima zonder essentieele data te verliezen.
Echter zodra de afstand groter wordt tussen de onderlinge punten binnen het blok met dezelfde hoogte bestaat er de mogelijkheid dat je essentieele data verliest en zul je wellicht de punten moeten handhaven.
Ik ben mij terdege bewust dat zodra ik mijn dataset ga verkleinen door informatie te wissen ik het risico loop op het missen van essentieele data. Dit is een bewust risico dat ik nu even neem.
Wat is nu de meest slimme manier om deze dataset welke als *.txt wordt aangeleverd in te lezen en daar waar mogelijk te reduceren?
Ik zou het bestand regel voor regel kunnen inlezen om vervolgens de punten welke ik wil behouden direct in AutoCAD te plaatsen.
Maar ik zou ook het hele bestand in een Datatable kunnen stoppen om vervolgens de reduceer acties uit te voeren.
duwtje in de rug
Op welke wijze zouden jullie deze dataset importeren / de gewenste reduceer actie uitvoeren middels VB.net?
Zit ik qua logica voor het uitdunnen in de juiste richting te denken of hebben jullie een beter idee?
dataset
case
Bij ons op het werk krijgen wij met enige regelmaat een 3D puntenbestand aangeleverd.
Vanuit dit puntenbestand is het voor mij met AutoCAD Civil 3D een koud kunstje om hier een Suface van te maken om zo volume bepalingen en andere taken op uit te voeren.
Mijn collega's werken echter met AutoCAD LT en bezitten dus niet de benodigde functies om een 3D surface / puntenbestand in te lezen.
Om mijn collega's ook te kunnen laten werken met de aangeleverde hoogte gegevens zet ik zo'n puntenbestand dan om naar hoogtelijnen en een tekstueele weergave van de hoogtes.
Echter onstaat dan al snel een bestand dat niet prettig is om te werken door de hoeveelheid aan data. Dit is dan op te lossen door handmatig overbodige informatie te verwijderen, echter bij grote bestanden is dit erg tijdrovend.
gewenste oplossing / gedachten gang
Hieronder een deel van een data set.
Iedere regel in de dataset is opgebouwd uit een Nummer, X-coordinaat, Y-coordinaat, en Z-waarde.
Zoals in de dataset te zien zitten punt 29-40 op dezelfde Z-waarde, hier zouden dus rustig enkele punten weg mogen vallen.
Zelf zat ik te denken om doormiddel van een VB.net plugin zo'n dataset te importeren en dan op basis van het gelijk zijn van de Z-waarde het aantal records te reduceren.
Dit zou kunnen door simpel weg het bestand te doorlopen en te kijken waar een blok met dezelfde hoogtes voorkomt om vervolgens hier bijvoorbeeld iedere 5e record te handhaven.
Wanneer de punten dicht bij elkaar staan dan kan dit prima zonder essentieele data te verliezen.
Echter zodra de afstand groter wordt tussen de onderlinge punten binnen het blok met dezelfde hoogte bestaat er de mogelijkheid dat je essentieele data verliest en zul je wellicht de punten moeten handhaven.
Ik ben mij terdege bewust dat zodra ik mijn dataset ga verkleinen door informatie te wissen ik het risico loop op het missen van essentieele data. Dit is een bewust risico dat ik nu even neem.
Wat is nu de meest slimme manier om deze dataset welke als *.txt wordt aangeleverd in te lezen en daar waar mogelijk te reduceren?
Ik zou het bestand regel voor regel kunnen inlezen om vervolgens de punten welke ik wil behouden direct in AutoCAD te plaatsen.
Maar ik zou ook het hele bestand in een Datatable kunnen stoppen om vervolgens de reduceer acties uit te voeren.
duwtje in de rug
Op welke wijze zouden jullie deze dataset importeren / de gewenste reduceer actie uitvoeren middels VB.net?
Zit ik qua logica voor het uitdunnen in de juiste richting te denken of hebben jullie een beter idee?
dataset
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| nr,x,y,z 1,265697.373330,489181.443783,24.380000 2,265697.373330,489186.443783,24.380000 3,265702.373330,489181.443783,24.299899 4,265702.373330,489186.443783,24.380000 5,265707.373330,489181.443783,24.480000 6,265707.373330,489186.443783,24.323899 7,265712.373330,489181.443783,24.607754 8,265712.373330,489186.443783,24.480000 9,265717.373330,489181.443783,24.788702 10,265717.373330,489186.443783,24.480000 11,265722.373330,489181.443783,24.409514 12,265722.373330,489186.443783,24.780000 13,265727.373330,489181.443783,24.480000 14,265727.373330,489186.443783,24.180000 15,265732.373330,489181.443783,24.339751 16,265732.373330,489186.443783,24.289720 17,265737.373330,489181.443783,24.348343 18,265737.373330,489186.443783,24.480000 19,265742.373330,489181.443783,24.280000 20,265742.373330,489186.443783,24.180000 21,265747.373330,489181.443783,24.215444 22,265747.373330,489186.443783,24.480000 23,265752.373330,489181.443783,24.280000 24,265752.373330,489186.443783,24.480000 25,265757.373330,489181.443783,24.111587 26,265757.373330,489186.443783,23.930664 27,265762.373330,489181.443783,23.880000 28,265762.373330,489186.443783,23.927104 29,265767.373330,489181.443783,23.880000 30,265767.373330,489186.443783,23.880000 31,265772.373330,489181.443783,23.880000 32,265772.373330,489186.443783,23.880000 33,265777.373330,489181.443783,23.880000 34,265777.373330,489186.443783,23.880000 35,265782.373330,489181.443783,23.880000 36,265782.373330,489186.443783,23.880000 37,265787.373330,489181.443783,23.880000 38,265787.373330,489186.443783,23.880000 39,265792.373330,489181.443783,23.880000 40,265792.373330,489186.443783,23.880000 41,265797.373330,489181.443783,23.963097 42,265797.373330,489186.443783,23.953103 43,265802.373330,489181.443783,23.977940 44,265802.373330,489186.443783,23.880000 45,265686.416080,489098.852373,24.581864 46,265686.416080,489103.852373,24.639528 47,265686.416080,489108.852373,24.580000 48,265686.416080,489113.852373,24.580000 49,265686.416080,489118.852373,24.615788 50,265686.416080,489123.852373,24.960042 |