I am not sure that theIsolines feature is working correctly.
I have loaded some of my own data and as you see on the attached image. The isolines are pretty dense in the top left corner, with number of lines between 50 and 100 values. But there are none in the lower right where there shold have been some between the 58 and 102 points, south of the 6.145 isoline.
Isoline level count, rows and columns are all set to 180.
Don A contour line (also isoline or isarithm) is a curve along which the elevation (concentration in my case) has a constant value. That means that if I have a value of 50 and 100 there should be an isoline between them (based on predefined parameters)
You are correct the isolines between around 108000 are very dense. That part seems to work fine. But the gridding function also calculated an isoline between values 50 and 100 (on 74.616 value) in the NW corner (near the 108000 value). Based on that there also should be isoline between 58 and 102 in the lower center of the image above since value 74.616 falls between 58 and 102. That is why I am questioning the isolines functionality.
Also: Is there a way to prdefine the isoline values so they are round numbers?
It displays value 18.686 but it is drawn between points with values 48.6 and 52.5 on one side and 45 and 97.7 and 26800 on the other side. That does not make sense. There are some very high values inside the isoline as well.
In order to see why the lines were formed that way they were we first have to look at the grid that was generated from your point data. Can you send us the point data and the code of how you setup the isolines? Another option would be to create the grid from your points and send is the grid file and the parameters you used for the IsoLine class. We are going to need something besides the screenshots.
On another note you can specify the isoline breaks yourself. There is a static method I believe that will look at your data and suggest breaks and then you can go in there an round them all and then set those breaks for the IsoLineLayer itself.
Attached is source data in CSV and the GRID file generated. See the ZIP. The parameters are 150 for Isoline level count, Row count and Column count.
I was not able to replicate previous image so the data is related to this set of isolines. As you can see there is a still issue there is a 7.425 isoline between points 236 and 52.6 as an example
After your looking at the csv file you provided I think I know what the issue is. It looks like most of your data is around the value of 50 with a a few records sprinkled in with very high values like 1100000. Because there is such a big range in your data values the GetIsoLineLevels function is returning a result I don’t think you want. The GetIsoLineLevels function will try to return a good set of breaks to use but in your case I don’t think you will want to use this method and instead setup your breaks manually.
Based on the data you provided I would comment out the line below anywhere it exists in your project and instead setup the isoLineLevels how you want them manually.
On all of the types of IsoLineLayers there is a IsoLineLevels property that is a collection of doubles. Clear this and add your breaks in from low to high. Make sure you comment out any code that sets this somewhere else. There are many ways to analyze the point data to pick breaks and we just chose one. In many cases its best to show your user a histogram of the data and then they can choose the breaks to best suite their intended output. What I am trying to say is that it is hard to have a one size fits all system. :-) Let us know how we can help, Isolines are a science in and of themselves.
I already have algorithm to determine the break I was asking for syntax on how to load it into IsoLineLevels I know about isolines being science, that is why I was so excited about you incorporating it into the Map Suite. It puts it way ahead of competition. Look into Kriging as a method for generating isolines. That is generally accepted process for spatial data. Thanks
Excellent, the image looks great! We had considered Kriging as one of the interpolation algorithms at the start but decided to do Inverse Distance Weighted first. I suppose Kriging could also be used in two dimensions to fit a curve to a histogram. :-) If you would like the Kriging for the interpolation let us know and we can see if we can add that.
Yes, I would like to have a kriging as an option as it is a de-facto standard in environmental sciences. My customers would appreciate the choice of different algorithms, especially one they are familiar with. It will make MapSuite that much stronger product.
Yes, I would like to have a kriging as an option as it is a de-facto standard in environmental sciences. My customers would appreciate the choice of different algorithms, especially one they are familiar with. It will make MapSuite that much stronger product.