• No results found

Det har uppstått ett behov av att utreda de trianglar som har givit felaktiga värden för att få förståelse för exakt vad som har skett med dem och hur det exakt påverkar modellen. Det finns även ett behov av att vidare utforska denna procedur genom att använda sig av flera olika områden.

Detta för att kunna representera flera olika typer av terräng för att på det sättet kunna skapa riktlinjer för denna hantering på så många olika platser som möjligt. Det går att utföra en liknande studie och ta med t.ex.

fjäll, skärgård, träsk eller urbana områden osv. Det rekommenderas även att vidare räkna på lutningen och aspekt för alla trianglar i modellen.

Aspekt inom geografi innebär den riktning som en triangel lutar åt som t.ex. att triangeln lutar åt vädersträcket norr. Detta för att kunna bygga ut riktlinjerna för fler områden och skapa en möjlighet för att kunna dra

23

vidare analyser.

Detta arbete kan därför vara en grund för att vidare utforska TIN-generering utifrån LIDAR-punktmoln eller liknande modeller. Vi uppmuntrar till vidare studier utifrån andra vinklar eller för andra modeller för att ständigt förbättra verktyg och idéer inom GIS och LIDAR.

6 Slutsatser

Av denna studie har det dragits slutsatser som kan användas som riktlinjer inom arbeten med liknande inriktning. Vid användning av TIN genererade utifrån LIDAR bör man bestämma sig för vilken noggrannhet som behövs i modellen. Man bör vidare utreda vilken typ av terräng som skall modelleras. Detta för att kunna anpassa en reducering av

punktmolnet efter noggrannhet för den terrängtypen som används och anpassa den mängd av data som är lämplig för den terrängmodell som skall användas. Detta innebär att det bör appliceras en adaptiv filtrering beroende på terräng för det område som hanteras. Denna studie syftade till att besvara följande frågeställningar.

 Hur påverkar olika procentuella punktmolnsfiltreringar kvalitén hos resulterande TIN?

Punkmolnsfiltreringar påverkar kvalitén olika beroende på terrängtyp.

Genom att jämföra figur 12 med flygfotot (se figur 10) kan man se dem värden för standardavvikelsen som är uppmätta för de olika terrängtyper som testats. I plana områden påverkas kvalitén mindre av större andel punktfiltrering än i områden med tät vegetation. Kvalitén blir sämre vid lägre procentandel av ursprungspunkterna men det skiljer sig inte

signifikant mellan 50 % och 5 %. Kvalitén på noggrannheten över 50 % blir inte tillräckligt bra för den ökade datahantering som det resulterar i.

 Hur påverkar punktdensiteten kvalitén vid dessa filtreringar?

Punktdensiteteten spelar en stor roll inom områden som har en stor del punkter som inte är klassificerade som markpunkter. Det innebär att densiteten på markpunkterna kan vara låg samtidigt som punktdensiteten för det ursprungliga punktmolnet kan vara hög. När markpunkternas densitet blir lägre i LIDAR punktmolnet blir även resultatet sämre.

24

Referenser

[1] ”Grid2+”, 01 10 2015. [Online]. Available:

https://www.lantmateriet.se/globalassets/kartor-och-geografisk-information/hojddata/produktbeskrivningar/hojd2_plus.pdf. [Använd 15 04 2016].

[2] X. Liu, ”Airborne LiDAR for DEM generation:”, Progress in Physical Geography, vol. 32, nr 1, pp. 31-49, 2008.

[3] D. J. Harding, ”Principles of Airborne Laser Altimeter Terrain Mapping”, 17 03 2000. [Online]. Available:

http://pugetsoundlidar.ess.washington.edu/laser_altimetry_in_brief.p df. [Använd 12 05 2016].

[4] H. Wang, Y. Zhang, L. Pengcheng och X. Zha, ”A Method of Deriving DEM from Airborne LiDAR Points Cloud Data”, i Joint Urban Remote Sensing Event (JURSE), Sao Paulo, 2013.

[5] ”Laserdata”, 01 10 2015. [Online]. Available:

https://www.lantmateriet.se/globalassets/kartor-och-geografisk-information/hojddata/produktbeskrivningar/laserdat.pdf . [Använd 07 04 2016].

[6] T. Podobnikar och A. Vrecko, ”Digital Elevation Model from the Best Results of Different Filtering of a LiDAR Point Cloud”, Transactions in GIS, vol. 16, nr 5, pp. 603-617, 2012.

[7] N. Polat och U. Murat, ”Investigating performance of Airborne LiDAR data filtering algorithms for DTM generation”, Journal of the

International Measurement Confederation, vol. 63, pp. 61-68, 2014.

