ThinkGeo.com    |     Documentation    |     Premium Support

Limit isolines to a shape

In my application I have users select the locations to use as values for the isolines by drawing a shape (rectangle, polygon) on a map.


All locations encompased inside the shape are used. It works reasonable well, until user zooms out.


The isolines are redrawn way out of the original shape. See picture. That is quite misleading as there are no values in that area.


Is there a way to limit the drawing to just the shape selected originally?




Is there a way to do it? 
 thanks

Jakub, 
  
 I believe the key is the grid area.  If you limit the grid area to the rectangle then the isolines should not draw outside of area it has grid data for. 
  
 David

Jakub,


To be more precise it would be where you setup the grid cell metric.  In this method you can setup the bounding box, the current extent in the sample, to limit the are the lines will draw in.  Of course we will still use all of the data points you pass in to do the cell value calculation, we just use the bounding box to limit the lines being drawn.  Just use an extent different than the current drawing extent in the method below and it should accomplish your goal.


 




   private void CreateGridCellMatrix()
        {
            //Get the current extent since we use that to gerenate the grid.  Of course this is just for
            //the demo and in the real world you can use any extent you like
            RectangleShape currentDrawingExtent = ExtentHelper.GetDrawingExtent(Map1.CurrentExtent, (float)Map1.ActualWidth, (float)Map1.ActualHeight);

            //Calculate the cell size based on how many rows and columns you specified
            double cellSize = Math.Min(currentDrawingExtent.Width / double.Parse(txtGridIsoLineCellColumnCount.Text), currentDrawingExtent.Height / Int32.Parse(txtGridIsoLineCellRowCount.Text));

            //Greate the grid definition based on the extent, cell size etc.
            GridDefinition gridDefinition = new GridDefinition(currentDrawingExtent, cellSize, -9999, wellDepthPointData);

            //Generate the grid based on Inverse Distance Weighted interpolation model.  You can define your own model if needed.
            gridCellMatrix = GridFeatureSource.GenerateGridMatrix(gridDefinition, new InverseDistanceWeightedGridInterpolationModel(2, double.MaxValue));
        }
 


 



Jakub, 
  
   To clarify the code above was copied from the DisplayIsoLineWPF sample. 
  
 David

That is the code I am using, but it does not limit drawing of the contours to the original shape.  
  
 The grid seems to extrapolate way out of the proportions. In the image above my bounding shape enclosed just the markers on the peninsula. The 5,000 isoline should not go this far out to the west. 
  
 What can I do to fix it? It is misleading. 
  


Jakub, 
  
 To make the problem clean, I want to know that did you use the DisplayIsoLineWPF sample or just 4 line of codes which mentioned by David, because I tested DisplayIsoLineWPF sample and try to recreate your issue but no luck. If you are not using DisplayIsoLineWPF sample, could you provide a simple sample to let us recreate the problem in local machine and that will be very helpful to solve the problem. 
  
 Thanks, 
 James 
  


James sorry for delayed answer. I was workingon a different project. This issue still lingers. I used the four lines above as I am not using the WPF I am using Web Edition. Did you test it in the web edition? 


Hello Jakub, 
  
 We have fixed several IsoLine bugs in 6.0 release, what’s the product version you are using now, could you please upgrade to 6.0 and have another try? 
  
 Regards, 
  
 Gary

I am unable to run 6.0 Spatial query. See my other question. 


Hello Jakub, 
  
 We have answered in your other post, please have a look at that. 
  
 Regards, 
  
 Gary