User Tools

Site Tools


thinkgeo.mapsuite.core.inmemoryfeaturesource

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
thinkgeo.mapsuite.core.inmemoryfeaturesource [2015/09/21 07:30]
admin
thinkgeo.mapsuite.core.inmemoryfeaturesource [2017/03/16 21:59] (current)
Line 1: Line 1:
 ====== ThinkGeo.MapSuite.Core.InMemoryFeatureSource ====== ====== ThinkGeo.MapSuite.Core.InMemoryFeatureSource ======
 +
 +{{section>​upgrade_map_suite_to_10.0}}
 +
 This class represents a FeatureSource backed by memory, more specifically an in memory collection InternalFeatures. This class represents a FeatureSource backed by memory, more specifically an in memory collection InternalFeatures.
 ===== Inheritance Hierarchy ===== ===== Inheritance Hierarchy =====
Line 9: Line 12:
 ** {{wiki:​PublicMethod.gif|}} InMemoryFeatureSource(IEnumerable<​FeatureSourceColumn>​) ** ** {{wiki:​PublicMethod.gif|}} InMemoryFeatureSource(IEnumerable<​FeatureSourceColumn>​) **
  
-Create a new instance of the InMemoryFeatureSource class.+  * //Create a new instance of the InMemoryFeatureSource class.//
 == Remarks == == Remarks ==
-By calling this API to create a new instance of InMemoryFeatureSource,​ there will have no features in the created featureSource. After this, you can added the feature to the instance , and another even better opion is call another overloads constructor by passing the features too.+  * //By calling this API to create a new instance of InMemoryFeatureSource,​ there will have no features in the created featureSource. After this, you can added the feature to the instance , and another even better opion is call another overloads constructor by passing the features too.//
 == Parameters == == Parameters ==
   * //​featureSourceColumns//​   * //​featureSourceColumns//​
Line 20: Line 23:
 ** {{wiki:​PublicMethod.gif|}} InMemoryFeatureSource(IEnumerable<​FeatureSourceColumn>,​IEnumerable<​Feature>​) ** ** {{wiki:​PublicMethod.gif|}} InMemoryFeatureSource(IEnumerable<​FeatureSourceColumn>,​IEnumerable<​Feature>​) **
  
-Create a new instance of the InMemoryFeatureSource class by passing a featureSourceColumns and an initial features.+  * //Create a new instance of the InMemoryFeatureSource class by passing a featureSourceColumns and an initial features.//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
 == Parameters == == Parameters ==
   * //​featureSourceColumns//​   * //​featureSourceColumns//​
Line 35: Line 38:
 ** {{wiki:​PublicMethod.gif|}} InMemoryFeatureSource(IEnumerable<​FeatureSourceColumn>,​IEnumerable<​BaseShape>​) ** ** {{wiki:​PublicMethod.gif|}} InMemoryFeatureSource(IEnumerable<​FeatureSourceColumn>,​IEnumerable<​BaseShape>​) **
  
-Create a new instance of the InMemoryFeatureSource class by passing a featureSourceColumns and an initial shapes to construct the shapes.+  * //Create a new instance of the InMemoryFeatureSource class by passing a featureSourceColumns and an initial shapes to construct the shapes.//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
 == Parameters == == Parameters ==
   * //​featureSourceColumns//​   * //​featureSourceColumns//​
Line 52: Line 55:
 ** {{wiki:​PublicMethod.gif|}} BuildIndex() ** ** {{wiki:​PublicMethod.gif|}} BuildIndex() **
  
-This method build a spatial index for a passed group of featurs which increases access speed.+  * //This method build a spatial index for a passed group of featurs which increases access speed.//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 64: Line 67:
 ** {{wiki:​PublicMethod.gif|}} Clear() ** ** {{wiki:​PublicMethod.gif|}} Clear() **
  