[8] J. Stoker, J. Menig, S. Greenlee och D. Gesch, ”The new USGS center for lidar information coordination and knowledge”, Photogrammetric Engineering and Remote Sensing, vol. 72, nr 6, pp. 613-616, 2006.

[9] K. H. Hans, ”Lidar Base Specification”, Section B, U.S. Geological Survey Standards, nr 1.2, p. 20, 2014.

[10] A. Abdul Rahman, ”Digital Terrain Model Data Structures”, Buletin UkUr, vol. 5, nr 1, pp. 61-66, 1994.

[11] D. F. Maune, ”Digital Elevation Model (DEM) Whitepaper NRCS High Resolution Elevation Data”, National Geospatial Management Center, 2011.

[12] P. Arun, ”A comparative analysis of different DEM interpolation methods”, The Egyptian Journal of REmote Sensing and Space Sciences, vol. 16, pp. 133-139, 2013.

25

[13] M. Peralvo, ”Influence of DEM interpolation methods in Drainage Analysis”, i GIS Hydro, Texas, 2004.

[14] M. v. Kreveld, ”Digital Elevation Models: overview and selected TIN algorithms”, Course Notes for the CISM Advanced School on Algorithmic foundations of Geographical Information Systems, p. 43, 1996.

[15] J. Warell och L. Sjöberg, ”triangulering - Uppslagsverk - NE”, Nationalencyklopedin, [Online]. Available:

http://www.ne.se/uppslagsverk/encyklopedi/l%C3%A5ng/trianguleri ng-%28fotogrammetri-geodesi%29. [Använd 16 05 2016].

[16] Z. Li, Q. Zhu och C. Gold, Digital terrain modeling: Principles and Methodology, CRC Press, 2004.

[17] M. de Berg, O. Cheong, M. van Kreveld och M. Overmars,

Computational Geometry: Algorithms and Applications, Springer-Verlag, 2008.

[18] J. Immelman och L. Scheepers, ”The Effects of Data Reduction on LiDAR-based Digital Elevation Models”, 4th International Congress on Image and Signal Processing, pp. 1694-1698, 2011.

[19] X. Liu och Z. Zhang, ”LIDAR DATA REDUCTION FOR EFFICIENT AND HIGH QUALITY DEM GENERATION”, i Congress of the International Society of Photogrammetry and Remote Sensing, Beijing, 2008.

[20] C. W. Bater och N. C. Coops, ”Evaluating error associated with lidar-derived DEM interpolation”, Computers&Geosciences, vol. 35, nr 2, pp.

289-300, 2009.

[21] G. Droj, ”IMPROVING THE ACCURACY OF DIGITAL TERRAIN”, Studia Universitatis Babes-Bolyai, vol. 45, nr 1, pp. 65-72, 2000.

[22] ”Safe”, [Online]. Available: https://www.safe.com/fme/fme-desktop/.

[Använd 12 04 2016].

[23] ”Esri”, [Online]. Available:

http://www.esri.com/software/arcgis/arcgis-for-desktop. [Använd 13 04 2016].

[24] ”Rapidlasso”, [Online]. Available: https://rapidlasso.com/. [Använd 23 04 2016].

[25] W. Heidrich, ”Computing the Barycentric Coordinates of a Projected Point”, Journal of Graphics Tools, GPU, and Game Tools, vol. 10, nr 3, pp. 9-12, 2005.

[26] J. Emery, ”Freedom Environment”, 30 8 2012. [Online]. Available:

http://www.freedomenv.com/TkGooies/TkGooieResources/PDFs/The

SimplexAndBarycentricCoordinates-26

CODE_JamesEmery_2012_17pgs.pdf. [Använd 03 05 2016].

[27] ”Kungliga Tekniska Högskolan”, 10 11 2009. [Online]. Available:

http://www.csc.kth.se/utbildning/kth/kurser/DD1340/inda09/algor ithms/tidskomplexitet/. [Använd 20 05 2016].

[28] M. Isenburg, Y. Liu, S. Jonathan, J. Snoeyink och T. Thirion,

”Generating Raster DEM from Mass Points via TIN Streaming”, i Geographic Information Science: 4th International Conference, Berlin, Springer Berlin Heidelberg, 2006, pp. 186-198.

27

Bilagor

Bilaga 1. Tabeller

Tabell 5. Tabell över korrelationen för de olika områdena.

Korrelation 5% 10% 20% 30% 50%