-This method will clear all the features included in the feature source.+  * //This method will clear all the features included in the feature source.//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 73: Line 76:
  
 == Parameters == == Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetBoundingBox() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} CloneDeep() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​[[ThinkGeo.MapSuite.Core.FeatureSource|FeatureSource]]
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} Open() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} Close() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} BeginTransaction() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} AddFeature(Feature) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:String
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //feature//
 +    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} AddFeature(BaseShape) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:String
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //shape//
 +    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} AddFeature(BaseShape,​IDictionary<​String,​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:String
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //shape//
 +    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
 +    * Description:​N/​A
 +
 +  * //​columnValues//​
 +    * Type:​IDictionary<​String,​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} DeleteFeature(String) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //id//
 +    * Type:String
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} UpdateFeature(Feature) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //feature//
 +    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} UpdateFeature(BaseShape) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //shape//
 +    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} UpdateFeature(BaseShape,​IDictionary<​String,​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //shape//
 +    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
 +    * Description:​N/​A
 +
 +  * //​columnValues//​
 +    * Type:​IDictionary<​String,​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} RollbackTransaction() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} CommitTransaction() **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​[[ThinkGeo.MapSuite.Core.TransactionResult|TransactionResult]]
 +  * Description:​N/​A
 +
 +== Parameters ==
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} AddColumn(FeatureSourceColumn) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​featureSourceColumn//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} DeleteColumn(String) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​columnName//​
 +    * Type:String
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} UpdateColumn(String,​FeatureSourceColumn) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​columnName//​
 +    * Type:String
 +    * Description:​N/​A
 +
 +  * //​newFeatureSourceColumn//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetAllFeatures(IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetAllFeatures(ReturningColumnsType) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​returningColumnNamesType//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetFeaturesOutsideBoundingBox(RectangleShape,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​boundingBox//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetFeaturesOutsideBoundingBox(RectangleShape,​ReturningColumnsType) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​boundingBox//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
 +    * Description:​N/​A
 +
 +  * //​returningColumnNamesType//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetFeaturesInsideBoundingBox(RectangleShape,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​boundingBox//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetFeaturesInsideBoundingBox(RectangleShape,​IEnumerable<​String>,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​boundingBox//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesInsideBoundingBox(RectangleShape,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesInsideBoundingBox(RectangleShape,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 91: Line 466:
   * //​returningColumnNamesType//​   * //​returningColumnNamesType//​
     * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]     * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetFeaturesForDrawing(RectangleShape,​Double,​Double,​IEnumerable<​String>,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​boundingBox//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
 +    * Description:​N/​A
 +
 +  * //​screenWidth//​
 +    * Type:Double
 +    * Description:​N/​A
 +
 +  * //​screenHeight//​
 +    * Type:Double
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} ApplyFilters(IEnumerable<​Feature>,​IEnumerable<​String>,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​features//​
 +    * Type:​IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
 +    * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
Line 96: Line 527:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesForDrawing(RectangleShape,​Double,​Double,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesForDrawing(RectangleShape,​Double,​Double,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 124: Line 555:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesForDrawing(RectangleShape,​Double,​Double,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesForDrawing(RectangleShape,​Double,​Double,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 152: Line 583:
 ** {{wiki:​PublicMethod.gif|}} SpatialQuery(BaseShape,​QueryType,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} SpatialQuery(BaseShape,​QueryType,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 170: Line 601:
  
   * //​returningColumnNames//​   * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} SpatialQuery(BaseShape,​QueryType,​IEnumerable<​String>,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //​targetShape//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
 +    * Description:​N/​A
 +
 +  * //​queryType//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.QueryType|QueryType]]
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
     * Type:​IEnumerable<​String>​     * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
Line 176: Line 635:
 ** {{wiki:​PublicMethod.gif|}} SpatialQuery(BaseShape,​QueryType,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} SpatialQuery(BaseShape,​QueryType,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 200: Line 659:
 ** {{wiki:​PublicMethod.gif|}} SpatialQuery(Feature,​QueryType,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} SpatialQuery(Feature,​QueryType,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 224: Line 683:
 ** {{wiki:​PublicMethod.gif|}} SpatialQuery(Feature,​QueryType,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} SpatialQuery(Feature,​QueryType,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 248: Line 707:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(BaseShape,​GeographyUnit,​Int32,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(BaseShape,​GeographyUnit,​Int32,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 276: Line 735:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(BaseShape,​GeographyUnit,​Int32,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(BaseShape,​GeographyUnit,​Int32,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 304: Line 763:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(Feature,​GeographyUnit,​Int32,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(Feature,​GeographyUnit,​Int32,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 332: Line 791:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(Feature,​GeographyUnit,​Int32,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(Feature,​GeographyUnit,​Int32,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 360: Line 819:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(BaseShape,​GeographyUnit,​Int32,​IEnumerable<​String>,​Double,​DistanceUnit) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(BaseShape,​GeographyUnit,​Int32,​IEnumerable<​String>,​Double,​DistanceUnit) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 396: Line 855:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(Feature,​GeographyUnit,​Int32,​IEnumerable<​String>,​Double,​DistanceUnit) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesNearestTo(Feature,​GeographyUnit,​Int32,​IEnumerable<​String>,​Double,​DistanceUnit) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 432: Line 891:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(BaseShape,​GeographyUnit,​DistanceUnit,​Double,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(BaseShape,​GeographyUnit,​DistanceUnit,​Double,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 464: Line 923:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(BaseShape,​GeographyUnit,​DistanceUnit,​Double,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(BaseShape,​GeographyUnit,​DistanceUnit,​Double,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 496: Line 955:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(Feature,​GeographyUnit,​DistanceUnit,​Double,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(Feature,​GeographyUnit,​DistanceUnit,​Double,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 528: Line 987:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(Feature,​GeographyUnit,​DistanceUnit,​Double,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesWithinDistanceOf(Feature,​GeographyUnit,​DistanceUnit,​Double,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 560: Line 1019:
 ** {{wiki:​PublicMethod.gif|}} GetFeatureById(String,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeatureById(String,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 580: Line 1039:
 ** {{wiki:​PublicMethod.gif|}} GetFeatureById(String,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeatureById(String,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 595: Line 1054:
   * //​returningColumnNamesType//​   * //​returningColumnNamesType//​
     * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]     * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]
 +    * Description:​N/​A
 +
 +<div newline></​div>​
 +** {{wiki:​PublicMethod.gif|}} GetFeaturesByIds(IEnumerable<​String>,​IEnumerable<​String>,​IEnumerable<​String>​) **
 +
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +  * Description:​N/​A
 +
 +== Parameters ==
 +  * //ids//
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
 +    * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
Line 600: Line 1083:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesByIds(IEnumerable<​String>,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesByIds(IEnumerable<​String>,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 620: Line 1103:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesByIds(IEnumerable<​String>,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesByIds(IEnumerable<​String>,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 640: Line 1123:
 ** {{wiki:​PublicMethod.gif|}} GetBoundingBoxById(String) ** ** {{wiki:​PublicMethod.gif|}} GetBoundingBoxById(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 656: Line 1139:
 ** {{wiki:​PublicMethod.gif|}} GetBoundingBoxByIds(IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetBoundingBoxByIds(IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 672: Line 1155:
 ** {{wiki:​PublicMethod.gif|}} GetBoundingBoxesByIds(IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetBoundingBoxesByIds(IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 688: Line 1171:
 ** {{wiki:​PublicMethod.gif|}} GetFirstFeaturesWellKnownType() ** ** {{wiki:​PublicMethod.gif|}} GetFirstFeaturesWellKnownType() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 700: Line 1183:
 ** {{wiki:​PublicMethod.gif|}} CanGetBoundingBoxQuickly() ** ** {{wiki:​PublicMethod.gif|}} CanGetBoundingBoxQuickly() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 712: Line 1195:
 ** {{wiki:​PublicMethod.gif|}} CanGetCountQuickly() ** ** {{wiki:​PublicMethod.gif|}} CanGetCountQuickly() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 724: Line 1207:
 ** {{wiki:​PublicMethod.gif|}} GetDistinctColumnValues(String) ** ** {{wiki:​PublicMethod.gif|}} GetDistinctColumnValues(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 740: Line 1223:
 ** {{wiki:​PublicMethod.gif|}} GetAllFeatures(ReturningColumnsType,​Int32) ** ** {{wiki:​PublicMethod.gif|}} GetAllFeatures(ReturningColumnsType,​Int32) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 760: Line 1243:
 ** {{wiki:​PublicMethod.gif|}} GetAllFeatures(ReturningColumnsType,​Int32,​Int32) ** ** {{wiki:​PublicMethod.gif|}} GetAllFeatures(ReturningColumnsType,​Int32,​Int32) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 784: Line 1267:
 ** {{wiki:​PublicMethod.gif|}} GetAllFeatures(IEnumerable<​String>,​Int32,​Int32) ** ** {{wiki:​PublicMethod.gif|}} GetAllFeatures(IEnumerable<​String>,​Int32,​Int32) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 808: Line 1291:
 ** {{wiki:​PublicMethod.gif|}} ExecuteNonQuery(String) ** ** {{wiki:​PublicMethod.gif|}} ExecuteNonQuery(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 824: Line 1307:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesByColumnValue(String,​String,​ReturningColumnsType) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesByColumnValue(String,​String,​ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 848: Line 1331:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesByColumnValue(String,​String,​IEnumerable<​String>​) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesByColumnValue(String,​String,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 872: Line 1355:
 ** {{wiki:​PublicMethod.gif|}} GetFeaturesByColumnValue(String,​String) ** ** {{wiki:​PublicMethod.gif|}} GetFeaturesByColumnValue(String,​String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 892: Line 1375:
 ** {{wiki:​PublicMethod.gif|}} ExecuteScalar(String) ** ** {{wiki:​PublicMethod.gif|}} ExecuteScalar(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 908: Line 1391:
 ** {{wiki:​PublicMethod.gif|}} ExecuteQuery(String) ** ** {{wiki:​PublicMethod.gif|}} ExecuteQuery(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Portable.GeoDataTable|GeoDataTable]]+  * Type:DataTable
   * Description:​N/​A   * Description:​N/​A
  
Line 924: Line 1407:
 ** {{wiki:​PublicMethod.gif|}} GetColumns() ** ** {{wiki:​PublicMethod.gif|}} GetColumns() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 936: Line 1419:
 ** {{wiki:​PublicMethod.gif|}} RefreshColumns() ** ** {{wiki:​PublicMethod.gif|}} RefreshColumns() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 948: Line 1431:
 ** {{wiki:​PublicMethod.gif|}} GetCount() ** ** {{wiki:​PublicMethod.gif|}} GetCount() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 958: Line 1441:
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​PublicMethod.gif|}} ​GetBoundingBox() **+** {{wiki:​PublicMethod.gif|}} ​ToString() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]+  * Type:String
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​PublicMethod.gif|}} ​CloneDeep() **+** {{wiki:​PublicMethod.gif|}} ​Equals(Object) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Core.FeatureSource|FeatureSource]]+  * Type:Boolean
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 +  * //obj//
 +    * Type:Object
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​PublicMethod.gif|}} ​Open() **+** {{wiki:​PublicMethod.gif|}} ​GetHashCode() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Int32
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​PublicMethod.gif|}} ​Close() **+** {{wiki:​PublicMethod.gif|}} ​GetType() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Type
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​BeginTransaction() **+==== Protected Methods ==== 
 +** {{wiki:ProtectedMethod.gif|}} ​GetCountCore() **
  
-N/A+  * //This method returns the count of the number of records in this FeatureSource./​/
 == Remarks == == Remarks ==
-N/A+  * //This protected virtual method is called from the concreate public method GetCount. It does not take into account any transaction activity as this is the responsibility of the concreate public method GetCount. In this way as a developer if you choose to override this method you do not have to consider transaction at all. The default implementation of GetCountCore uses the GetAllRecordsCore method to calculate how many records there are in the FeatureSource. We strongly recommend that you provide your own implementation for this method that will be more efficient If you do not override this method the means it gets the count is by calling the GetAllFeatureCore method and counting each feature. This is a very inefficient way to get the count in most data sources. It is highly recommended that you override this method and replace it with a highly optimized version. For example in a ShapeFile the record count is in the main header of the file. Similarly if you are using Oracle Spatial you can execute a simple query to get the count of all of the record without returning them. In these ways you can greatly improve the performance of this method.//
  
 == Return Value == == Return Value ==
-  * Type:Void +  * Type:Int32 
-  * Description:​N/A+  * Description:​This method returns the count of the number of records in this FeatureSource.
  
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​AddFeature(Feature) **+** {{wiki:ProtectedMethod.gif|}} ​CommitTransactionCore(TransactionBuffer) **
  
-N/A+  * //This method will commit the existing transaction to its underlying source of data.//
 == Remarks == == Remarks ==
-N/A+  * //This method will commit the existing transaction to its underlying source of data. It will pass back the results of how the commit went to include any error received. If you are implementing your own FeatureSource then this is one of the crucial methods you must create. It should be fairly straight forward that you will loop through the transaction buffer and add, edit or delete the InternalFeatures in your underlying data source. Remember to build and pass back the TransactionResult class so that users of your FeatureSource can respond to failures you may encounter committing the InternalFeatures. We will handle the end of the transaction and also the cleanup of the transaction buffer. Your task will be to commit the records and produce a TransactionResult return.The Transaction SystemThe transaction system of a FeatureSource sits on top of the inherited implementation of any specific source such as Oracle Spatial or Shape files. In this way it functions the same way for every FeatureSource. You start by calling the BeginTransaction. This allocates a collection of in memory change buffers that are used to store changes until you commit the transaction. So for example when you call the Add, Delete or Update method the changes to the feature are stored in memory only. If for any reason you choose to abandon the transaction you can call RollbackTransaction at any time and the in memory buffer will be deleted and the changes will be lost. When you are ready to commit the transaction you call the CommitTransaction and the collections of changes are then passed to the CommitTransactionCore method and the implementer of the specific FeatureSource is responsible for integrating your changes into the underlying FeatureSource. By default the IsLiveTransaction property is set to false which means that until you commit the changes the FeatureSource API will not reflect any changes that are in the temporary editing buffer.In the case where the IsLiveTransaction is set to true then things function slightly differently. The live transaction concept means that all of the modification you perform during a transaction are live from the standpoint of the querying methods on the object.To setup an example imagine that you have a FeatureSource that has 10 records in it. Next you begin a transaction and then call GetAllFeatures,​ the result would be 10 records. After that you call a delete on one of the records and call the GetAllFeatures again, this time you only get nine records. You receive nine records even though the transaction has not yet been committed. In the same sense you could have added a new record or modified an existing one and those changes are considered live though not committed.In the case where you modify records such as expanding the size of a polygon those changes as well are reflected. So for example you expand a polygon by doubling its size and then do a spatial query that would not normally return the smaller record but would return the larger records, in this case the larger record is returned. You can set this property to be false as well in which case all of the spatial related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In this case only after committing the transaction would the FeatureSource reflect the changes.//
  
 == Return Value == == Return Value ==
-  * Type:String +  * Type:[[ThinkGeo.MapSuite.Core.TransactionResult|TransactionResult]] 
-  * Description:​N/A+  * Description:​The return decimalDegreesValue of this method is a TransactionResult class which gives you the status of the transaction you just committed. It includes how many of the updates, adds, and deletes were successful and any error that were encountered during the committing of the transaction.
  
 == Parameters == == Parameters ==
-  * //feature// +  * //transactions// 
-    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]] +    * Type:​[[ThinkGeo.MapSuite.Core.TransactionBuffer|TransactionBuffer]] 
-    * Description:​N/A+    * Description:​This parameter encapsulates all of the adds, edits and deleted that make up the transaction. You will use this data to write the changes to your underlying data source.
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​AddFeature(BaseShape) **+** {{wiki:ProtectedMethod.gif|}} ​GetAllFeaturesCore(IEnumerable<​String>​) **
  
-N/A+  * //This method returns all of the InternalFeatures in the FeatureSource./​/
 == Remarks == == Remarks ==
-N/A+  * //This method returns all of the InternalFeatures in the FeatureSource. You will not need to consider anything about pending transactions as this will be handled in the non Core version of the method. The main purpose of this method is to be the anchor of all of our default virtual implementations within this class. We wanted as the framework developers to provide you the user with as much default virtual implementation as possible. To do this we needed a way to get access to all of the features. For example, we want to create a default implementation for finding all of the InternalFeatures in a bounding box. Because this is an abstract class we do not know the specifics of the underlying data or how its spatial indexes work. What we do know is that if we get all the records then we can brute force the answer. In this way if you inherited form this class and only implemented this one method we can provide default implementations for virtually every other API. While this is nice for you the developer if you decide to create your own FeatureSource it comes with a price. The price is that it is very inefficient. In the case we just discussed about finding all of the InternalFeatures in a bounding box we would not want to look at every record to fulfil this method. Instead we would want to override the GetFeaturesInsideBoundingBoxCore and implement specific code that would be fast. For example in Oracle Spatial there is a specific SQL statement to do this operation very quickly. The same holds true with other specific FeatureSource examples. Most default implementations in the FeatureSource call the GetFeaturesInsideBoundingBoxCore which by default calls the GetAllFeaturesCore. It is our advice that if you create your own FeatureSource that you ALWAYS override the GetFeatureInsideBoundingBox. It will ensure that nearly every other API will operate efficiently. Please see the specific API to determine what method it uses.//
  
 == Return Value == == Return Value ==
-  * Type:String+  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ 
 +  * Description:​The return decimalDegreesValue is a collection of all of the InternalFeatures in the FeatureSource. 
 + 
 +== Parameters == 
 +  * //​returningColumnNames//​ 
 +    * Type:​IEnumerable<​String
 +    * Description:​This parameter allows you to select the field names of the column data you wish to return with each Feature. 
 + 
 +<div newline></​div>​ 
 +** {{wiki:​ProtectedMethod.gif|}} GetAllFeaturesCore(IEnumerable<​String>,​Int32,​Int32) ** 
 + 
 +  * //N/A// 
 +== Remarks == 
 +  * //N/A// 
 + 
 +== Return Value == 
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //shape// +  * //returningColumnNames// 
-    * Type:[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]+    * Type:IEnumerable<​String>​ 
 +    * Description:​N/​A 
 + 
 +  * //​startIndex//​ 
 +    * Type:​Int32 
 +    * Description:​N/​A 
 + 
 +  * //​takeCount//​ 
 +    * Type:Int32
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​AddFeature(BaseShape,IDictionary<String,String>) **+** {{wiki:ProtectedMethod.gif|}} ​GetFeaturesInsideBoundingBoxCore(RectangleShape,IEnumerable<​String>​) **
  
-N/A+  * //This method returns all of the InternalFeatures of this FeatureSource that are inside of the specified bounding box.//
 == Remarks == == Remarks ==
-N/A+  * //This method returns all of the InternalFeatures of this FeatureSource that are inside of the specified bounding box. If you are overriding this method you will not need to consider anything about transactions,​ as this is handled by the concrete version of this method. The default implementation of GetFeaturesInsideBoundingBoxCore uses the GetAllRecordsCore method to determine which InternalFeatures are inside of the bounding box. We strongly recommend that you provide your own implementation for this method that will be more efficient. That is especially important for this method, as many other default virtual methods use this for their calculations. When you override this method, we highly recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible.//
  
 == Return Value == == Return Value ==
-  * Type:String+  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ 
 +  * Description:​The returned decimalDegreesValue is a collection of all of the InternalFeatures that are inside of the bounding box. 
 + 
 +== Parameters == 
 +  * //​boundingBox//​ 
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]] 
 +    * Description:​This parameter represents the bounding box that you wish to find InternalFeatures inside of. 
 + 
 +  * //​returningColumnNames//​ 
 +    * Type:​IEnumerable<​String
 +    * Description:​This parameter allows you to select the field names of the column data that you wish to return with each Feature. 
 + 
 +<div newline></​div>​ 
 +** {{wiki:​ProtectedMethod.gif|}} GetFeaturesInsideBoundingBoxByReference(RectangleShape,​IEnumerable<​String>​) ** 
 + 
 +  * //N/A// 
 +== Remarks == 
 +  * //N/A// 
 + 
 +== Return Value == 
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //shape// +  * //boundingBox// 
-    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]+    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
-  * //columnValues// +  * //returningColumnNames// 
-    * Type:IDictionary<String,String>+    * Type:IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​DeleteFeature(String) **+** {{wiki:ProtectedMethod.gif|}} ​GetFeaturesOutsideBoundingBoxCore(RectangleShape,​IEnumerable<​String>) **
  
-N/A+  * //This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box.//
 == Remarks == == Remarks ==
-N/A+  * //This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. If you are in a transaction and that transaction is live, this method will also take that into consideration. The default implementation of GetFeaturesOutsideBoundingBoxCore uses the GetAllRecordsCore method to determine which InternalFeatures are outside of the bounding box. We strongly recommend that you provide your own implementation for this method that will be more efficient.//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ 
 +  * Description:​This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. 
 + 
 +== Parameters == 
 +  * //​boundingBox//​ 
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]] 
 +    * Description:​This parameter represents the bounding box that you wish to find InternalFeatures outside of. 
 + 
 +  * //​returningColumnNames//​ 
 +    * Type:​IEnumerable<​String>​ 
 +    * Description:​This parameter allows you to select the field names of the column data you wish to return with each Feature. 
 + 
 +<div newline></​div>​ 
 +** {{wiki:​ProtectedMethod.gif|}} GetColumnsCore() ** 
 + 
 +  * //This method returns the columns available for the FeatureSource.//​ 
 +== Remarks == 
 +  * //When overriding you will be responsible for getting a list of all of the columns supported by the FeatureSource. In this way the FeatureSource will know what columns are available and will remove any extra columns when making calls to other core methods. For example if you have a FeatureSource that has three columns of information and the user calls a method and requests four columns of information,​ something they can do with custom fields, we will first compare what they are asking for to the results of the GetColumnsCore. In this way we can strip out custom columns before calling other Core methods which are only responsible for returning data in the FeatureSource. For more information on custom fields you can see the documentation on the OnCustomFieldsFetch.//​ 
 + 
 +== Return Value == 
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]>​ 
 +  * Description:​This method returns the columns available for the FeatureSource. 
 + 
 +== Parameters == 
 +<div newline></​div>​ 
 +** {{wiki:​ProtectedMethod.gif|}} ConvertToInternalProjection(BaseShape) ** 
 + 
 +  * //N/A// 
 +== Remarks == 
 +  * //N/A// 
 + 
 +== Return Value == 
 +  * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //id// +  * //baseShape// 
-    * Type:String+    * Type:[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​UpdateFeature(Feature) **+** {{wiki:ProtectedMethod.gif|}} ​ConvertToExternalProjection(IEnumerable<​Feature>) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //feature// +  * //features// 
-    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]+    * Type:IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​UpdateFeature(BaseShape) **+** {{wiki:ProtectedMethod.gif|}} ​ConvertToInternalProjection(IEnumerable<​Feature>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //shape// +  * //features// 
-    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]+    * Type:IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​UpdateFeature(BaseShape,​IDictionary<​String,​String>​) **+** {{wiki:ProtectedMethod.gif|}} ​ConvertToExternalProjection(Feature) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:[[ThinkGeo.MapSuite.Core.Feature|Feature]]
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //shape// +  * //feature// 
-    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]] +    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]
-    * Description:​N/​A +
- +
-  * //​columnValues//​ +
-    * Type:​IDictionary<​String,​String>​+
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​RollbackTransaction() **+** {{wiki:ProtectedMethod.gif|}} ​ConvertToInternalProjection(Feature) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:[[ThinkGeo.MapSuite.Core.Feature|Feature]]
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 +  * //feature//
 +    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​CommitTransaction() **+** {{wiki:ProtectedMethod.gif|}} ​GetColumnNamesInsideFeatureSource(IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Core.TransactionResult|TransactionResult]]+  * Type:Collection<​String>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​AddColumn(FeatureSourceColumn) **+** {{wiki:ProtectedMethod.gif|}} ​GetColumnNamesOutsideFeatureSource(IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Collection<​String>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //featureSourceColumn// +  * //returningColumnNames// 
-    * Type:[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]+    * Type:IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​DeleteColumn(String) **+** {{wiki:ProtectedMethod.gif|}} ​GetReturningColumnNames(ReturningColumnsType) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Void+  * Type:Collection<​String>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //columnName// +  * //returningColumnNamesType// 
-    * Type:String+    * Type:[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​UpdateColumn(String,​FeatureSourceColumn) **+** {{wiki:ProtectedMethod.gif|}} ​RemoveEmptyAndExcludeFeatures(Collection<​Feature>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1205: Line 1773:
  
 == Parameters == == Parameters ==
-  * //columnName//​ +  * //sourceFeatures// 
-    * Type:​String +    * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>
-    * Description:​N/​A +
- +
-  * //​newFeatureSourceColumn// +
-    * Type:​[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]+
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetAllFeatures(IEnumerable<​String>​) **+** {{wiki:ProtectedMethod.gif|}} ​OnDrawingProgressChanged(DrawingProgressChangedEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​+  * Type:Void
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //returningColumnNames// +  * //e// 
-    * Type:IEnumerable<​String>​+    * Type:[[ThinkGeo.MapSuite.Core.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetAllFeatures(ReturningColumnsType) **+** {{wiki:ProtectedMethod.gif|}} ​GetColumnNamesOutsideFeatureSourceCall(IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>+  * Type:​Collection<​String>
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //returningColumnNamesType// +  * //returningColumnNames// 
-    * Type:[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]+    * Type:IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetFeaturesOutsideBoundingBox(RectangleShape,​IEnumerable<​String>​) **+** {{wiki:ProtectedMethod.gif|}} ​GetFeaturesByActionWithStyleFilters(IEnumerable<​String>​,​IEnumerable<​String>​,​ZoomLevel,​Func<​Collection<​Feature>>,​IEnumerable<​String>,​RectangleShape) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​+  * Type:Dictionary<​String,​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>>
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //boundingBox// +  * //styleFilters// 
-    * Type:[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]+    * Type:IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
   * //​returningColumnNames//​   * //​returningColumnNames//​
     * Type:​IEnumerable<​String>​     * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //​currentZoomLevel//​
 +    * Type:​[[ThinkGeo.MapSuite.Core.ZoomLevel|ZoomLevel]]
 +    * Description:​N/​A
 +
 +  * //func//
 +    * Type:​Func<​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>>​
 +    * Description:​N/​A
 +
 +  * //ids//
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //extent//
 +    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetFeaturesOutsideBoundingBox(RectangleShape,ReturningColumnsType) **+** {{wiki:ProtectedMethod.gif|}} ​ApplyLinkColumnValues(IEnumerable<​String>​,Func<​IEnumerable<​String>,​Collection<​Feature>>,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1277: Line 1857:
  
 == Parameters == == Parameters ==
-  * //boundingBox// +  * //returningColumnNames// 
-    * Type:[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]+    * Type:IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
-  * //returningColumnNamesType// +  * //getFeatures// 
-    * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]]+    * Type:Func<​IEnumerable<​String>,​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>> 
 +    * Description:​N/​A 
 + 
 +  * //​filters//​ 
 +    * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetFeaturesInsideBoundingBox(RectangleShape,​IEnumerable<​String>​) **+** {{wiki:ProtectedMethod.gif|}} ​ApplyLinkColumnValues(IEnumerable<​Feature>,​IEnumerable<​String>,​IEnumerable<​String>​,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1297: Line 1881:
  
 == Parameters == == Parameters ==
-  * //boundingBox// +  * //features// 
-    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]+    * Type:IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>
     * Description:​N/​A     * Description:​N/​A
  
   * //​returningColumnNames//​   * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //​linkingColumnNames//​
     * Type:​IEnumerable<​String>​     * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​ToString() **+** {{wiki:ProtectedMethod.gif|}} ​GetRequiredColumnNamesForLink(IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:String+  * Type:Collection<​String>
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​Equals(Object) **+** {{wiki:ProtectedMethod.gif|}} ​GetReturningColumnNamesForLink(IEnumerable<​String>,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Boolean+  * Type:Collection<​String>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //obj// +  * //returningColumnNames// 
-    * Type:Object+    * Type:IEnumerable<​String>​ 
 +    * Description:​N/​A 
 + 
 +  * //​filters//​ 
 +    * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetHashCode() **+** {{wiki:ProtectedMethod.gif|}} ​GetFlatLinkSources() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Int32+  * Type:IEnumerable<​[[ThinkGeo.MapSuite.Core.LinkSource|LinkSource]]>​
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:PublicMethod.gif|}} ​GetType() **+** {{wiki:ProtectedMethod.gif|}} ​CheckIsLinkColumn(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Type+  * Type:Boolean
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
 +  * //​columnName//​
 +    * Type:String
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-==== Protected Methods ==== +** {{wiki:​ProtectedMethod.gif|}} ​CheckHasLinkColumns(IEnumerable<​String>,​IEnumerable<​String>​) **
-** {{wiki:​ProtectedMethod.gif|}} ​CanGetBoundingBoxQuicklyCore() **+
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1370: Line 1973:
  
 == Parameters == == Parameters ==
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //filters//
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetCountCore() **+** {{wiki:​ProtectedMethod.gif|}} ​GetBoundingBoxCore() **
  
-This method returns the count of the number of records in this FeatureSource.+  * //N/A//
 == Remarks == == Remarks ==
-This protected virtual method is called from the concreate public method GetCount. It does not take into account any transaction activity as this is the responsibility of the concreate public method GetCount. In this way as a developer if you choose to override this method you do not have to consider transaction at all. The default implementation of GetCountCore uses the GetAllRecordsCore method to calculate how many records there are in the FeatureSource. We strongly recommend that you provide your own implementation for this method that will be more efficient If you do not override this method the means it gets the count is by calling the GetAllFeatureCore method and counting each feature. This is a very inefficient way to get the count in most data sources. It is highly recommended that you override this method and replace it with a highly optimized version. For example in a ShapeFile the record count is in the main header of the file. Similarly if you are using Oracle Spatial you can execute a simple query to get the count of all of the record without returning them. In these ways you can greatly improve the performance of this method.+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Int32 +  * Type:[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]] 
-  * Description:​This method returns the count of the number of records in this FeatureSource.+  * Description:​N/A
  
 == Parameters == == Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​CommitTransactionCore(TransactionBuffer) **+** {{wiki:​ProtectedMethod.gif|}} ​CloneDeepCore() **
  
-This method will commit the existing transaction to its underlying source of data.+  * //N/A//
 == Remarks == == Remarks ==
-This method will commit the existing transaction to its underlying source of data. It will pass back the results of how the commit went to include any error received. If you are implementing your own FeatureSource then this is one of the crucial methods you must create. It should be fairly straight forward that you will loop through the transaction buffer and add, edit or delete the InternalFeatures in your underlying data source. Remember to build and pass back the TransactionResult class so that users of your FeatureSource can respond to failures you may encounter committing the InternalFeatures. We will handle the end of the transaction and also the cleanup of the transaction buffer. Your task will be to commit the records and produce a TransactionResult return.The Transaction SystemThe transaction system of a FeatureSource sits on top of the inherited implementation of any specific source such as Oracle Spatial or Shape files. In this way it functions the same way for every FeatureSource. You start by calling the BeginTransaction. This allocates a collection of in memory change buffers that are used to store changes until you commit the transaction. So for example when you call the Add, Delete or Update method the changes to the feature are stored in memory only. If for any reason you choose to abandon the transaction you can call RollbackTransaction at any time and the in memory buffer will be deleted and the changes will be lost. When you are ready to commit the transaction you call the CommitTransaction and the collections of changes are then passed to the CommitTransactionCore method and the implementer of the specific FeatureSource is responsible for integrating your changes into the underlying FeatureSource. By default the IsLiveTransaction property is set to false which means that until you commit the changes the FeatureSource API will not reflect any changes that are in the temporary editing buffer.In the case where the IsLiveTransaction is set to true then things function slightly differently. The live transaction concept means that all of the modification you perform during a transaction are live from the standpoint of the querying methods on the object.To setup an example imagine that you have a FeatureSource that has 10 records in it. Next you begin a transaction and then call GetAllFeatures,​ the result would be 10 records. After that you call a delete on one of the records and call the GetAllFeatures again, this time you only get nine records. You receive nine records even though the transaction has not yet been committed. In the same sense you could have added a new record or modified an existing one and those changes are considered live though not committed.In the case where you modify records such as expanding the size of a polygon those changes as well are reflected. So for example you expand a polygon by doubling its size and then do a spatial query that would not normally return the smaller record but would return the larger records, in this case the larger record is returned. You can set this property to be false as well in which case all of the spatial related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In this case only after committing the transaction would the FeatureSource reflect the changes.+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:​[[ThinkGeo.MapSuite.Core.TransactionResult|TransactionResult]] +  * Type:​[[ThinkGeo.MapSuite.Core.FeatureSource|FeatureSource]] 
-  * Description:​The return decimalDegreesValue of this method is a TransactionResult class which gives you the status of the transaction you just committed. It includes how many of the updates, adds, and deletes were successful and any error that were encountered during the committing of the transaction.+  * Description:​N/A
  
 == Parameters == == Parameters ==
-  * //​transactions/​+<div newline><​/div> 
-    Type:[[ThinkGeo.MapSuite.Core.TransactionBuffer|TransactionBuffer]] +** {{wiki:ProtectedMethod.gif|}} OpenCore() **
-    ​Description:​This parameter encapsulates all of the adds, edits and deleted that make up the transaction. You will use this data to write the changes to your underlying data source.+
  
 +  * //N/A//
 +== Remarks ==
 +  * //N/A//
 +
 +== Return Value ==
 +  * Type:Void
 +  * Description:​N/​A
 +
 +== Parameters ==
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetAllFeaturesCore(IEnumerable<​String>​) **+** {{wiki:​ProtectedMethod.gif|}} ​CloseCore() **
  
-This method returns all of the InternalFeatures in the FeatureSource.+  * //N/A//
 == Remarks == == Remarks ==
-This method returns all of the InternalFeatures in the FeatureSource. You will not need to consider anything about pending transactions as this will be handled in the non Core version of the method. The main purpose of this method is to be the anchor of all of our default virtual implementations within this class. We wanted as the framework developers to provide you the user with as much default virtual implementation as possible. To do this we needed a way to get access to all of the features. For example, we want to create a default implementation for finding all of the InternalFeatures in a bounding box. Because this is an abstract class we do not know the specifics of the underlying data or how its spatial indexes work. What we do know is that if we get all the records then we can brute force the answer. In this way if you inherited form this class and only implemented this one method we can provide default implementations for virtually every other API. While this is nice for you the developer if you decide to create your own FeatureSource it comes with a price. The price is that it is very inefficient. In the case we just discussed about finding all of the InternalFeatures in a bounding box we would not want to look at every record to fulfil this method. Instead we would want to override the GetFeaturesInsideBoundingBoxCore and implement specific code that would be fast. For example in Oracle Spatial there is a specific SQL statement to do this operation very quickly. The same holds true with other specific FeatureSource examples. Most default implementations in the FeatureSource call the GetFeaturesInsideBoundingBoxCore which by default calls the GetAllFeaturesCore. It is our advice that if you create your own FeatureSource that you ALWAYS override the GetFeatureInsideBoundingBox. It will ensure that nearly every other API will operate efficiently. Please see the specific API to determine what method it uses.+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ +  * Type:Void 
-  * Description:​The return decimalDegreesValue is a collection of all of the InternalFeatures in the FeatureSource.+  * Description:​N/A
  
 == Parameters == == Parameters ==
-  * //​returningColumnNames//​ 
-    * Type:​IEnumerable<​String>​ 
-    * Description:​This parameter allows you to select the field names of the column data you wish to return with each Feature. 
- 
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetAllFeaturesCore(IEnumerable<String>,Int32,Int32) **+** {{wiki:​ProtectedMethod.gif|}} ​RaiseCustomColumnFetchEvent(Collection<Feature>,Collection<​String>​,Boolean) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1426: Line 2041:
  
 == Parameters == == Parameters ==
-  * //returningColumnNames// +  * //sourceFeatures// 
-    * Type:IEnumerable<String>+    * Type:Collection<[[ThinkGeo.MapSuite.Core.Feature|Feature]]>
     * Description:​N/​A     * Description:​N/​A
  
-  * //startIndex// +  * //fieldNamesOutsideOfSource// 
-    * Type:Int32+    * Type:Collection<​String>​
     * Description:​N/​A     * Description:​N/​A
  
-  * //takeCount// +  * //forceRaiseEvent// 
-    * Type:Int32+    * Type:Boolean
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetFeaturesInsideBoundingBoxCore(RectangleShape,​IEnumerable<​String>​) **+** {{wiki:​ProtectedMethod.gif|}} ​OnApplyingFilters(ApplyingFiltersFeatureSourceEventArgs) **
  
-This method returns all of the InternalFeatures of this FeatureSource that are inside of the specified bounding box.+  * //N/A//
 == Remarks == == Remarks ==
-This method returns all of the InternalFeatures of this FeatureSource that are inside of the specified bounding box. If you are overriding this method you will not need to consider anything about transactions,​ as this is handled by the concrete version of this method. The default implementation of GetFeaturesInsideBoundingBoxCore uses the GetAllRecordsCore method to determine which InternalFeatures are inside of the bounding box. We strongly recommend that you provide your own implementation for this method that will be more efficient. That is especially important for this method, as many other default virtual methods use this for their calculations. When you override this method, we highly recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible.+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ +  * Type:Void 
-  * Description:​The returned decimalDegreesValue is a collection of all of the InternalFeatures that are inside of the bounding box.+  * Description:​N/A
  
 == Parameters == == Parameters ==
-  * //boundingBox// +  * //e// 
-    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]] +    * Type:​[[ThinkGeo.MapSuite.Core.ApplyingFiltersFeatureSourceEventArgs|ApplyingFiltersFeatureSourceEventArgs]] 
-    * Description:​This parameter represents the bounding box that you wish to find InternalFeatures inside of. +    * Description:​N/A
- +
-  * //​returningColumnNames//​ +
-    * Type:​IEnumerable<​String>​ +
-    * Description:​This parameter allows you to select the field names of the column data that you wish to return with each Feature.+
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetFeaturesOutsideBoundingBoxCore(RectangleShape,​IEnumerable<​String>​) **+** {{wiki:​ProtectedMethod.gif|}} ​OnAppliedFilters(AppliedFiltersFeatureSourceEventArgs) **
  
-This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box.+  * //N/A//
 == Remarks == == Remarks ==
-This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. If you are in a transaction and that transaction is live, this method will also take that into consideration. The default implementation of GetFeaturesOutsideBoundingBoxCore uses the GetAllRecordsCore method to determine which InternalFeatures are outside of the bounding box. We strongly recommend that you provide your own implementation for this method that will be more efficient.+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ +  * Type:Void 
-  * Description:​This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box.+  * Description:​N/A
  
 == Parameters == == Parameters ==
-  * //boundingBox// +  * //e// 
-    * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]] +    * Type:​[[ThinkGeo.MapSuite.Core.AppliedFiltersFeatureSourceEventArgs|AppliedFiltersFeatureSourceEventArgs]] 
-    * Description:​This parameter represents the bounding box that you wish to find InternalFeatures outside of. +    * Description:​N/A
- +
-  * //​returningColumnNames//​ +
-    * Type:​IEnumerable<​String>​ +
-    * Description:​This parameter allows you to select the field names of the column data you wish to return with each Feature.+
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetColumnsCore() **+** {{wiki:​ProtectedMethod.gif|}} ​ApplyFiltersCore(IEnumerable<​Feature>,​IEnumerable<​String>,​String) **
  
-This method returns the columns available for the FeatureSource.+  * //N/A//
 == Remarks == == Remarks ==
-When overriding you will be responsible for getting a list of all of the columns supported by the FeatureSource. In this way the FeatureSource will know what columns are available and will remove any extra columns when making calls to other core methods. For example if you have a FeatureSource that has three columns of information and the user calls a method and requests four columns of information,​ something they can do with custom fields, we will first compare what they are asking for to the results of the GetColumnsCore. In this way we can strip out custom columns before calling other Core methods which are only responsible for returning data in the FeatureSource. For more information on custom fields you can see the documentation on the OnCustomFieldsFetch.+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]> +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]> 
-  * Description:​This method returns the columns available for the FeatureSource.+  * Description:​N/A
  
 == Parameters == == Parameters ==
 +  * //​features//​
 +    * Type:​IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
 +    * Description:​N/​A
 +
 +  * //​returningColumnNames//​
 +    * Type:​IEnumerable<​String>​
 +    * Description:​N/​A
 +
 +  * //​linkExpression//​
 +    * Type:String
 +    * Description:​N/​A
 +
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​Bhs=(Collection<​Feature>​) **+** {{wiki:​ProtectedMethod.gif|}} ​ConvertToExternalProjectionIfNecessary(Collection<​Feature>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1502: Line 2121:
  
 == Parameters == == Parameters ==
-  * //Bxs=//+  * //returnFeatures//
     * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​     * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​CBs=(RectangleShape,​Collection<​Feature>,​Boolean) **+** {{wiki:​ProtectedMethod.gif|}} ​ProcessTransaction(RectangleShape,​Collection<​Feature>,​Boolean) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1518: Line 2137:
  
 == Parameters == == Parameters ==
-  * //CRs=//+  * //boundingBox//
     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
-  * //Chs=//+  * //returnFeatures//
     * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​     * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​
     * Description:​N/​A     * Description:​N/​A
  
-  * //Cxs=//+  * //needUpdateProjection//
     * Type:​Boolean     * Type:​Boolean
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​DBs=(RectangleShape,​Double,​Double,​IEnumerable<​String>,​RectangleShape) **+** {{wiki:​ProtectedMethod.gif|}} ​GetWrappingFeaturesLeft(RectangleShape,​Double,​Double,​IEnumerable<​String>,​RectangleShape) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1542: Line 2161:
  
 == Parameters == == Parameters ==
-  * //DRs=//+  * //boundingBox//
     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
-  * //Dhs=//+  * //screenWidth//
     * Type:Double     * Type:Double
     * Description:​N/​A     * Description:​N/​A
  
-  * //Dxs=//+  * //screenHeight//
     * Type:Double     * Type:Double
     * Description:​N/​A     * Description:​N/​A
  
-  * //EBs=//+  * //returningColumnNames//
     * Type:​IEnumerable<​String>​     * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
-  * //ERs=//+  * //wrappingExtent//
     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​Ehs=(RectangleShape,​Double,​Double,​IEnumerable<​String>,​RectangleShape) **+** {{wiki:​ProtectedMethod.gif|}} ​GetWrappingFeaturesRight(RectangleShape,​Double,​Double,​IEnumerable<​String>,​RectangleShape) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1574: Line 2193:
  
 == Parameters == == Parameters ==
-  * //Exs=//+  * //boundingBox//
     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
-  * //FBs=//+  * //screenWidth//
     * Type:Double     * Type:Double
     * Description:​N/​A     * Description:​N/​A
  
-  * //FRs=//+  * //screenHeight//
     * Type:Double     * Type:Double
     * Description:​N/​A     * Description:​N/​A
  
-  * //Fhs=//+  * //returningColumnNames//
     * Type:​IEnumerable<​String>​     * Type:​IEnumerable<​String>​
     * Description:​N/​A     * Description:​N/​A
  
-  * //Fxs=//+  * //wrappingExtent//
     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
Line 1597: Line 2216:
 ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesForDrawingCore(RectangleShape,​Double,​Double,​IEnumerable<​String>​) ** ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesForDrawingCore(RectangleShape,​Double,​Double,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1625: Line 2244:
 ** {{wiki:​ProtectedMethod.gif|}} SpatialQueryCore(BaseShape,​QueryType,​IEnumerable<​String>​) ** ** {{wiki:​ProtectedMethod.gif|}} SpatialQueryCore(BaseShape,​QueryType,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1649: Line 2268:
 ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesNearestToCore(BaseShape,​GeographyUnit,​Int32,​IEnumerable<​String>​) ** ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesNearestToCore(BaseShape,​GeographyUnit,​Int32,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1677: Line 2296:
 ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesWithinDistanceOfCore(BaseShape,​GeographyUnit,​DistanceUnit,​Double,​IEnumerable<​String>​) ** ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesWithinDistanceOfCore(BaseShape,​GeographyUnit,​DistanceUnit,​Double,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1709: Line 2328:
 ** {{wiki:​ProtectedMethod.gif|}} GetBoundingBoxByIdCore(String) ** ** {{wiki:​ProtectedMethod.gif|}} GetBoundingBoxByIdCore(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1725: Line 2344:
 ** {{wiki:​ProtectedMethod.gif|}} GetFirstFeaturesWellKnownTypeCore() ** ** {{wiki:​ProtectedMethod.gif|}} GetFirstFeaturesWellKnownTypeCore() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1737: Line 2356:
 ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesByIdsCore(IEnumerable<​String>,​IEnumerable<​String>​) ** ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesByIdsCore(IEnumerable<​String>,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1757: Line 2376:
 ** {{wiki:​ProtectedMethod.gif|}} ConvertToExternalProjection(IEnumerable<​RectangleShape>​) ** ** {{wiki:​ProtectedMethod.gif|}} ConvertToExternalProjection(IEnumerable<​RectangleShape>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1773: Line 2392:
 ** {{wiki:​ProtectedMethod.gif|}} ConvertToInternalProjection(IEnumerable<​RectangleShape>​) ** ** {{wiki:​ProtectedMethod.gif|}} ConvertToInternalProjection(IEnumerable<​RectangleShape>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1789: Line 2408:
 ** {{wiki:​ProtectedMethod.gif|}} ConvertToExternalProjection(RectangleShape) ** ** {{wiki:​ProtectedMethod.gif|}} ConvertToExternalProjection(RectangleShape) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1805: Line 2424:
 ** {{wiki:​ProtectedMethod.gif|}} ConvertToInternalProjection(RectangleShape) ** ** {{wiki:​ProtectedMethod.gif|}} ConvertToInternalProjection(RectangleShape) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1819: Line 2438:
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​ORs=(RectangleShape) **+** {{wiki:​ProtectedMethod.gif|}} ​ConvertToInternalProjectionCall(RectangleShape) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1830: Line 2449:
  
 == Parameters == == Parameters ==
-  * //Ohs=//+  * //rectangle//
     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]     * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​ConvertToInternalProjection(BaseShape) **+** {{wiki:​ProtectedMethod.gif|}} ​CanGetBoundingBoxQuicklyCore() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]]+  * Type:Boolean
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //​baseShape//​ 
-    * Type:​[[ThinkGeo.MapSuite.Core.BaseShape|BaseShape]] 
-    * Description:​N/​A 
- 
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​ConvertToExternalProjection(IEnumerable<​Feature>​) **+** {{wiki:​ProtectedMethod.gif|}} ​CanGetCountQuicklyCore() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​+  * Type:Boolean
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //​features//​ 
-    * Type:​IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ 
-    * Description:​N/​A 
- 
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​ConvertToInternalProjection(IEnumerable<​Feature>​) **+** {{wiki:​ProtectedMethod.gif|}} ​GetDistinctColumnValuesCore(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>+  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.DistinctColumnValue|DistinctColumnValue]]>
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //features// +  * //columnName// 
-    * Type:IEnumerable<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​+    * Type:String
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​ConvertToExternalProjection(Feature) **+** {{wiki:​ProtectedMethod.gif|}} ​OnGettingFeaturesByIds(GettingFeaturesByIdsFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Core.Feature|Feature]]+  * Type:Void
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //feature// +  * //e// 
-    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]+    * Type:​[[ThinkGeo.MapSuite.Core.GettingFeaturesByIdsFeatureSourceEventArgs|GettingFeaturesByIdsFeatureSourceEventArgs]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​ConvertToInternalProjection(Feature) **+** {{wiki:​ProtectedMethod.gif|}} ​OnGettingFeaturesForDrawing(GettingFeaturesForDrawingFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Core.Feature|Feature]]+  * Type:Void
   * Description:​N/​A   * Description:​N/​A
  
 == Parameters == == Parameters ==
-  * //feature// +  * //e// 
-    * Type:​[[ThinkGeo.MapSuite.Core.Feature|Feature]]+    * Type:​[[ThinkGeo.MapSuite.Core.GettingFeaturesForDrawingFeatureSourceEventArgs|GettingFeaturesForDrawingFeatureSourceEventArgs]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​GetColumnNamesInsideFeatureSource(IEnumerable<​String>​) **+** {{wiki:​ProtectedMethod.gif|}} ​OnGettingColumns(GettingColumnsFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A +  ​* //N/A//
- +
-== Return Value == +
-  ​Type:​Collection<​String>​ +
-  * Description:​N/+
- +
-== Parameters == +
-  * //​returningColumnNames//​ +
-    * Type:​IEnumerable<​String>​ +
-    * Description:​N/A +
- +
-<div newline><​/div> +
-** {{wiki:​ProtectedMethod.gif|}} GetColumnNamesOutsideFeatureSource(IEnumerable<​String>​) ** +
- +
-N/+
-== Remarks == +
-N/A +
- +
-== Return Value == +
-  * Type:​Collection<​String>​ +
-  * Description:​N/​A +
- +
-== Parameters == +
-  * //​returningColumnNames//​ +
-    * Type:​IEnumerable<​String>​ +
-    * Description:​N/​A +
- +
-<div newline></​div>​ +
-** {{wiki:​ProtectedMethod.gif|}} GetReturningColumnNames(ReturningColumnsType) ** +
- +
-N/A +
-== Remarks == +
-N/A +
- +
-== Return Value == +
-  * Type:​Collection<​String>​ +
-  * Description:​N/​A +
- +
-== Parameters == +
-  * //​returningColumnNamesType//​ +
-    * Type:​[[ThinkGeo.MapSuite.Core.ReturningColumnsType|ReturningColumnsType]] +
-    * Description:​N/​A +
- +
-<div newline></​div>​ +
-** {{wiki:​ProtectedMethod.gif|}} SBs=(Collection<​Feature>​) ** +
- +
-N/A +
-== Remarks == +
-N/A+
  
 == Return Value == == Return Value ==
Line 1974: Line 2537:
  
 == Parameters == == Parameters ==
-  * //SRs=// +  * //e// 
-    * Type:Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>+    * Type:​[[ThinkGeo.MapSuite.Core.GettingColumnsFeatureSourceEventArgs|GettingColumnsFeatureSourceEventArgs]]
     * Description:​N/​A     * Description:​N/​A
  
 <div newline></​div>​ <div newline></​div>​
-** {{wiki:​ProtectedMethod.gif|}} ​OnDrawingProgressChanged(DrawingProgressChangedEventArgs) **+** {{wiki:​ProtectedMethod.gif|}} ​OnGottenColumns(GottenColumnsFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 1991: Line 2554:
 == Parameters == == Parameters ==
   * //e//   * //e//
-    * Type:​[[ThinkGeo.MapSuite.Core.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]] +    * Type:​[[ThinkGeo.MapSuite.Core.GottenColumnsFeatureSourceEventArgs|GottenColumnsFeatureSourceEventArgs]]
-    * Description:​N/​A +
- +
-<div newline></​div>​ +
-** {{wiki:​ProtectedMethod.gif|}} VRs=(IEnumerable<​String>​) ** +
- +
-N/A +
-== Remarks == +
-N/A +
- +
-== Return Value == +
-  * Type:​Collection<​String>​ +
-  * Description:​N/​A +
- +
-== Parameters == +
-  * //Vhs=// +
-    * Type:​IEnumerable<​String>​ +
-    * Description:​N/​A +
- +
-<div newline></​div>​ +
-** {{wiki:​ProtectedMethod.gif|}} CanGetCountQuicklyCore() ** +
- +
-N/A +
-== Remarks == +
-N/A +
- +
-== Return Value == +
-  * Type:​Boolean +
-  * Description:​N/​A +
- +
-== Parameters == +
-<div newline></​div>​ +
-** {{wiki:​ProtectedMethod.gif|}} GetDistinctColumnValuesCore(String) ** +
- +
-N/A +
-== Remarks == +
-N/A +
- +
-== Return Value == +
-  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.DistinctColumnValue|DistinctColumnValue]]>​ +
-  * Description:​N/​A +
- +
-== Parameters == +
-  * //​columnName//​ +
-    * Type:String+
     * Description:​N/​A     * Description:​N/​A
  
Line 2041: Line 2560:
 ** {{wiki:​ProtectedMethod.gif|}} OnCustomColumnFetch(CustomColumnFetchEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnCustomColumnFetch(CustomColumnFetchEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2057: Line 2576:
 ** {{wiki:​ProtectedMethod.gif|}} OnCommittingTransaction(CommittingTransactionEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnCommittingTransaction(CommittingTransactionEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2073: Line 2592:
 ** {{wiki:​ProtectedMethod.gif|}} OnCommittedTransaction(CommittedTransactionEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnCommittedTransaction(CommittedTransactionEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2089: Line 2608:
 ** {{wiki:​ProtectedMethod.gif|}} OnOpeningFeatureSource(OpeningFeatureSourceEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnOpeningFeatureSource(OpeningFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2105: Line 2624:
 ** {{wiki:​ProtectedMethod.gif|}} OnOpenedFeatureSource(OpenedFeatureSourceEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnOpenedFeatureSource(OpenedFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2121: Line 2640:
 ** {{wiki:​ProtectedMethod.gif|}} OnClosingFeatureSource(ClosingFeatureSourceEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnClosingFeatureSource(ClosingFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2137: Line 2656:
 ** {{wiki:​ProtectedMethod.gif|}} OnClosedFeatureSource(ClosedFeatureSourceEventArgs) ** ** {{wiki:​ProtectedMethod.gif|}} OnClosedFeatureSource(ClosedFeatureSourceEventArgs) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2153: Line 2672:
 ** {{wiki:​ProtectedMethod.gif|}} ExecuteNonQueryCore(String) ** ** {{wiki:​ProtectedMethod.gif|}} ExecuteNonQueryCore(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2169: Line 2688:
 ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesByColumnValueCore(String,​String,​IEnumerable<​String>​) ** ** {{wiki:​ProtectedMethod.gif|}} GetFeaturesByColumnValueCore(String,​String,​IEnumerable<​String>​) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2193: Line 2712:
 ** {{wiki:​ProtectedMethod.gif|}} ExecuteScalarCore(String) ** ** {{wiki:​ProtectedMethod.gif|}} ExecuteScalarCore(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2209: Line 2728:
 ** {{wiki:​ProtectedMethod.gif|}} ExecuteQueryCore(String) ** ** {{wiki:​ProtectedMethod.gif|}} ExecuteQueryCore(String) **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
-  * Type:[[ThinkGeo.MapSuite.Portable.GeoDataTable|GeoDataTable]]+  * Type:DataTable
   * Description:​N/​A   * Description:​N/​A
  
Line 2220: Line 2739:
   * //​sqlStatement//​   * //​sqlStatement//​
     * Type:String     * Type:String
-    * Description:​N/​A 
- 
-<div newline></​div>​ 
-** {{wiki:​ProtectedMethod.gif|}} GetBoundingBoxCore() ** 
- 
-N/A 
-== Remarks == 
-N/A 
- 
-== Return Value == 
-  * Type:​[[ThinkGeo.MapSuite.Core.RectangleShape|RectangleShape]] 
-  * Description:​N/​A 
- 
-== Parameters == 
-<div newline></​div>​ 
-** {{wiki:​ProtectedMethod.gif|}} CloneDeepCore() ** 
- 
-N/A 
-== Remarks == 
-N/A 
- 
-== Return Value == 
-  * Type:​[[ThinkGeo.MapSuite.Core.FeatureSource|FeatureSource]] 
-  * Description:​N/​A 
- 
-== Parameters == 
-<div newline></​div>​ 
-** {{wiki:​ProtectedMethod.gif|}} OpenCore() ** 
- 
-N/A 
-== Remarks == 
-N/A 
- 
-== Return Value == 
-  * Type:Void 
-  * Description:​N/​A 
- 
-== Parameters == 
-<div newline></​div>​ 
-** {{wiki:​ProtectedMethod.gif|}} CloseCore() ** 
- 
-N/A 
-== Remarks == 
-N/A 
- 
-== Return Value == 
-  * Type:Void 
-  * Description:​N/​A 
- 
-== Parameters == 
-<div newline></​div>​ 
-** {{wiki:​ProtectedMethod.gif|}} ABs=(Collection<​Feature>,​Collection<​String>,​Boolean) ** 
- 
-N/A 
-== Remarks == 
-N/A 
- 
-== Return Value == 
-  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ 
-  * Description:​N/​A 
- 
-== Parameters == 
-  * //ARs=// 
-    * Type:​Collection<​[[ThinkGeo.MapSuite.Core.Feature|Feature]]>​ 
-    * Description:​N/​A 
- 
-  * //Ahs=// 
-    * Type:​Collection<​String>​ 
-    * Description:​N/​A 
- 
-  * //Axs=// 
-    * Type:​Boolean 
     * Description:​N/​A     * Description:​N/​A
  
Line 2297: Line 2744:
 ** {{wiki:​ProtectedMethod.gif|}} Finalize() ** ** {{wiki:​ProtectedMethod.gif|}} Finalize() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2309: Line 2756:
 ** {{wiki:​ProtectedMethod.gif|}} MemberwiseClone() ** ** {{wiki:​ProtectedMethod.gif|}} MemberwiseClone() **
  
-N/A+  * //N/A//
 == Remarks == == Remarks ==
-N/A+  * //N/A//
  
 == Return Value == == Return Value ==
Line 2326: Line 2773:
 This property allows you to modify and inspect the InternalFeatures held by this FeatureSource in memory. You can use this as a quick way to add, update or remove InternalFeatures. This property allows you to modify and inspect the InternalFeatures held by this FeatureSource in memory. You can use this as a quick way to add, update or remove InternalFeatures.
 == Return Value == == Return Value ==
-  * Type:​[[ThinkGeo.MapSuite.Core.GeoCollection<​T>​[[ThinkGeo.MapSuite.Core.Feature, ​MapSuitePortableCore, Version=8.0.0.0, Culture=neutral,​ PublicKeyToken=null]]|GeoCollection<​T>​]]+  * Type:​[[ThinkGeo.MapSuite.Core.GeoCollection<​T>​[[ThinkGeo.MapSuite.Core.Feature, ​MapSuiteCore, Version=9.0.0.0, Culture=neutral,​ PublicKeyToken=null]]|GeoCollection<​T>​]]
  
 ** {{wiki:​PublicProperty.gif|}} IsEditable ** ** {{wiki:​PublicProperty.gif|}} IsEditable **
Line 2423: Line 2870:
 == Return Value == == Return Value ==
   * Type:Int32   * Type:Int32
 +
 +** {{wiki:​PublicProperty.gif|}} LinkSources **
 +
 +N/A
 +== Remarks ==
 +N/A
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.LinkSource|LinkSource]]>​
 +
 +** {{wiki:​PublicProperty.gif|}} LinkExpressions **
 +
 +N/A
 +== Remarks ==
 +N/A
 +== Return Value ==
 +  * Type:​Collection<​String>​
 +
 +** {{wiki:​PublicProperty.gif|}} Filters **
 +
 +N/A
 +== Remarks ==
 +N/A
 +== Return Value ==
 +  * Type:​Collection<​String>​
 +
 +** {{wiki:​PublicProperty.gif|}} GeometryValidationMode **
 +
 +N/A
 +== Remarks ==
 +N/A
 +== Return Value ==
 +  * Type:​[[ThinkGeo.MapSuite.Core.GeometryValidationMode|GeometryValidationMode]]
  
 ==== Protected Properties ==== ==== Protected Properties ====
 +** {{wiki:​ProtectedProperty.gif|}} locker **
 +
 +N/A
 +== Remarks ==
 +N/A
 +== Return Value ==
 +  * Type:Object
 +
 +** {{wiki:​ProtectedProperty.gif|}} Columns **
 +
 +This property gets the columns of data for the InternalFeatures in this Layer.
 +== Remarks ==
 +You should set the column names for the data that the InternalFeatures will hold. For example, if you have some features that represent road signs, then one column you may want to add is "Sign Type". Then, for every Feature you add to the layer, you need to add the "Sign Type" and a value to the InternalFeatures'​ ColumnValues dictionary. If you provide this information,​ then you can use things like ValueStyles,​ Labeling, etc. based on the columns you have defined.
 +== Return Value ==
 +  * Type:​Collection<​[[ThinkGeo.MapSuite.Core.FeatureSourceColumn|FeatureSourceColumn]]>​
 +
 ** {{wiki:​ProtectedProperty.gif|}} CanExecuteSqlQueryCore ** ** {{wiki:​ProtectedProperty.gif|}} CanExecuteSqlQueryCore **
  
Line 2464: Line 2959:
  
 Event Arguments:​[[ThinkGeo.MapSuite.Core.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]] Event Arguments:​[[ThinkGeo.MapSuite.Core.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]]
 +
 +** {{wiki:​PublicEvent.gif|}} GettingColumns **
 +N/A
 +== Remarks ==
 +N/A
 +
 +Event Arguments:​[[ThinkGeo.MapSuite.Core.GettingColumnsFeatureSourceEventArgs|GettingColumnsFeatureSourceEventArgs]]
 +
 +** {{wiki:​PublicEvent.gif|}} GottenColumns **
 +N/A
 +== Remarks ==
 +N/A
 +
 +Event Arguments:​[[ThinkGeo.MapSuite.Core.GottenColumnsFeatureSourceEventArgs|GottenColumnsFeatureSourceEventArgs]]
 +
 +** {{wiki:​PublicEvent.gif|}} ApplyingFilters **
 +N/A
 +== Remarks ==
 +N/A
 +
 +Event Arguments:​[[ThinkGeo.MapSuite.Core.ApplyingFiltersFeatureSourceEventArgs|ApplyingFiltersFeatureSourceEventArgs]]
 +
 +** {{wiki:​PublicEvent.gif|}} AppliedFilters **
 +N/A
 +== Remarks ==
 +N/A
 +
 +Event Arguments:​[[ThinkGeo.MapSuite.Core.AppliedFiltersFeatureSourceEventArgs|AppliedFiltersFeatureSourceEventArgs]]
 +
 +** {{wiki:​PublicEvent.gif|}} GettingFeaturesByIds **
 +N/A
 +== Remarks ==
 +N/A
 +
 +Event Arguments:​[[ThinkGeo.MapSuite.Core.GettingFeaturesByIdsFeatureSourceEventArgs|GettingFeaturesByIdsFeatureSourceEventArgs]]
 +
 +** {{wiki:​PublicEvent.gif|}} GettingFeaturesForDrawing **
 +N/A
 +== Remarks ==
 +N/A
 +
 +Event Arguments:​[[ThinkGeo.MapSuite.Core.GettingFeaturesForDrawingFeatureSourceEventArgs|GettingFeaturesForDrawingFeatureSourceEventArgs]]
  
 ** {{wiki:​PublicEvent.gif|}} CustomColumnFetch ** ** {{wiki:​PublicEvent.gif|}} CustomColumnFetch **
thinkgeo.mapsuite.core.inmemoryfeaturesource.1442820641.txt.gz · Last modified: 2015/09/21 07:30 by admin