Delområde 1 0.998544 0.998955 0.998555 0.998725 0.99887 Delområde 2 0.999687 0.999642 0.999619 0.999685 0.999652 Delområde 3 0.993721 0.993887 0.995264 0.995092 0.994893 Delområde 4 0.998469 0.998777 0.998925 0.998974 0.999067 Delområde 5 0.999636 0.999675 0.999721 0.999662 0.999686 Delområde 6 0.999589 0.999282 0.999382 0.999511 0.999591 Delområde 7 0.996647 0.996936 0.99724 0.997206 0.99741 Delområde 8 0.995656 0.994713 0.9964 0.996346 0.996986 Delområde 9 0.999012 0.99905 0.99928 0.999231 0.999142

Tabell 6. Tabell över standardavvikelser för de olika områdena.

Standardavvikelse 5% 10% 20% 30% 50%

Delområde 1 0.073692m 0.056164m 0.046812m 0.038749m 0.027697m Delområde 2 0.092516m 0.071007m 0.054422m 0.043206m 0.032002m Delområde 3 0.131903m 0.102544m 0.072843m 0.060191m 0.044066m Delområde 4 0.167129m 0.120345m 0.086777m 0.070503m 0.048802m Delområde 5 0.074178m 0.05679m 0.041863m 0.037115m 0.026903m Delområde 6 0.078957m 0.066527m 0.049213m 0.038707m 0.025883m Delområde 7 0.058539m 0.046279m 0.036055m 0.030484m 0.021533m Delområde 8 0.052302m 0.045149m 0.033455m 0.028679m 0.020408m Delområde 9 0.15745m 0.116421m 0.081265m 0.067956m 0.051965m

Tabell 7. Tabell med antal punkter för de olika områdena.

Andel punkter 5% 10% 20% 30% 50% 100%

Delområde 1 27231 54462 108925 163387 272312 544623 Delområde 2 24118 48236 96472 144707 241179 482358 Delområde 3 15679 31358 62716 94074 156790 313580 Delområde 4 18095 36191 72382 108572 180953 361906 Delområde 5 32768 65535 131071 196606 327677 655354 Delområde 6 29734 59468 118937 178405 297342 594684 Delområde 7 38969 77938 155877 233814 389691 779381 Delområde 8 32460 64919 129839 194758 324597 649194 Delområde 9 15229 30457 60914 91371 152285 304570

Tabell 8. Tabell med data från delområde 2.

Delområde 2 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 143.928m 143.938m 143.9165m 143.8717m 143.8338m 143.9278975m Standardavvikelse 0.092516m 0.071007m 0.054422m 0.043206m 0.032002m

Korrelation riktiga värden 0.999687 0.999642 0.999619 0.999685 0.999652 Tabell 9. Tabell med data från delområde 3.

Delområde 3 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 176.1226m 176.1182m 176.1257m 176.1172m 176.1162m 176.1314288m Standardavvikelse 0.131903m 0.102544m 0.072843m 0.060191m 0.044066m

Korrelation riktiga värden 0.993721 0.993887 0.995264 0.995092 0.994893 Tabell 10. Tabell med data från delområde 4.

Delområde 4 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 161.1458m 161.1287m 161.1272m 161.1294m 161.0999m 161.1463787m Standardavvikelse 0.167129m 0.120345m 0.086777m 0.070503m 0.048802m

Korrelation riktiga värden 0.998469 0.998777 0.998925 0.998974 0.999067 Tabell 11. Tabell med data från delområde 5.

Delområde 5 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 118.5541m 118.5486m 118.5174m 118.4897m 118.4678m 118.5504111m Standardavvikelse 0.074178m 0.05679m 0.041863m 0.037115m 0.026903m

Korrelation riktiga värden 0.999636 0.999675 0.999721 0.999662 0.999686 Tabell 12. Tabell med data från delområde 6.

Delområde 6 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 121.9469m 121.9173m 121.8997m 121.8776m 121.8638m 121.9437996m Standardavvikelse 0.078957m 0.066527m 0.049213m 0.038707m 0.025883m

Korrelation riktiga värden 0.999589 0.999282 0.999382 0.999511 0.999591

Tabell 13. Tabell med data från delområde 7.

Delområde 7 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 98.84188m 98.83369m 98.83768m 98.83749m 98.82319m 98.83821132m Standardavvikelse 0.058539m 0.046279m 0.036055m 0.030484m 0.021533m

Korrelation riktiga värden 0.996647 0.996936 0.99724 0.997206 0.99741

Tabell 14. Tabell med data från delområde 8.

Delområde 8 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 101.1026m 101.1032m 101.1072m 101.0952m 101.0832m 101.1067089m Standardavvikelse 0.052302m 0.045149m 0.033455m 0.028679m 0.020408m

Korrelation riktiga värden 0.995656 0.994713 0.9964 0.996346 0.996986

Tabell 15. Tabell med data från delområde 9.

Delområde 9 5% 10% 20% 30% 50% Riktiga punkter

Genomsnitt-höjd 140.3809m 140.3337m 140.3153m 140.2976m 140.2449m 140.3810792m Standardavvikelse 0.15745m 0.116421m 0.081265m 0.067956m 0.051965m

Korrelation riktiga värden 0.999012 0.99905 0.99928 0.999231 0.999142

Bilaga 2. TIN

Figur 16. TIN från 10% av ursprungspunkterna.

Figur 17. TIN från 20% av ursprungspunkterna.

Figur 18. TIN från 30% av ursprungspunkterna.

Bilaga 3 Java kod

vectors = new ArrayList<Vector>();

}

public BufferedReader getBufferedReader() throws IOException {

FileReader fr;

BufferedReader textReader = null;

fr = new FileReader(path);

textReader = new BufferedReader(fr);

return textReader;

}

public void addVectors(BufferedReader br) throws NumberFormatException,

IOException {

String line = "";

while ((line = br.readLine()) != null) {

String[] d = line.split(" ");

Vector p = new Vector(Double.parseDouble(d[0]), Double.parseDouble(d[1]),

package barycentric;

public class VectorCalculator {

public Vector cross(Vector v1, Vector v2) {

Vector result = new Vector();

result.x = v1.y * v2.z - v1.z * v2.y;

result.y = v1.z * v2.x - v1.x * v2.z;

result.z = v1.x * v2.y - v1.y * v2.x;

return result;

}

public Vector subtract(Vector v1, Vector v2) {

Vector temp = new Vector();

temp.x = v1.x - v2.x;

temp.y = v1.y - v2.y;

temp.z = v1.z - v2.z;

return temp;

}

public double dot(Vector v1, Vector v2) {

double dotvalue = (v1.x * v2.x) + (v1.y * v2.y) + (v1.z * v2.z);

return dotvalue;

}

public boolean barycentric(Vector p1, Vector p2, Vector p3, Vector p)

{

Vector u = subtract(p2, p1);

Vector v = subtract(p3, p1);

Vector n = cross(u, v);

Vector w = subtract(p, p1);

double n2 = dot(n, n);

double gamma = dot(cross(u, w), n) / n2;

double beta = dot(cross(w, v), n) / n2;

double alpha = 1 - gamma - beta;

return (0 <= alpha && alpha <= 1) && (0 <= beta && beta <=

1)

&& (0 <= gamma && gamma <= 1);

}

public double getZ(Vector a, Vector b, Vector c, Vector p) {

Vector vector1 = subtract(b, a);

Vector vector2 = subtract(c, a);

Vector n = cross(vector1, vector2);

double d = n.x * c.x + n.y * c.y + n.z * c.z;

return (d - (n.x * p.x) - (n.y * p.y)) / n.z;

} }

package barycentric;

public Vector(double x, double y, double z) {

public static void main(String[] args) throws IOException {

PointReader pr = new PointReader(

"C:\\Users\\James\\Documents\\Examensarbete\\Hodalen uppdelat 20 procent\\9 av 9\\hodalen9av9.txt");

pr.addVectors(pr.getBufferedReader());

List<Vector> points = pr.getVectors();

FileWriter file = new FileWriter(

"C:\\Users\\James\\Documents\\Examensarbete\\Hodalen uppdelat 20 procent\\9 av 9\\interpolatedValues.txt");

String line = "";

VectorCalculator vc = new VectorCalculator();

FileReader fr;

BufferedReader textReader = null;

fr = new FileReader(

"C:\\Users\\James\\Documents\\Examensarbete\\Hodalen uppdelat 20 procent\\9 av 9\\hodalen9av9tri.txt");

textReader = new BufferedReader(fr);

while ((line = textReader.readLine()) != null) {

String[] temp = line.split(" ");

if (temp.length > 1) {

Vector a = new Vector(Double.parseDouble(temp[0]), Double.parseDouble(temp[1]),

Double.parseDouble(temp[2]));

line = textReader.readLine();

temp = line.split(" ");

Vector b = new Vector(Double.parseDouble(temp[0]), Double.parseDouble(temp[1]),

Double.parseDouble(temp[2]));

line = textReader.readLine();

temp = line.split(" ");

Vector c = new Vector(Double.parseDouble(temp[0]), Double.parseDouble(temp[1]),

Double.parseDouble(temp[2]));

for (int i = 0; i < points.size(); i++) {

if (vc.barycentric(a, b, c, points.get(i))) {

double pt = points.get(i).z;

Vector t = new Vector(points.get(i).x, points.get(i).y,

vc.getZ(a, b, c, points.get(i)));

if (t.z < pt - 20 || t.z > pt + 20) {

} else {

file.write("" + points.get(i).x + " "

+ points.get(i).y + " " + t.z);

Related documents