====== ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileFeatureSource ====== {{section>upgrade_map_suite_to_10.0}} This class represents a FeatureSource backed by ESRI a Shape File. ===== Inheritance Hierarchy ===== *System.Object **[[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource]] ***[[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileFeatureSource]] ===== Members Summary ===== ==== Public Constructors ==== ^ Name ^ Parameters ^ DeclaringType ^ Summary ^ | {{wiki:PublicMethod.gif|Public Method}}[[#ShapeFileFeatureSource()|ShapeFileFeatureSource]] | | | This is the class constructor. | | {{wiki:PublicMethod.gif|Public Method}}[[#ShapeFileFeatureSource(String)|ShapeFileFeatureSource]] | String | | This is the class constructor. | | {{wiki:PublicMethod.gif|Public Method}}[[#ShapeFileFeatureSource(String, ShapeFileReadWriteMode)|ShapeFileFeatureSource]] | String, [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | | This is the class constructor. | | {{wiki:PublicMethod.gif|Public Method}}[[#ShapeFileFeatureSource(String, String)|ShapeFileFeatureSource]] | String, String | | This is a constructor for the class. | | {{wiki:PublicMethod.gif|Public Method}}[[#ShapeFileFeatureSource(String, String, ShapeFileReadWriteMode)|ShapeFileFeatureSource]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | | This is a constructor for the class. | | {{wiki:PublicMethod.gif|Public Method}}[[#ShapeFileFeatureSource(String, String, ShapeFileReadWriteMode, Encoding)|ShapeFileFeatureSource]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]], Encoding | | This is a constructor for the class. | ==== Protected Constructors ==== ^ Name ^ Parameters ^ DeclaringType ^ Summary ^ ==== Public Methods ==== ^ Name ^ Parameters ^ DeclaringType ^ Summary ^ | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnBoolean(String)|AddColumnBoolean]] | String | | This method adds a new Boolean column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnDate(String)|AddColumnDate]] | String | | This method adds a new Date column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnDouble(String, Int32, Int32)|AddColumnDouble]] | String, Int32, Int32 | | This method adds a new Double column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnInteger(String, Int32)|AddColumnInteger]] | String, Int32 | | This method adds a new Integer column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnMemo(String, Int32)|AddColumnMemo]] | String, Int32 | | This method adds a new Memo column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnMemo(String)|AddColumnMemo]] | String | | This method adds a new Memo column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddColumnString(String, Int32)|AddColumnString]] | String, Int32 | | This method adds a new String column to the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddFeature(Feature)|AddFeature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method adds a new Feature to an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddFeature(BaseShape)|AddFeature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method adds a new Feature (composed of the passed-in BaseShape) to an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#AddFeature(BaseShape, IDictionary)|AddFeature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], IDictionary | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method adds a new Feature composes of the passed in BaseShape to an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#BeginTransaction()|BeginTransaction]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method starts a new transaction if the FeasuteSource allows editing | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String, String, BuildIndexMode)|BuildIndexFile]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(IEnumerable, String, Projection, BuildIndexMode)|BuildIndexFile]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]>, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]], [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for a passed group of featurs which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String)|BuildIndexFile]] | String | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String, String, Projection, String, String, BuildIndexMode, Encoding)|BuildIndexFile]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]], String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]], Encoding | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String, String, Projection, String, String, BuildIndexMode)|BuildIndexFile]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]], String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(IEnumerable, String)|BuildIndexFile]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]>, String | | This method build a spatial index for a passed group of featurs which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(IEnumerable, String, Projection)|BuildIndexFile]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]>, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | | This method build a spatial index for a passed group of featurs using the specified projection which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String, String, String, String, BuildIndexMode)|BuildIndexFile]] | String, String, String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String, String, Projection, BuildIndexMode)|BuildIndexFile]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]], [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(String, BuildIndexMode)|BuildIndexFile]] | String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for the shape file which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildIndexFile(IEnumerable, String, BuildIndexMode)|BuildIndexFile]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]>, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | | This method build a spatial index for a passed group of featurs which increases access speed. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildRecordIdColumn(String, String, BuildRecordIdMode, Int32, Encoding)|BuildRecordIdColumn]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildRecordIdMode|BuildRecordIdMode]], Int32, Encoding | | Static API used to build RecordId from the specified starting id number. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildRecordIdColumn(String, String, BuildRecordIdMode)|BuildRecordIdColumn]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildRecordIdMode|BuildRecordIdMode]] | | Static API used to build RecordId, the id should start from 0 by default. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#BuildRecordIdColumn(String, String, BuildRecordIdMode, Int32)|BuildRecordIdColumn]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildRecordIdMode|BuildRecordIdMode]], Int32 | | Static API used to build RecordId from the specified starting id number. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#CloneShapeFileStructure(String, String, OverwriteMode, Encoding)|CloneShapeFileStructure]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]], Encoding | | Clone out the structure from the source shape file to the target shape file. After cloning the structure, the targetShapeFile has the same type and same dbf columns with the source shape file but without any records in it. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#CloneShapeFileStructure(String, String, OverwriteMode)|CloneShapeFileStructure]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | | Clone out the structure from the source shape file to the target shape file. After cloning the structure, the targetShapeFile has the same type and same dbf columns with the source shape file but without any records in it. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#CloneShapeFileStructure(String, String)|CloneShapeFileStructure]] | String, String | | Clone out the structure from the source shape file to the target shape file. After cloning the structure, the targetShapeFile has the same type and same dbf columns with the source shape file but without any records in it. | | {{wiki:PublicMethod.gif|Public Method}}[[#Close()|Close]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method closes the FeatureSource and releases any resources it was using. | | {{wiki:PublicMethod.gif|Public Method}}[[#CommitTransaction()|CommitTransaction]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method will commit the existing transaction to its underlying source of data. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#CreateShapeFile(ShapeFileType, String, IEnumerable, Encoding)|CreateShapeFile]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]], String, IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]>, Encoding | | Static API to create a new shape file. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#CreateShapeFile(ShapeFileType, String, IEnumerable)|CreateShapeFile]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]], String, IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]> | | Static API to create a new shape file. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#CreateShapeFile(ShapeFileType, String, IEnumerable, Encoding, OverwriteMode)|CreateShapeFile]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]], String, IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]>, Encoding, [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | | Static API to create a new shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#DeleteFeature(String)|DeleteFeature]] | String | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method deletes a Feature from an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#Equals(Object)|Equals]] | Object | Object | | | {{wiki:PublicMethod.gif|Public Method}}[[#ExecuteNonQuery(String)|ExecuteNonQuery]] | String | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Executes a SQL statement against a connection object. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetAllFeatures(IEnumerable)|GetAllFeatures]] | IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures in the FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetAllFeatures(ReturningColumnsType)|GetAllFeatures]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures in the FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetBoundingBox()|GetBoundingBox]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the bounding box which encompasses all of the features in the FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetBoundingBoxById(String)|GetBoundingBoxById]] | String | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a bounding box based on the InternalFeatures Id specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetBoundingBoxByIds(IEnumerable)|GetBoundingBoxByIds]] | IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of bounding boxes based on the Feature Ids specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetBoundingBoxesByIds(IEnumerable)|GetBoundingBoxesByIds]] | IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of bounding boxes based on the Feature Ids specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetColumns()|GetColumns]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the columns available for the FeatureSource and caches them. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetCount()|GetCount]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the count of the number of records in this FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(IEnumerable, ReturningColumnsType)|GetDataFromDbf]] | IEnumerable, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(IEnumerable)|GetDataFromDbf]] | IEnumerable | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(IEnumerable, String)|GetDataFromDbf]] | IEnumerable, String | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(IEnumerable, IEnumerable)|GetDataFromDbf]] | IEnumerable, IEnumerable | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(String, ReturningColumnsType)|GetDataFromDbf]] | String, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(String, IEnumerable)|GetDataFromDbf]] | String, IEnumerable | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(String, String)|GetDataFromDbf]] | String, String | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDataFromDbf(String)|GetDataFromDbf]] | String | | This method gets data directly from the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetDbfColumns()|GetDbfColumns]] | | | Get the dbf columns out from the shape file featureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeatureById(String, ReturningColumnsType)|GetFeatureById]] | String, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a Feature by providing its Id in the FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeatureById(String, IEnumerable)|GetFeatureById]] | String, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a Feature by providing its Id in the FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesByColumnValue(String, String)|GetFeaturesByColumnValue]] | String, String | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Get all of the features by passing a columnName and a specified columValue. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesByColumnValue(String, String, IEnumerable)|GetFeaturesByColumnValue]] | String, String, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Get all of the features by passing a columnName and a specified columValue. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesByColumnValue(String, String, ReturningColumnsType)|GetFeaturesByColumnValue]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Get all of the features by passing a columnName and a specified columValue. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesByIds(IEnumerable, ReturningColumnsType)|GetFeaturesByIds]] | IEnumerable, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures by providing a group of Ids. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesByIds(IEnumerable, IEnumerable)|GetFeaturesByIds]] | IEnumerable, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures by providing a group of Ids. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesForDrawing(RectangleShape, Double, Double, IEnumerable)|GetFeaturesForDrawing]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], Double, Double, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the InternalFeatures that will be used for drawing. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesForDrawing(RectangleShape, Double, Double, ReturningColumnsType)|GetFeaturesForDrawing]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], Double, Double, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the InternalFeatures that will be used for drawing. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesInsideBoundingBox(RectangleShape, ReturningColumnsType)|GetFeaturesInsideBoundingBox]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesInsideBoundingBox(RectangleShape, IEnumerable)|GetFeaturesInsideBoundingBox]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesNearestTo(Feature, GeographyUnit, Int32, IEnumerable)|GetFeaturesNearestTo]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesNearestTo(BaseShape, GeographyUnit, Int32, IEnumerable)|GetFeaturesNearestTo]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesNearestTo(Feature, GeographyUnit, Int32, ReturningColumnsType)|GetFeaturesNearestTo]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesNearestTo(Feature, GeographyUnit, Int32, IEnumerable, Double, DistanceUnit)|GetFeaturesNearestTo]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, IEnumerable, Double, [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesNearestTo(BaseShape, GeographyUnit, Int32, IEnumerable, Double, DistanceUnit)|GetFeaturesNearestTo]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, IEnumerable, Double, [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesNearestTo(BaseShape, GeographyUnit, Int32, ReturningColumnsType)|GetFeaturesNearestTo]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesOutsideBoundingBox(RectangleShape, IEnumerable)|GetFeaturesOutsideBoundingBox]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesOutsideBoundingBox(RectangleShape, ReturningColumnsType)|GetFeaturesOutsideBoundingBox]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesWithinDistanceOf(Feature, GeographyUnit, DistanceUnit, Double, ReturningColumnsType)|GetFeaturesWithinDistanceOf]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]], Double, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesWithinDistanceOf(BaseShape, GeographyUnit, DistanceUnit, Double, ReturningColumnsType)|GetFeaturesWithinDistanceOf]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]], Double, [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesWithinDistanceOf(Feature, GeographyUnit, DistanceUnit, Double, IEnumerable)|GetFeaturesWithinDistanceOf]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]], Double, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFeaturesWithinDistanceOf(BaseShape, GeographyUnit, DistanceUnit, Double, IEnumerable)|GetFeaturesWithinDistanceOf]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]], Double, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetFirstFeaturesWellKnownType()|GetFirstFeaturesWellKnownType]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the well known type that represents the first feature from FeatureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetHashCode()|GetHashCode]] | | Object | | | {{wiki:PublicMethod.gif|Public Method}}[[#GetShapeFileType()|GetShapeFileType]] | | | Get shape file type for the shape file featureSource. | | {{wiki:PublicMethod.gif|Public Method}}[[#GetType()|GetType]] | | Object | | | {{wiki:PublicMethod.gif|Public Method}}[[#Open()|Open]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method opens the FeatureSource so that it is initialized and ready to use. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#Rebuild(String)|Rebuild]] | String | | This method rebuilds the SHP, SHX, DBF, IDX and IDS files for the given shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#RefreshColumns()|RefreshColumns]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method refresh the columns available for the FeatureSource and caches them. | | {{wiki:PublicMethod.gif|Public Method}}[[#RollbackTransaction()|RollbackTransaction]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method will cancel an existing transaction. It will free up the internal memory cache of any InternalFeatures added, updated or deleted. | | {{wiki:PublicMethod.gif|Public Method}}{{wiki:Static.gif|Static Member}}[[#SaveToProjection(String, String, Projection, OverwriteMode)|SaveToProjection]] | String, String, [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]], [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | | This API provide a easy way to project features in a shape file into another projection and save it to shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#SpatialQuery(Feature, QueryType, IEnumerable)|SpatialQuery]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#SpatialQuery(Feature, QueryType, ReturningColumnsType)|SpatialQuery]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]], [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]], [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#SpatialQuery(BaseShape, QueryType, ReturningColumnsType)|SpatialQuery]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]], [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#SpatialQuery(BaseShape, QueryType, IEnumerable)|SpatialQuery]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. | | {{wiki:PublicMethod.gif|Public Method}}[[#ToString()|ToString]] | | Object | | | {{wiki:PublicMethod.gif|Public Method}}[[#UpdateDbfData(String, String, String)|UpdateDbfData]] | String, String, String | | This method updates data in the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#UpdateDbfData(String, IEnumerable, IEnumerable)|UpdateDbfData]] | String, IEnumerable, IEnumerable | | This method updates data in the DBF file associated with the shape file. | | {{wiki:PublicMethod.gif|Public Method}}[[#UpdateFeature(BaseShape, IDictionary)|UpdateFeature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], IDictionary | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method updates a Feature (composed of the passed-in BaseShape) in an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#UpdateFeature(Feature)|UpdateFeature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method updates a Feature in an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#UpdateFeature(BaseShape)|UpdateFeature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method updates a Feature (composed of the passed-in BaseShape) in an existing transaction. | | {{wiki:PublicMethod.gif|Public Method}}[[#Validate()|Validate]] | | | This method checks all features in a shapefile is supported by Mapsuite or not. | ==== Protected Methods ==== ^ Name ^ Parameters ^ DeclaringType ^ Summary ^ | {{wiki:ProtectedMethod.gif|Protected Method}}[[#CloseCore()|CloseCore]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method opens the FeatureSource so that it is initialized and ready to use. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#CommitTransactionCore(TransactionBuffer)|CommitTransactionCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.TransactionBuffer|TransactionBuffer]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method will commit the existing transaction to its underlying source of data. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToExternalProjection(IEnumerable)|ConvertToExternalProjection]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToExternalProjection(IEnumerable)|ConvertToExternalProjection]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToExternalProjection(RectangleShape)|ConvertToExternalProjection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToExternalProjection(Feature)|ConvertToExternalProjection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToInternalProjection(IEnumerable)|ConvertToInternalProjection]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method de-projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToInternalProjection(RectangleShape)|ConvertToInternalProjection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method de-projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToInternalProjection(Feature)|ConvertToInternalProjection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method de-projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToInternalProjection(BaseShape)|ConvertToInternalProjection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method de-projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ConvertToInternalProjection(IEnumerable)|ConvertToInternalProjection]] | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method de-projects items based on the Projection of the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#ExecuteNonQueryCore(String)|ExecuteNonQueryCore]] | String | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Executes a SQL statement against a connection object. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#Finalize()|Finalize]] | | Object | | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetAllFeaturesCore(IEnumerable)|GetAllFeaturesCore]] | IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns all of the InternalFeatures in the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetBoundingBoxCore()|GetBoundingBoxCore]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns the bounding box which encompasses all of the features in the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetColumnNamesInsideFeatureSource(IEnumerable)|GetColumnNamesInsideFeatureSource]] | IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the field names that are in the FeatureSource from a list of provided field names. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetColumnNamesOutsideFeatureSource(IEnumerable)|GetColumnNamesOutsideFeatureSource]] | IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the field names that are not in the FeatureSource from a list of provided field names. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetColumnsCore()|GetColumnsCore]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns the columns available for the FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetCountCore()|GetCountCore]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns the count of the number of records in this FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesByColumnValueCore(String, String)|GetFeaturesByColumnValueCore]] | String, String | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Get all of the features by passing a columnName and a specified columValue. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesByColumnValueCore(String, String, IEnumerable)|GetFeaturesByColumnValueCore]] | String, String, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Get all of the features by passing a columnName and a specified columValue. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesByIdsCore(IEnumerable, IEnumerable)|GetFeaturesByIdsCore]] | IEnumerable, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns a collection of InternalFeatures by providing a group of Ids. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesForDrawingCore(RectangleShape, Double, Double, IEnumerable)|GetFeaturesForDrawingCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], Double, Double, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns the InternalFeatures that will be used for drawing. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesInsideBoundingBoxCore(RectangleShape, IEnumerable)|GetFeaturesInsideBoundingBoxCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesNearestToCore(BaseShape, GeographyUnit, Int32, IEnumerable)|GetFeaturesNearestToCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], Int32, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesOutsideBoundingBoxCore(RectangleShape, IEnumerable)|GetFeaturesOutsideBoundingBoxCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFeaturesWithinDistanceOfCore(BaseShape, GeographyUnit, DistanceUnit, Double, IEnumerable)|GetFeaturesWithinDistanceOfCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]], [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]], Double, IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetFirstFeaturesWellKnownTypeCore()|GetFirstFeaturesWellKnownTypeCore]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns the well known type that represents the first feature from FeatureSource. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#GetReturningColumnNames(ReturningColumnsType)|GetReturningColumnNames]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | Get returning columnNames according to the returningColumnType. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#MemberwiseClone()|MemberwiseClone]] | | Object | | | {{wiki:ProtectedMethod.gif|Protected Method}}{{wiki:Static.gif|Static Member}}[[#OnBuildingIndex(BuildingIndexShapeFileFeatureSourceEventArgs)|OnBuildingIndex]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildingIndexShapeFileFeatureSourceEventArgs|BuildingIndexShapeFileFeatureSourceEventArgs]] | | This method allows you to raise the BuildingIndex event. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnClosedFeatureSource(ClosedFeatureSourceEventArgs)|OnClosedFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosedFeatureSourceEventArgs|ClosedFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the ClosedFeatureSource event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnClosingFeatureSource(ClosingFeatureSourceEventArgs)|OnClosingFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosingFeatureSourceEventArgs|ClosingFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the ClosingFeatureSource event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnCommittedTransaction(CommittedTransactionEventArgs)|OnCommittedTransaction]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittedTransactionEventArgs|CommittedTransactionEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the CommittedTransaction event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnCommittingTransaction(CommittingTransactionEventArgs)|OnCommittingTransaction]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittingTransactionEventArgs|CommittingTransactionEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the CommittingTransaction event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnCustomColumnFetch(CustomColumnFetchEventArgs)|OnCustomColumnFetch]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.CustomColumnFetchEventArgs|CustomColumnFetchEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the CustomColumnFetch event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnDrawingProgressChanged(DrawingProgressChangedEventArgs)|OnDrawingProgressChanged]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnOpenedFeatureSource(OpenedFeatureSourceEventArgs)|OnOpenedFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpenedFeatureSourceEventArgs|OpenedFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the OpenedFeatureSource event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnOpeningFeatureSource(OpeningFeatureSourceEventArgs)|OnOpeningFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpeningFeatureSourceEventArgs|OpeningFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method allows you to raise the OpeningFeatureSource event from a derived class. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OnStreamLoading(StreamLoadingEventArgs)|OnStreamLoading]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.StreamLoadingEventArgs|StreamLoadingEventArgs]] | | This method allows you to raise the StreamLoading event. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#OpenCore()|OpenCore]] | | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This method opens the FeatureSource so that it is initialized and ready to use. | | {{wiki:ProtectedMethod.gif|Protected Method}}[[#SpatialQueryCore(BaseShape, QueryType, IEnumerable)|SpatialQueryCore]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]], [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]], IEnumerable | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. | ==== Public Properties ==== ^ Name ^ Return ^ DeclaringType ^ Summary ^ | {{wiki:PublicProperty.gif|Public Property}}[[#CanExecuteSqlQuery|CanExecuteSqlQuery]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property specifies whether the FeatureSource can excute a SQL query or not. If it is false, then it will throw exception when these APIs are calleds: ExecuteScalar, ExecuteNonQuery, ExecuteQuery | | {{wiki:PublicProperty.gif|Public Property}}[[#Encoding|Encoding]] | Encoding | | This property get and set the encoding information for the dbf. | | {{wiki:PublicProperty.gif|Public Property}}[[#FeatureIdsToExclude|FeatureIdsToExclude]] | Collection | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | A collection of strings representing record id of features not to get in the Layer. | | {{wiki:PublicProperty.gif|Public Property}}[[#GeoCache|GeoCache]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureCache|FeatureCache]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | The cache system. | | {{wiki:PublicProperty.gif|Public Property}}[[#IndexPathFileName|IndexPathFileName]] | String | | This property gets and sets the path and file of the index you want to use. | | {{wiki:PublicProperty.gif|Public Property}}[[#IsEditable|IsEditable]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This property returns if the FeatureSource allows edits or is read only. | | {{wiki:PublicProperty.gif|Public Property}}[[#IsInTransaction|IsInTransaction]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property returns true if the FeatureSource is in a transaction and false if it is not. | | {{wiki:PublicProperty.gif|Public Property}}[[#IsOpen|IsOpen]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property returns true if the FeatureSource is open and false if it is not. | | {{wiki:PublicProperty.gif|Public Property}}[[#IsTransactionLive|IsTransactionLive]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property returns true if the features currently modified in a transaction are expected to reflect their state when calling other methods on the FeatureSource, such as spatial queries. | | {{wiki:PublicProperty.gif|Public Property}}[[#MaxRecordsToDraw|MaxRecordsToDraw]] | Int32 | | | | {{wiki:PublicProperty.gif|Public Property}}[[#Projection|Projection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property holds the projection object that is used within the FeatureSource to ensure that features inside of the FeatureSource are projected. | | {{wiki:PublicProperty.gif|Public Property}}[[#ReadWriteMode|ReadWriteMode]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | | | | {{wiki:PublicProperty.gif|Public Property}}[[#RequireIndex|RequireIndex]] | Boolean | | This property gets and sets the requirement of index when reading data. The default value is true. | | {{wiki:PublicProperty.gif|Public Property}}[[#ShapePathFileName|ShapePathFileName]] | String | | This property returns the path and file of the shape file you want to use. | | {{wiki:PublicProperty.gif|Public Property}}[[#TransactionBuffer|TransactionBuffer]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.TransactionBuffer|TransactionBuffer]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | The TransactionBuffer used in the Transaction System. | | {{wiki:PublicProperty.gif|Public Property}}[[#UsingSpatialIndex|UsingSpatialIndex]] | Boolean | | This property gets the shape file feature source with index or not. | ==== Protected Properties ==== ^ Name ^ Return ^ DeclaringType ^ Summary ^ | {{wiki:ProtectedProperty.gif|Protected Property}}[[#CanExecuteSqlQueryCore|CanExecuteSqlQueryCore]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]](overriden) | This property specifies the FeatureSource can excute sql query or not. If it is false, then it will throw exception when called the APIs:ExecuteScalar,ExecuteNonQuery,ExecuteQuery This orverides will make it true. | | {{wiki:ProtectedProperty.gif|Protected Property}}[[#FeatureSourceColumns|FeatureSourceColumns]] | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSourceColumn|FeatureSourceColumn]]> | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property gets the columns of the feature source. | | {{wiki:ProtectedProperty.gif|Protected Property}}[[#IsOpenCore|IsOpenCore]] | Boolean | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This property returns true if the FeatureSource is open and false if it is not. | ==== Public Events ==== ^ Name ^ Event Arguments ^ DeclaringType ^ Summary ^ | {{wiki:PublicEvent.gif|Public Event}}[[#BuildingIndex|BuildingIndex]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildingIndexShapeFileFeatureSourceEventArgs|BuildingIndexShapeFileFeatureSourceEventArgs]] | | This event will be fired each time a record was built the rtree index. You can choose to use this event to build the build index progess bar. | | {{wiki:PublicEvent.gif|Public Event}}[[#ClosedFeatureSource|ClosedFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosedFeatureSourceEventArgs|ClosedFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is called after the closing of the FeatureSource. | | {{wiki:PublicEvent.gif|Public Event}}[[#ClosingFeatureSource|ClosingFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosingFeatureSourceEventArgs|ClosingFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is called before the closing of the FeatureSource. | | {{wiki:PublicEvent.gif|Public Event}}[[#CommittedTransaction|CommittedTransaction]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittedTransactionEventArgs|CommittedTransactionEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is raised after the CommitTransaction and the CommitTransactionCore are called and allows you access to the TransactionBuffer and the TransactionResults object before CommitTransaction method is returned. | | {{wiki:PublicEvent.gif|Public Event}}[[#CommittingTransaction|CommittingTransaction]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittingTransactionEventArgs|CommittingTransactionEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is raised after the CommitTransaction method is called, but before the CommitTransactionCore is called. This allows you access to the TransactionBuffer before the transaction is committed. It also allows you to cancel the pending commit of the transaction. | | {{wiki:PublicEvent.gif|Public Event}}[[#CustomColumnFetch|CustomColumnFetch]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.CustomColumnFetchEventArgs|CustomColumnFetchEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is raised when fields are requested in a feature source method that do not exist in the feature source. It allows you to supplement the data from any outside source you have. | | {{wiki:PublicEvent.gif|Public Event}}[[#DrawingProgressChanged|DrawingProgressChanged]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | | | {{wiki:PublicEvent.gif|Public Event}}[[#OpenedFeatureSource|OpenedFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpenedFeatureSourceEventArgs|OpenedFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is called after the opening of the FeatureSource. | | {{wiki:PublicEvent.gif|Public Event}}[[#OpeningFeatureSource|OpeningFeatureSource]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpeningFeatureSourceEventArgs|OpeningFeatureSourceEventArgs]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSource|FeatureSource]] | This event is called before the opening of the FeatureSource. | | {{wiki:PublicEvent.gif|Public Event}}[[#StreamLoading|StreamLoading]] | [[ThinkGeo.MapSuite.WindowsPhoneCore.StreamLoadingEventArgs|StreamLoadingEventArgs]] | | | ===== Public Constructors ===== ==== ShapeFileFeatureSource() ==== This is the class constructor. === Overloads === This is the default constructor and requires you to set the properties after you create the class. === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Constructors|Go Back]] ==== ShapeFileFeatureSource(String) ==== This is the class constructor. === Overloads === This constructor allows you to pass in a path and file name to the shape file. === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter represents the path and file name to the .shp file. | [[#Public Constructors|Go Back]] ==== ShapeFileFeatureSource(String, ShapeFileReadWriteMode) ==== This is the class constructor. === Overloads === This constructor allows you to pass in a path, file name and files access mode to the shape file. === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter represents the path and file name to the .shp file. | | readWriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | This parameters represents the mode that we will open the file in. | [[#Public Constructors|Go Back]] ==== ShapeFileFeatureSource(String, String) ==== This is a constructor for the class. === Overloads === This constructor allows you to specify the shape file and the index file to use. === Remarks === This constructor allows you to specify the shape file and the index file to use. In some cases you may want to build custom index files or want the index file to have a different name that the shape file. === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name you want to load. | | indexPathFilename | String | This parameter is the index file you want to use. | [[#Public Constructors|Go Back]] ==== ShapeFileFeatureSource(String, String, ShapeFileReadWriteMode) ==== This is a constructor for the class. === Overloads === This constructor allows you to specify the shape file and the index file to use along with the read and write level. === Remarks === This constructor allows you to specify the shape file and the index file to use. In some cases you may want to build custom index files or want the index file to have a different name that the shape file. It also allows you to specify is you want to open the files for read or read and write. You will need to open the file for read and write if you plan on doing any editing to the files. === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name you want to load. | | indexPathFilename | String | This parameter is the index file you want to use. | | readWriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | This parameter reflects if you want to open shape file and index for read or read write mode. | [[#Public Constructors|Go Back]] ==== ShapeFileFeatureSource(String, String, ShapeFileReadWriteMode, Encoding) ==== This is a constructor for the class. === Overloads === This constructor allows you to specify the shape file and the index file to use along with the read and write level. === Remarks === This constructor allows you to specify the shape file and the index file to use. In some cases you may want to build custom index files or want the index file to have a different name that the shape file. It also allows you to specify is you want to open the files for read or read and write. You will need to open the file for read and write if you plan on doing any editing to the files. === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name you want to load. | | indexPathFilename | String | This parameter is the index file you want to use. | | readWriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | This parameter reflects if you want to open shape file and index for read or read write mode. | | encoding | Encoding | The encoding to read and write the dbf file. | [[#Public Constructors|Go Back]] ===== Protected Constructors ===== ===== Public Methods ===== ==== AddColumnBoolean(String) ==== This method adds a new Boolean column to the DBF file associated with the shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | [[#Public Methods|Go Back]] ==== AddColumnDate(String) ==== This method adds a new Date column to the DBF file associated with the shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | [[#Public Methods|Go Back]] ==== AddColumnDouble(String, Int32, Int32) ==== This method adds a new Double column to the DBF file associated with the shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | | totalLength | Int32 | This is the total length of the field including both the digits to the left and right of the decimal point. | | precisionLength | Int32 | This parameter specifies how many digits after the decimal point you need to support. | [[#Public Methods|Go Back]] ==== AddColumnInteger(String, Int32) ==== This method adds a new Integer column to the DBF file associated with the shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | | length | Int32 | This parameter specifies the length of the integer. | [[#Public Methods|Go Back]] ==== AddColumnMemo(String, Int32) ==== This method adds a new Memo column to the DBF file associated with the shape file. === Overloads === This constructor allows you to specify the column name and the memoPointerLength. === Remarks === This method adds a new Memo column to the DBF file associated with the shape file. Internally the DBF holds an integer column that is a pointer to the data in the memo file. The pointer is measured in 512 byte chunks. Our default decimalDegreesValue for the size of the pointer column is 10 which means you can have 9,999,999,999 pointers to the 512 byte blocks. The ramification of this is that if you have more than this many records and each record uses more than 512 bytes as part of its memo then there will not be enough space for storage. Conversely if you know you have few records then you can decrease this number. A good rule of thumb is to multiply the number of records by the number of 512 byte chunks you expect each record to use and then get the resulting number of digits resulting for the multiplication. Example You have 1,000,000 records and expect to have 4K, 8 chunks of 512 bytes, of memo data for each record. This means you will use multiple 1,000,000 * 8 which is 8,000,000 and then total the number of digits which in this case is 7. Assuming the numbers above a length of 7 will support your needs. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | | memoValueLength | Int32 | This parameter is the number of digits you need to hold the pointers to the data in the memo file. | [[#Public Methods|Go Back]] ==== AddColumnMemo(String) ==== This method adds a new Memo column to the DBF file associated with the shape file. === Overloads === This constructor allows you to specify the column name and uses 10 for the memoPointerLength. === Remarks === This method adds a new Memo column to the DBF file associated with the shape file. Internally the DBF holds an integer column that is a pointer to the data in the memo file. The pointer is measured in 512 byte chunks. Our default decimalDegreesValue for the size of the pointer column is 10 which means you can have 9,999,999,999 pointers to the 512 byte blocks. The ramification of this is that if you have more than this many records and each record uses more then 512 bytes as part of its memo then there will not be enough space for storage. If you have special needs for this please use the other overload that allows you to specify the number of digits you can use for the pointer. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | [[#Public Methods|Go Back]] ==== AddColumnString(String, Int32) ==== This method adds a new String column to the DBF file associated with the shape file. === Remarks === This method adds a new String column to the DBF file associated with the shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | This parameter is the column you want to add. | | length | Int32 | This parameter is the number of characters that the string can hold. | [[#Public Methods|Go Back]] ==== AddFeature(Feature) ==== This method adds a new Feature to an existing transaction. === Remarks === This method adds a new Feature to an existing transaction. You will need to ensure that you have started a transaction by calling BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | String | This string is the ID that will uniquely identify this Feature while it is in a transaction. | === Parameters === ^ Name ^ Type ^ Description ^ | feature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter represents the new Feature that will be added to the transaction. | [[#Public Methods|Go Back]] ==== AddFeature(BaseShape) ==== This method adds a new Feature (composed of the passed-in BaseShape) to an existing transaction. === Remarks === This method adds a new Feature (composed of the passed-in BaseShape) to an existing transaction. You will need to ensure that you have started a transaction by calling BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | String | This string is the ID that will uniquely identify this Feature while it is in a transaction. | === Parameters === ^ Name ^ Type ^ Description ^ | shape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter represents the BaseShape that will be used to make the new Feature that will be added to the transaction. | [[#Public Methods|Go Back]] ==== AddFeature(BaseShape, IDictionary) ==== This method adds a new Feature composes of the passed in BaseShape to an existing transaction. === Remarks === This method adds a new Feature (composed of the passed-in BaseShape) to an existing transaction. You will need to ensure that you have started a transaction by calling the BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | String | This string is the ID that will uniquely identify this Feature while it is in a transaction. | === Parameters === ^ Name ^ Type ^ Description ^ | shape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter represents the BaseShape that will be used to make new Feature that will be added to the transaction. | | columnValues | IDictionary | This parameter represents the columnValues for the new features taht will be added to the transaction. | [[#Public Methods|Go Back]] ==== BeginTransaction() ==== This method starts a new transaction if the FeasuteSource allows editing === Remarks === This method is used to start a transaction, assuming that the FeatureSource allows editing. There are some additional prerequisites to beginning a transaction, such as ensuring that a transaction is not already in progress. You must also be sure that the FeatureSource has been opened. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== BuildIndexFile(String, String, BuildIndexMode) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the same name as the shape file with only the extension being different. You can also specify if you want to rebuild an existing index file. === Remarks === This overload builds an index file with the same name as the shape file with only the extension being different. You can also specify if you want to rebuild an existing index file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(IEnumerable, String, Projection, BuildIndexMode) ==== This method build a spatial index for a passed group of featurs which increases access speed. === Overloads === This overload builds an index file with the specified index file name for a group of passed in features. === Remarks === This overload builds an index file with the specified index file name for a group of passed in features. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | features | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This parameter specifies the target group of features that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | projection | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | This parameter specifies the projection used to build index file. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(String) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the same name as the shape file with only the extension being different. It will not do a rebuild if there is an existing index. === Remarks === This overload builds an index file with the same name as the shape file with only the extension being different. It will not do a rebuild if there is an existing index. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | [[#Public Methods|Go Back]] ==== BuildIndexFile(String, String, Projection, String, String, BuildIndexMode, Encoding) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression,besides this, this overloads will pass in a target index projection. You can also specify if you want to rebuild an existing index file. === Remarks === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression. You can also specify if you want to rebuild an existing index file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | projection | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | This parameter specifies the projection used to build index file. | | columnName | String | The columnName to be used to get the value to match the regex expression. | | regularExpression | String | This parameter specifies the regular expression pattern to filter out thoese records to build index with. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | | encoding | Encoding | This parameter determines the Enconding system used in the dbf, and this will be used if the dbf is encoded in a different encoding with default. | [[#Public Methods|Go Back]] ==== BuildIndexFile(String, String, Projection, String, String, BuildIndexMode) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression,besides this, this overloads will pass in a target index projection. You can also specify if you want to rebuild an existing index file. === Remarks === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression. You can also specify if you want to rebuild an existing index file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | projection | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | This parameter specifies the projection used to build index file. | | columnName | String | The columnName to be used to get the value to match the regex expression. | | regularExpression | String | This parameter specifies the regex expression to filter out thoese records to build index with. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(IEnumerable, String) ==== This method build a spatial index for a passed group of featurs which increases access speed. === Overloads === This overload builds an index file with the specified index file name for a group of passed in features. === Remarks === This overload builds an index file with the specified index file name for a group of passed in features. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | features | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This parameter specifies the target group of features that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | [[#Public Methods|Go Back]] ==== BuildIndexFile(IEnumerable, String, Projection) ==== This method build a spatial index for a passed group of featurs using the specified projection which increases access speed. === Overloads === This overload builds an index file with the specified index file name for a group of passed in features. === Remarks === This overload builds an index file with the specified index file name for a group of passed in features. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | features | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This parameter specifies the target group of features that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | projection | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | This parameter specifies the projection used to build index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(String, String, String, String, BuildIndexMode) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression. You can also specify if you want to rebuild an existing index file. === Remarks === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression. You can also specify if you want to rebuild an existing index file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | columnName | String | The columnName to be used to get the value to match the regex expression. | | regularExpression | String | This parameter specifies the regex expression to filter out thoese records to build index with. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(String, String, Projection, BuildIndexMode) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression,besides this, this overloads will pass in a target index projection. You can also specify if you want to rebuild an existing index file. === Remarks === This overload builds an index file with the specified index file name and only build Index for those records satisfied the regularExpression. You can also specify if you want to rebuild an existing index file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | projection | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | This parameter specifies the projection used to build index file. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(String, BuildIndexMode) ==== This method build a spatial index for the shape file which increases access speed. === Overloads === This overload builds an index file with the same name as the shape file with only the extension being different. You can also specify if you want to rebuild an existing index file. === Remarks === This overload builds an index file with the same name as the shape file with only the extension being different. You can also specify if you want to rebuild an existing index file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file name and path that you want to build an index for. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildIndexFile(IEnumerable, String, BuildIndexMode) ==== This method build a spatial index for a passed group of featurs which increases access speed. === Overloads === This overload builds an index file with the specified index file name for a group of passed in features. === Remarks === This overload builds an index file with the specified index file name for a group of passed in features. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | features | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This parameter specifies the target group of features that you want to build an index for. | | indexPathFilename | String | This parameter specifies the index file name. | | buildIndexMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildIndexMode|BuildIndexMode]] | This parameter determines what will happen if there is an existing index file. | [[#Public Methods|Go Back]] ==== BuildRecordIdColumn(String, String, BuildRecordIdMode, Int32, Encoding) ==== Static API used to build RecordId from the specified starting id number. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapeFilename | String | The target shape file name to build record id based on. | | fieldname | String | The fild name for the record id. | | rebuildNeeded | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildRecordIdMode|BuildRecordIdMode]] | The build record id mode. | | startNumber | Int32 | The starting id number of the record id. | | encoding | Encoding | This parameter specified the encoding information in dbf. | [[#Public Methods|Go Back]] ==== BuildRecordIdColumn(String, String, BuildRecordIdMode) ==== Static API used to build RecordId, the id should start from 0 by default. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapeFilename | String | The target shape file name to build record id based on. | | fieldname | String | The fild name for the record id. | | rebuildNeeded | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildRecordIdMode|BuildRecordIdMode]] | The build record id mode. | [[#Public Methods|Go Back]] ==== BuildRecordIdColumn(String, String, BuildRecordIdMode, Int32) ==== Static API used to build RecordId from the specified starting id number. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapeFilename | String | The target shape file name to build record id based on. | | fieldname | String | The fild name for the record id. | | rebuildNeeded | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildRecordIdMode|BuildRecordIdMode]] | The build record id mode. | | startNumber | Int32 | The starting id number of the record id. | [[#Public Methods|Go Back]] ==== CloneShapeFileStructure(String, String, OverwriteMode, Encoding) ==== Clone out the structure from the source shape file to the target shape file. After cloning the structure, the targetShapeFile has the same type and same dbf columns with the source shape file but without any records in it. === Remarks === Exception will be thown when the target shape file not extis while the override mode is set to DoNotOverwrite. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | sourceShapePathFilename | String | The source shape file to be cloned. | | targetShapePathFilename | String | The target shape file with same structure with the source one after the structure cloned. | | overwriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | This parameter specifies the override mode when the target shape file exists. | | encoding | Encoding | This parameter specifies the encoding information in the source shape file. | [[#Public Methods|Go Back]] ==== CloneShapeFileStructure(String, String, OverwriteMode) ==== Clone out the structure from the source shape file to the target shape file. After cloning the structure, the targetShapeFile has the same type and same dbf columns with the source shape file but without any records in it. === Remarks === Exception will be thown when the target shape file not extis while the override mode is set to DoNotOverwrite. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | sourceShapePathFilename | String | The source shape file to be cloned. | | targetShapePathFilename | String | The target shape file with same structure with the source one after the structure cloned. | | overwriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | This parameter specifies the override mode when the target shape file exists. | [[#Public Methods|Go Back]] ==== CloneShapeFileStructure(String, String) ==== Clone out the structure from the source shape file to the target shape file. After cloning the structure, the targetShapeFile has the same type and same dbf columns with the source shape file but without any records in it. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | sourceShapePathFilename | String | The source shape file to be cloned. | | targetShapePathFilename | String | The target shape file with same structure with the source one after the structure cloned. | [[#Public Methods|Go Back]] ==== Close() ==== This method closes the FeatureSource and releases any resources it was using. === Remarks === This method is the concrete wrapper for the abstract method CloseCore. The Close method plays an important role in the life cycle of the FeatureSource. It may be called after drawing to release any memory and other resources that were allocated since the Open method was called. If you override the Core version of this method, it is recommended that you take the following things into account: This method may be called multiple times, so we suggest you write the method so that that a call to a closed FeatureSource is ignored and does not generate an error. We also suggest that in the Close you free all resources that have been opened. Remember that the object will not be destroyed, but will be re-opened possibly in the near future. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== CommitTransaction() ==== This method will commit the existing transaction to its underlying source of data. === Remarks === This method is the concrete wrapper for the virtual method CommitTransactionCore. As this is the concrete version, the real work is done in the Core version of the method. It will commit the existing transaction to its underlying source of data. It will then pass back the results of the commit, including any error(s) received. Lastly, it will free up the internal memory cache of any InternalFeatures added, updated or deleted. You will need to ensure that you have started a transaction by calling BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.TransactionResult|TransactionResult]] | The returned 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 errors that were encountered during the committing of the transaction. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== CreateShapeFile(ShapeFileType, String, IEnumerable, Encoding) ==== Static API to create a new shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapeType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]] | This parameter specifies the the shape file type for the target shape file. | | pathFilename | String | This parameter specifies the shape file name for the target shape file. | | databaseColumns | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]> | This parameter specifies the dbf column information for the target shape file. | | encoding | Encoding | This parameter specifies the dbf encoding infromation for the target shape file. | [[#Public Methods|Go Back]] ==== CreateShapeFile(ShapeFileType, String, IEnumerable) ==== Static API to create a new shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapeType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]] | This parameter specifies the the shape file type for the target shape file. | | pathFilename | String | This parameter specifies the shape file name for the target shape file. | | databaseColumns | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]> | This parameter specifies the dbf column information for the target shape file. | [[#Public Methods|Go Back]] ==== CreateShapeFile(ShapeFileType, String, IEnumerable, Encoding, OverwriteMode) ==== Static API to create a new shape file. === Remarks === Exception will be thown when the target shape file exist while the override mode is set to DoNotOverwrite. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapeType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]] | This parameter specifies the the shape file type for the target shape file. | | pathFilename | String | This parameter specifies the shape file name for the target shape file. | | databaseColumns | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]> | This parameter specifies the dbf column information for the target shape file. | | encoding | Encoding | This parameter specifies the dbf encoding infromation for the target shape file. | | overwriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | This parameter specifies the override mode when the target shape file exists. | [[#Public Methods|Go Back]] ==== DeleteFeature(String) ==== This method deletes a Feature from an existing transaction. === Remarks === This method deletes a Feature from an existing transaction. You will need to ensure that you have started a transaction by calling the BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This string is the Id of the feature in the FeatureSource you wish to delete. | [[#Public Methods|Go Back]] ==== Equals(Object) ==== === Return Value === ^ Return Type ^ Description ^ | Boolean | | === Parameters === ^ Name ^ Type ^ Description ^ | obj | Object | | [[#Public Methods|Go Back]] ==== ExecuteNonQuery(String) ==== Executes a SQL statement against a connection object. === Remarks === You can use ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database by executing UPDATE, INSERT, or DELETE statements. Although ExecuteNonQuery does not return any rows, any output parameters or return values mapped to parameters are populated with data. For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. === Return Value === ^ Return Type ^ Description ^ | Int32 | The number of rows affected. | === Parameters === ^ Name ^ Type ^ Description ^ | sqlStatement | String | The sqlStatement to be excuted. | [[#Public Methods|Go Back]] ==== GetAllFeatures(IEnumerable) ==== This method returns all of the InternalFeatures in the FeatureSource. === Remarks === This method returns all of the InternalFeatures in the FeatureSource. It will return whatever is returned by the GetAllFeaturesCore method, along with any of the additions or subtractions made if you are in a transaction and that transaction is configured to be live. The main purpose of this method is to be the anchor of all of our default virtual implementations within this class. We as the framework developers wanted 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, let's say 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 of the records, then we can brute-force the answer. In this way, if you inherited from 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: namely, it is very inefficient. In the example 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 faster. For example, in Oracle Spatial there is a specific SQL statement to perform 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. This will ensure that nearly every other API will operate efficiently. Please see the specific API to determine what method it uses. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of all of the InternalFeatures in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetAllFeatures(ReturningColumnsType) ==== This method returns all of the InternalFeatures in the FeatureSource. === Remarks === This method returns all of the InternalFeatures in the FeatureSource. It will return whatever is returned by the GetAllFeaturesCore method, along with any of the additions or subtractions made if you are in a transaction and that transaction is configured to be live. The main purpose of this method is to be the anchor of all of our default virtual implementations within this class. We as the framework developers wanted 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, let's say 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 of the records, then we can brute-force the answer. In this way, if you inherited from 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: namely, it is very inefficient. In the example 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 faster. For example, in Oracle Spatial there is a specific SQL statement to perform 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. This will ensure that nearly every other API will operate efficiently. Please see the specific API to determine what method it uses. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of all of the InternalFeatures in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetBoundingBox() ==== This method returns the bounding box which encompasses all of the features in the FeatureSource. === Remarks === This method is the concrete wrapper for the virtual method GetBoundingBoxCore. It will return whatever is returned by the GetBoundingBoxCore method, along with any additions or subtractions made if you are in a transaction and that transaction is configured to be live. To determine what the default implementation of the abstract GetBoundingBoxCore method is, please see the documentation for it. The default implementation of GetBoundingBoxCore uses the GetAllRecordsCore method to calculate the bounding box of the FeatureSource. We strongly recommend that you provide your own implementation for this method that will be more efficient. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This method returns the bounding box which encompasses all of the features in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetBoundingBoxById(String) ==== This method returns a bounding box based on the InternalFeatures Id specified. === Remarks === This method returns a bounding box by providing an Id. The internal implementation calls the GetFeaturesByIdsCore and only passes one Id in the collection. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, then we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This method returns a bounding box based on the InternalFeatures Id specified. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter represents the Id for the InternalFeatures whose bounding box you want. | [[#Public Methods|Go Back]] ==== GetBoundingBoxByIds(IEnumerable) ==== This method returns a collection of bounding boxes based on the Feature Ids specified. === Remarks === This method returns a bounding boxes by providing a goupd of Ids. The internal implementation calls the GetFeaturesByIdsCore. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, then we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This method returns a collection of bounding boxes based on the Feature Ids specified. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter represents the group of Ids for the InternalFeatures whose bounding boxes you want. | [[#Public Methods|Go Back]] ==== GetBoundingBoxesByIds(IEnumerable) ==== This method returns a collection of bounding boxes based on the Feature Ids specified. === Remarks === This method returns a bounding boxes by providing a goupd of Ids. The internal implementation calls the GetFeaturesByIdsCore. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, then we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | This method returns a collection of bounding boxes based on the Feature Ids specified. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter represents the group of Ids for the InternalFeatures whose bounding boxes you want. | [[#Public Methods|Go Back]] ==== GetColumns() ==== This method returns the columns available for the FeatureSource and caches them. === Remarks === As this is the concrete method wrapping the GetColumnsCore, it is important to note that this method will cache the results to GetColumnsCore. What this means is that the first time this method is called it will call GetCollumnsCore, which is protected, and cache the results. The next time this method is called it will not call GetColumnsCore again. This was done to increase speed, as this is a critical method that is used very often in the internal code of the class. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSourceColumn|FeatureSourceColumn]]> | This method returns the columns available for the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetCount() ==== This method returns the count of the number of records in this FeatureSource. === Remarks === This method is the concrete wrapper for the virtual method GetCountCore. It will return whatever is returned by the GetCountCore method, along with any additions or subtractions made if you are in a transaction and that transaction is configured to be live. To determine what the default implementation of the abstract GetCountCore method is, please see the documentation for it. 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. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Int32 | This method returns the count of the number of records in this FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetDataFromDbf(IEnumerable, ReturningColumnsType) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in a group of Ids and a returning columnNames. === Remarks === This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Collection> | This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter is the Ids of the Features you want. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter is the returning column type of the Features you want. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(IEnumerable) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in a group of Ids and return all of the DBF column for those Features. === Remarks === This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Collection> | This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter is the Ids of the Features you want. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(IEnumerable, String) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in a group of Ids and a returning columnName. === Remarks === This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Collection> | This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter is the Ids of the Features you want. | | columnName | String | This parameter is the returning columnName of the Features you want. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(IEnumerable, IEnumerable) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in a group of Ids and a returning columnNames. === Remarks === This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Collection> | This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter is the Ids of the Features you want. | | columnNames | IEnumerable | This parameter is the returning columnNames of the Features you want. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(String, ReturningColumnsType) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in an Id and specified returning columns for that Feature. === Remarks === This method returns a dictionary holding all of the values from the DBF for the Id you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Dictionary | This method returns a dictionary holding all of the values from the DBF for the Id you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id of the Feature you want. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter is the returningColumnType specified for the returning data. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(String, IEnumerable) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in an Id and specified returning columns for that Feature. === Remarks === This method returns a dictionary holding all of the values from the DBF for the Id you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Dictionary | This method returns a dictionary holding all of the values from the DBF for the Id you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id of the Feature you want. | | returningColumnNames | IEnumerable | This parameter is the returning columns specified for the returning data. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(String, String) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to passing an Id and a column name. === Remarks === This method gets data directly from the DBF file associated with the shape file. When you specify the Id and column name it will get the decimalDegreesValue from the DBF. === Return Value === ^ Return Type ^ Description ^ | String | This method gets data directly from the DBF file associated with the shape file. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id for the Feature you want to find. | | columnName | String | This parameter is the column name you want to return. | [[#Public Methods|Go Back]] ==== GetDataFromDbf(String) ==== This method gets data directly from the DBF file associated with the shape file. === Overloads === This overload allows you to pass in an Id and return all of the DBF column for that Feature. === Remarks === This method returns a dictionary holding all of the values from the DBF for the Id you specified. In the dictionary the key is the column name and values are the values from the DBF. === Return Value === ^ Return Type ^ Description ^ | Dictionary | This method returns a dictionary holding all of the values from the DBF for the Id you specified. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id of the Feature you want. | [[#Public Methods|Go Back]] ==== GetDbfColumns() ==== Get the dbf columns out from the shape file featureSource. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.DbfColumn|DbfColumn]]> | The dbfColumns in the shape file FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetFeatureById(String, ReturningColumnsType) ==== This method returns a Feature by providing its Id in the FeatureSource. === Remarks === This method returns a collection of InternalFeatures by providing a group of Ids. The internal implementation calls the GetFeaturesByIdsCore and only passes one Id in the collection. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, then we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This method returns a Feature by providing its Id in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id which uniquely identifies it in the FeatureSource. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeatureById(String, IEnumerable) ==== This method returns a Feature by providing its Id in the FeatureSource. === Remarks === This method returns a collection of InternalFeatures by providing a group of Ids. The internal implementation calls the GetFeaturesByIdsCore and only passes one Id in the collection. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This method returns a Feature by providing its Id in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id which uniquely identifies it in the FeatureSource. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesByColumnValue(String, String) ==== Get all of the features by passing a columnName and a specified columValue. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returnning features matches the columnValue. | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | The specified columnName to match the columnValue. | | columnValue | String | The specified columnValue to match those returning features. | [[#Public Methods|Go Back]] ==== GetFeaturesByColumnValue(String, String, IEnumerable) ==== Get all of the features by passing a columnName and a specified columValue. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returnning features matches the columnValue. | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | The specified columnName to match the columnValue. | | columnValue | String | The specified columnValue to match those returning features. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesByColumnValue(String, String, ReturningColumnsType) ==== Get all of the features by passing a columnName and a specified columValue. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returnning features matches the columnValue. | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | The specified columnName to match the columnValue. | | columnValue | String | The specified columnValue to match those returning features. | | returningColumnType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesByIds(IEnumerable, ReturningColumnsType) ==== This method returns a collection of InternalFeatures by providing a group of Ids. === Remarks === This method returns a collection of InternalFeatures by providing a group of Ids. The internal implementation calls the GetFeaturesByIdsCore. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, then we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures by providing a group of Ids. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter represents the group of Ids which uniquely identifies the InternalFeatures in the FeatureSource. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesByIds(IEnumerable, IEnumerable) ==== This method returns a collection of InternalFeatures by providing a group of Ids. === Remarks === This method returns a collection of InternalFeatures by providing a group of Ids. The internal implementation calls the GetFeaturesByIdsCore. That method in turn calls the GetAllFeaturesCore. Because of this, if you want a more efficient version of this method, then we highly suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures by providing a group of Ids. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter represents the group of Ids which uniquely identifies the InternalFeatures in the FeatureSource. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesForDrawing(RectangleShape, Double, Double, IEnumerable) ==== This method returns the InternalFeatures that will be used for drawing. === Remarks === This method returns all of the InternalFeatures of this FeatureSource that are inside 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 GetFeaturesForDrawing uses the GetFeaturesInsodeBoundingBoxCore with some optimizations based on the screen width and height. For example, we can determine if a feature is going to draw in only one to four pixels and in that case we may not draw the entire feature but just a subset of it instead. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns the InternalFeatures that will be used for drawing. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter is the bounding box of the InternalFeatures you want to draw. | | screenWidth | Double | This parameter is the width of the canvas, in screen pixels, that you will draw on. | | screenHeight | Double | This parameter is the height of the canvas, in screen pixels, that you will draw on. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesForDrawing(RectangleShape, Double, Double, ReturningColumnsType) ==== This method returns the InternalFeatures that will be used for drawing. === Remarks === This method returns all of the InternalFeatures of this FeatureSource that are inside 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 GetFeaturesForDrawing uses the GetFeaturesInsodeBoundingBoxCore with some optimizations based on the screen width and height. For example, we can determine if a feature is going to draw in only one to four pixels and in that case we may not draw the entire feature but just a subset of it instead. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns the InternalFeatures that will be used for drawing. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter is the bounding box of the InternalFeatures that you want to draw. | | screenWidth | Double | This parameter is the width of the canvas, in screen pixels, that you will draw on. | | screenHeight | Double | This parameter is the height of the canvas, in screen pixels, that you will draw on. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesInsideBoundingBox(RectangleShape, ReturningColumnsType) ==== This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box. === Remarks === This method returns all of the InternalFeatures of this FeatureSource inside 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 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. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of all of the InternalFeatures that are inside of the bounding box. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the bounding box that you wish to find InternalFeatures inside of. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesInsideBoundingBox(RectangleShape, IEnumerable) ==== This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box. === Remarks === This method returns all of the InternalFeatures of this FeatureSource inside 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 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 recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of all of the InternalFeatures that are inside of the bounding box. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the bounding box that you wish to find InternalFeatures inside of. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesNearestTo(Feature, GeographyUnit, Int32, IEnumerable) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetFeature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter is the feature you want to find InternalFeatures close to. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesNearestTo(BaseShape, GeographyUnit, Int32, IEnumerable) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter is the shape you want to find InternalFeatures close to. | | unitOfFeatureSource | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesNearestTo(Feature, GeographyUnit, Int32, ReturningColumnsType) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetFeature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter is the target feature you want to find InternalFeatures close to. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesNearestTo(Feature, GeographyUnit, Int32, IEnumerable, Double, DistanceUnit) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetFeature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter is feature you want to find InternalFeatures close to. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | | searchRadius | Double | Limit the maximize distance proximately to search closest records. | | unitOfSearchRadius | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | The unit of distanceLimits parameter. | [[#Public Methods|Go Back]] ==== GetFeaturesNearestTo(BaseShape, GeographyUnit, Int32, IEnumerable, Double, DistanceUnit) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter is the shape you want to find InternalFeatures close to. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | | searchRadius | Double | Limit the maximize distance proximately to search closest records. | | unitOfSearchRadius | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | The unit of distanceLimits parameter. | [[#Public Methods|Go Back]] ==== GetFeaturesNearestTo(BaseShape, GeographyUnit, Int32, ReturningColumnsType) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter is the shape you want to find InternalFeatures close to. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesOutsideBoundingBox(RectangleShape, IEnumerable) ==== This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. === 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. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the bounding box that you wish to find InternalFeatures outside of. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesOutsideBoundingBox(RectangleShape, ReturningColumnsType) ==== This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. === 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. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the bounding box that you wish to find InternalFeatures outside of. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesWithinDistanceOf(Feature, GeographyUnit, DistanceUnit, Double, ReturningColumnsType) ==== This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. === Remarks === This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a bounding box around the TargetShape using the distance supplied and then queries the features inside of it. This may not be the most efficient method for this operation. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesWithinDistanceOfCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetFeature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | The feature you wish to find InternalFeatures within a distance of. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of data that the FeatureSource and TargetShape are in. | | distanceUnit | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | This parameter specifies the measurement unit for the distance parameter, such as feet, miles, kilometers, etc. | | distance | Double | This parameter specifies the distance in which to find InternalFeatures around the TargetShape. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesWithinDistanceOf(BaseShape, GeographyUnit, DistanceUnit, Double, ReturningColumnsType) ==== This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. === Remarks === This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a bounding box around the TargetShape using the distance supplied and then queries the features inside of it. This may not be the most efficient method for this operation. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesWithinDistanceOfCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | The shape you wish to find InternalFeatures within a distance of. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of data that the FeatureSource and TargetShape are in. | | distanceUnit | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | This parameter specifies the measurement unit for the distance parameter, such as feet, miles, kilometers, etc. | | distance | Double | This parameter specifies the distance in which to find InternalFeatures around the TargetShape. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesWithinDistanceOf(Feature, GeographyUnit, DistanceUnit, Double, IEnumerable) ==== This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. === Remarks === This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a bounding box around the TargetShape using the distance supplied and then queries the features inside of it. This may not be the most efficient method for this operation. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesWithinDistanceOfCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetFeature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | The feature you wish to find InternalFeatures within a distance of. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of data that the FeatureSource and TargetShape are in. | | distanceUnit | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | This parameter specifies the measurement unit for the distance parameter, such as feet, miles, kilometers, etc. | | distance | Double | This parameter specifies the distance in which to find InternalFeatures around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFeaturesWithinDistanceOf(BaseShape, GeographyUnit, DistanceUnit, Double, IEnumerable) ==== This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. === Remarks === This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a bounding box around the TargetShape using the distance supplied and then queries the features inside of it. This may not be the most efficient method for this operation. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesWithinDistanceOfCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | The shape you wish to find InternalFeatures within a distance of. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of data that the FeatureSource and TargetShape are in. | | distanceUnit | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | This parameter specifies the measurement unit for the distance parameter, such as feet, miles, kilometers, etc. | | distance | Double | This parameter specifies the distance in which to find InternalFeatures around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== GetFirstFeaturesWellKnownType() ==== This method returns the well known type that represents the first feature from FeatureSource. === Remarks === This method is the concrete wrapper for the virtual method GetFirstFeaturesWellKnownTypeCore. It will return whatever is returned by the GetFirstFeaturesWellKnownTypeCore method, along with any additions or subtractions made if you are in a transaction and that transaction is configured to be live. To determine what the default implementation of the abstract GetCountCore method is, please see the documentation for it. The default implementation of GetFirstFeaturesWellKnownTypeCore uses the GetAllFeaturesCore method to get WellKnownType of the first feature from all features. We strongly recommend that you provide your own implementation for this method that will be more efficient. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.WellKnownType|WellKnownType]] | This method returns the well known type that represents the first feature from FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetHashCode() ==== === Return Value === ^ Return Type ^ Description ^ | Int32 | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetShapeFileType() ==== Get shape file type for the shape file featureSource. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileType|ShapeFileType]] | The shapeFileType for the ShapeFileFeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== GetType() ==== === Return Value === ^ Return Type ^ Description ^ | Type | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== Open() ==== This method opens the FeatureSource so that it is initialized and ready to use. === Remarks === This method is the concrete wrapper for the abstract method OpenCore. The Open method plays an important role, as it is responsible for initializing the FeatureSource. Most methods on the FeatureSource will throw an exception if the state of the FeatureSource is not opened. When the map draws each layer, it will open the FeatureSource as one of its first steps, then after it is finished drawing with that layer it will close it. In this way we are sure to release all resources used by the FeatureSource. When implementing the abstract method, consider opening files for file-based sources, connecting to databases in the database-based sources and so on. You will get a chance to close these in the Close method of the FeatureSource. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== Rebuild(String) ==== This method rebuilds the SHP, SHX, DBF, IDX and IDS files for the given shape file. === Remarks === This method rebuilds the SHP, SHX, DBF, IDX and IDS files for the given shape file. When we do editing we have optimized the updates so that we do not need to rebuild the entire shape file. This leads to the shape file being out of order which may cause it not to open in other tools. One optimization is if you update a record instead of rebuilding a new shape file we mark the old record as null and add the edited record at the end of the shape file. This greatly increases the speed of committing shape file changes but will over time unorder the shape file. In addition we do a delete the DBF file will simply mark the record deleted and not compact the space. Rebuilding the shape file will correctly order the SPX and SHX along with compacting the DBF file and rebuild any index with the same any of the shape file if it exists. Note that if you have build custom index files where the name of the index differs from that of the shape file you will need to rebuild those manually using the BuildIndex methods. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shapePathFilename | String | This parameter is the shape file you want to rebuild. | [[#Public Methods|Go Back]] ==== RefreshColumns() ==== This method refresh the columns available for the FeatureSource and caches them. === Return Value === ^ Return Type ^ Description ^ | Void | This method refresh the columns available for the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== RollbackTransaction() ==== This method will cancel an existing transaction. It will free up the internal memory cache of any InternalFeatures added, updated or deleted. === Remarks === This method will cancel an existing transaction. It will free up the internal memory cache of any InternalFeatures added, updated or deleted. You will need to ensure that you have started a transaction by calling BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== SaveToProjection(String, String, Projection, OverwriteMode) ==== This API provide a easy way to project features in a shape file into another projection and save it to shape file. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | sourceShapeFile | String | This parameter specifies the source shape file to be projected. | | targetShapeFile | String | This parameter specifies the target shape file to be saved for the projected features. | | projection | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | This parameter is the projection to project the source shape file to target shape file. The source Shape file should be in the FromProjection of the Projection prameter, and the targetShapeFile will be in the ToProjection of the Projection. | | overwriteMode | [[ThinkGeo.MapSuite.WindowsPhoneCore.OverwriteMode|OverwriteMode]] | This parameter specifies the override mode when the target shape file exists. | [[#Public Methods|Go Back]] ==== SpatialQuery(Feature, QueryType, IEnumerable) ==== This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. === Remarks === This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified below. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. Spatial Query Types: Disjoint - This method returns InternalFeatures where the specific Feature and the targetShape have no points in common. Intersects - This method returns InternalFeatures where the specific Feature and the targetShape have at least one point in common. Touches - This method returns InternalFeatures where the specific Feature and the targetShape have at least one boundary point in common, but no interior points. Crosses - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all interior points. Within - This method returns InternalFeatures where the specific Feature lies within the interior of the targetShape. Contains - This method returns InternalFeatures where the specific Feature lies within the interior of the current shape. Overlaps - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all points in common. TopologicalEqual - This method returns InternalFeatures where the specific Feature and the target Shape are topologically equal. The default implementation of SpatialQueryCore uses the GetFeaturesInsideBoundingBoxCore method to pre-filter the spatial query. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override this method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of InternalFeatures that match the spatial query you executed based on the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | feature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter specifies the target feature used in the spatial query. | | queryType | [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]] | This parameter specifies what kind of spatial query you wish to perform. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== SpatialQuery(Feature, QueryType, ReturningColumnsType) ==== This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. === Remarks === This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified below. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. Spatial Query Types: Disjoint - This method returns InternalFeatures where the specific Feature and the targetShape have no points in common. Intersects - This method returns InternalFeatures where the specific Feature and the targetShape have at least one point in common. Touches - This method returns InternalFeatures where the specific Feature and the targetShape have at least one boundary point in common, but no interior points. Crosses - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all interior points. Within - This method returns InternalFeatures where the specific Feature lies within the interior of the targetShape. Contains - This method returns InternalFeatures where the specific Feature lies within the interior of the current shape. Overlaps - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all points in common. TopologicalEqual - This method returns InternalFeatures where the specific Feature and the target Shape are topologically equal. The default implementation of SpatialQueryCore uses the GetFeaturesInsideBoundingBoxCore method to pre-filter the spatial query. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override this method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of InternalFeatures that match the spatial query you executed based on the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | feature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter specifies the target feature used in the spatial query. | | queryType | [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]] | This parameter specifies what kind of spatial query you wish to perform. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== SpatialQuery(BaseShape, QueryType, ReturningColumnsType) ==== This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. === Remarks === This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified below. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. Spatial Query Types: Disjoint - This method returns InternalFeatures where the specific Feature and the targetShape have no points in common. Intersects - This method returns InternalFeatures where the specific Feature and the targetShape have at least one point in common. Touches - This method returns InternalFeatures where the specific Feature and the targetShape have at least one boundary point in common, but no interior points. Crosses - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all interior points. Within - This method returns InternalFeatures where the specific Feature lies within the interior of the targetShape. Contains - This method returns InternalFeatures where the specific Feature lies within the interior of the current shape. Overlaps - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all points in common. TopologicalEqual - This method returns InternalFeatures where the specific Feature and the target Shape are topologically equal. The default implementation of SpatialQueryCore uses the GetFeaturesInsideBoundingBoxCore method to pre-filter the spatial query. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override this method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The return decimalDegreesValue is a collection of InternalFeatures that match the spatial query you executed based on the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter specifies the target shape used in the spatial query. | | queryType | [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]] | This parameter specifies what kind of spatial query you wish to perform. | | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | This parameter allows you to select a type from the ReturningColumnsType that you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== SpatialQuery(BaseShape, QueryType, IEnumerable) ==== This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. === Remarks === This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified below. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. Spatial Query Types: Disjoint - This method returns InternalFeatures where the specific Feature and the targetShape have no points in common. Intersects - This method returns InternalFeatures where the specific Feature and the targetShape have at least one point in common. Touches - This method returns InternalFeatures where the specific Feature and the targetShape have at least one boundary point in common, but no interior points. Crosses - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all interior points. Within - This method returns InternalFeatures where the specific Feature lies within the interior of the targetShape. Contains - This method returns InternalFeatures where the specific Feature lies within the interior of the current shape. Overlaps - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all points in common. TopologicalEqual - This method returns InternalFeatures where the specific Feature and the target Shape are topologically equal. The default implementation of SpatialQueryCore uses the GetFeaturesInsideBoundingBoxCore method to pre-filter the spatial query. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override this method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. As this is a concrete public method that wraps a Core method, we reserve the right to add events and other logic to pre- or post-process data returned by the Core version of the method. In this way, we leave our framework open on our end, but also allow you the developer to extend our logic to suit your needs. If you have questions about this, please contact our support team as we would be happy to work with you on extending our framework. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returned decimalDegreesValue is a collection of InternalFeatures that match the spatial query you executed based on the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter specifies the target shape used in the spatial query. | | queryType | [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]] | This parameter specifies what kind of spatial query you wish to perform. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Public Methods|Go Back]] ==== ToString() ==== === Return Value === ^ Return Type ^ Description ^ | String | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ==== UpdateDbfData(String, String, String) ==== This method updates data in the DBF file associated with the shape file. === Overloads === This overload allows you to pass in the Id, column name and the decimalDegreesValue. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id of the feature you want to update. | | columnName | String | This parameter is the column name you want to update. | | value | String | This parameter is the decimalDegreesValue you want to set. | [[#Public Methods|Go Back]] ==== UpdateDbfData(String, IEnumerable, IEnumerable) ==== This method updates data in the DBF file associated with the shape file. === Overloads === This overload allows you to pass in the Id, columnNames and the values. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | id | String | This parameter is the Id of the feature you want to update. | | columnNames | IEnumerable | This parameter is the columnNames you want to update. | | values | IEnumerable | This parameter is the target values you want to set. | [[#Public Methods|Go Back]] ==== UpdateFeature(BaseShape, IDictionary) ==== This method updates a Feature (composed of the passed-in BaseShape) in an existing transaction. === Remarks === This method updates a Feature (composed of the passed in BaseShape) in an existing transaction. You will need to ensure that you have started a transaction by calling BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | The shape that will be used to make the new Feature that you wish to update in the transaction. | | columnValues | IDictionary | This parameter represents the columnValues for the new features that will be added to the transaction. | [[#Public Methods|Go Back]] ==== UpdateFeature(Feature) ==== This method updates a Feature in an existing transaction. === Remarks === This method updates a Feature in an existing transaction. You will need to ensure that you have started a transaction by calling the BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | feature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | The Feature you wish to update in the transaction. | [[#Public Methods|Go Back]] ==== UpdateFeature(BaseShape) ==== This method updates a Feature (composed of the passed-in BaseShape) in an existing transaction. === Remarks === This method updates a Feature (composed of the passed-in BaseShape) in an existing transaction. You will need to ensure that you have started a transaction by calling BeginTransaction. The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | shape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | The shape that will be used to make the new Feature that you wish to update in the transaction. | [[#Public Methods|Go Back]] ==== Validate() ==== This method checks all features in a shapefile is supported by Mapsuite or not. === Return Value === ^ Return Type ^ Description ^ | Dictionary | A dictionary which contains all the unsupported features. The key is the Indexs which failed to pass the check, the value contains the reason for its failure. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Public Methods|Go Back]] ===== Protected Methods ===== ==== CloseCore() ==== This method opens the FeatureSource so that it is initialized and ready to use. === Remarks === This protected virtual method is called from the concreate public method Close. The close method plays an important role in the life cycle of the FeatureSource. It may be called after drawing to release any memory and other resources that were allocated since the Open method was called. It is recommended that if you override this method that you take the following things into account. This method may be called multiple times so we suggest you write the so that that a call to a closed FeatureSource is ignored and does not generate an error. We also suggest that in the close you free all resources that have been opened. Remember that the object will not be destroyed but will be re-opened possibly in the near future. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== CommitTransactionCore(TransactionBuffer) ==== This method will commit the existing transaction to its underlying source of data. === 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 System The 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 Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.TransactionResult|TransactionResult]] | 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 === ^ Name ^ Type ^ Description ^ | transactions | [[ThinkGeo.MapSuite.WindowsPhoneCore.TransactionBuffer|TransactionBuffer]] | 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. | [[#Protected Methods|Go Back]] ==== ConvertToExternalProjection(IEnumerable) ==== This method projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | This method projects a Feature based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | rectangles | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | This parameter represents a group of RectangleShapes that you wish to project. | [[#Protected Methods|Go Back]] ==== ConvertToExternalProjection(IEnumerable) ==== This method projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method projects a Feature based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | features | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This parameter represents a group of Features that you wish to project. | [[#Protected Methods|Go Back]] ==== ConvertToExternalProjection(RectangleShape) ==== This method projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This method projects a RectangleShape based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | rectangle | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the rectangle you wish to project. | [[#Protected Methods|Go Back]] ==== ConvertToExternalProjection(Feature) ==== This method projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This method projects a Feature based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | feature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter represents the Feature you wish to project. | [[#Protected Methods|Go Back]] ==== ConvertToInternalProjection(IEnumerable) ==== This method de-projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method de-projects a Feature based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | features | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This parameter represents the group of Features that you wish to de-project. | [[#Protected Methods|Go Back]] ==== ConvertToInternalProjection(RectangleShape) ==== This method de-projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This method de-projects a RectangleShape based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | rectangle | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the rectangle you wish to de-project. | [[#Protected Methods|Go Back]] ==== ConvertToInternalProjection(Feature) ==== This method de-projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This method de-projects a Feature based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | feature | [[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]] | This parameter represents the Feature you wish to de-project. | [[#Protected Methods|Go Back]] ==== ConvertToInternalProjection(BaseShape) ==== This method de-projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This method de-projects a BaseShape based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | baseShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter represents the BaseShape you wish to de-project. | [[#Protected Methods|Go Back]] ==== ConvertToInternalProjection(IEnumerable) ==== This method de-projects items based on the Projection of the FeatureSource. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that projection, as a general rule, happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. With these projection methods it is very easy to handle the projection and de-projection. Remember that when adding your own public methods you always de-project incoming shapes and alway project outgoing shapes. Also remember that the Core methods do not consider projection, and they assume the data being passed into them and out of them is the same unit as the underlying data. Example of a New Public Method: public Feature ProcessFeature(Feature incomingFeature) { //Be sure that you use the FromProjection on the incomingFeatureParameter as the first thing you do in this method. // Call a Core Method or do your own processing //Be sure that you call the ToProjection on the return result of the method before you pass it out. } === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | This method de-projects a BaseShape based on the Projection of the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | rectangles | IEnumerable<[[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]]> | This parameter represents a group of RectangleShapes that you wish to de-project. | [[#Protected Methods|Go Back]] ==== ExecuteNonQueryCore(String) ==== Executes a SQL statement against a connection object. === Remarks === You can use ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database by executing UPDATE, INSERT, or DELETE statements. Although ExecuteNonQuery does not return any rows, any output parameters or return values mapped to parameters are populated with data. For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. === Return Value === ^ Return Type ^ Description ^ | Int32 | The number of rows affected. | === Parameters === ^ Name ^ Type ^ Description ^ | sqlStatement | String | The sqlStatement to be excuted. | [[#Protected Methods|Go Back]] ==== Finalize() ==== === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== GetAllFeaturesCore(IEnumerable) ==== This method returns all of the InternalFeatures in the FeatureSource. === 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. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The return decimalDegreesValue is a collection of all of the InternalFeatures in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetBoundingBoxCore() ==== This method returns the bounding box which encompasses all of the features in the FeatureSource. === Remarks === This protected virtual method is called from the concreate public method GetBoundingBox. It does not take into account any transaction activity as this is the responsibility of the concreate public method GetBoundingBox. 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 GetBoundingBoxCore uses the GetAllRecordsCore method to calculate the bounding box of 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 BoundingBox is by calling the GetAllFeatureCore method and deriving it from each feature. This is a very inefficient way to get the BoundingBox 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 BoundingBox is in the main header of the file. Similarly if you are using Oracle Spatial you can execute a simple query to get the BoundingBox of all of the record without returning them. In these ways you can greatly improve the performance of this method. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This method returns the bounding box which encompasses all of the features in the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== GetColumnNamesInsideFeatureSource(IEnumerable) ==== This method returns the field names that are in the FeatureSource from a list of provided field names. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that, as a general rule, returning column data of a Feature or a set of InternalFeatures happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. Let's say, for example, that you want to add a new Find method called FindLargeFeatures. You pass in a group of columns to return. Most of the time, the requested columns will actually be in the FeatureSource, but sometimes they will not. The way we allow users to get data from outside of the Feature Source is by raising an event called CustomColumnFetch. This way, we allow people to provide data that is outside of the FeatureSource. Since you will be implementing your own public method, you will want to support this as all of our other public methods do. When you first enter the public method, you will want to separate out the fields that are in the FeatureSource from those that are not. You can call this method and the GetColumnNamesOutsideFeatureSource. If inside your public method you need to call any of our Core methods, then you need to make sure that you only pass in the list of column names that are in the FeatureSource. We assume that Core methods are simple and they do not handle this complexity. With the list of non-FeatureSource column names, you simply loop through each column name for each record and call the OnCustomColumnFetch method while passing in the proper parameters. This will allow you give the user a chance to provide the values for the Feature's fields that were not in the FeatureSource. After that, you combine your results and pass them back out as the return. public Collection<Feature> FindLargeFeatures(double AreaSize, IEnumerable <string> columnsToReturn) { //Step 1: Separate the columns that are in the FeatureSource from those that are not. // Step 2: Call any Core Methods and only pass in the columns that are in the FeatureSource //Step3: For Each feature/column name combination, call the OnCustomFiedlFetch and allow your user to provide the custom data. // Step4: Integrate the custom data with the result of the Core method plus any processing you did. Then return the consolidated result. } === Return Value === ^ Return Type ^ Description ^ | Collection | This method returns the field names that are in the FeatureSource from a list of provided field names. | === Parameters === ^ Name ^ Type ^ Description ^ | returningColumnNames | IEnumerable | This parameter is a list of column names, where not every field name may be in the FeatureSource. | [[#Protected Methods|Go Back]] ==== GetColumnNamesOutsideFeatureSource(IEnumerable) ==== This method returns the field names that are not in the FeatureSource from a list of provided field names. === Remarks === This is a protected method that is intended to help developers who want to implement or extend one of our FeatureSources. It is important to note that, as a general rule, returning column data of a Feature or a set of InternalFeatures happens inside the non-Core methods and we usually take care of it. However, as a developer, if you wish to add a new public method, then you will need to handle the projection yourself. Let's say, for example, that you want to add a new Find method called FindLargeFeatures. You pass in a group of columns to return. Most of the time, the requested columns will actually be in the FeatureSource, but sometimes they will not. The way we allow users to get data from outside of the Feature Source is by raising an event called CustomColumnFetch. This way, we allow people to provide data that is outside of the FeatureSource. Since you will be implementing your own public method, you will want to support this as all of our other public methods do. When you first enter the public method, you will want to separate out the fields that are in the FeatureSource from those that are not. You can call this method and the GetColumnNamesOutsideFeatureSource. If inside your public method you need to call any of our Core methods, then you need to make sure that you only pass in the list of column names that are in the FeatureSource. We assume that Core methods are simple and they do not handle this complexity. With the list of non-FeatureSource column names, you simply loop through each column name for each record and call the OnCustomColumnFetch method while passing in the proper parameters. This will allow you give the user a chance to provide the values for the Feature's fields that were not in the FeatureSource. After that, you combine your results and pass them back out as the return. public Collection<Feature> FindLargeFeatures(double AreaSize, IEnumerable <string> columnsToReturn) { //Step 1: Separate the columns that are in the FeatureSource from those that are not. // Step 2: Call any Core Methods and only pass in the columns that are in the FeatureSource //Step3: For Each feature/column name combination, call the OnCustomFiedlFetch and allow your user to provide the custom data. // Step4: Integrate the custom data with the result of the Core method plus any processing you did. Then return the consolidated result. } === Return Value === ^ Return Type ^ Description ^ | Collection | This method returns the field names that are not in the FeatureSource from a list of provided field names. | === Parameters === ^ Name ^ Type ^ Description ^ | returningColumnNames | IEnumerable | This parameter is a list of field names, where not every field name may be in the FeatureSource. | [[#Protected Methods|Go Back]] ==== GetColumnsCore() ==== This method returns the columns available for the FeatureSource. === Remarks === As this is the abstract core version of the Columns method it is intended to be overridden in inherited version of the class. 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 === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSourceColumn|FeatureSourceColumn]]> | This method returns the columns available for the FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== GetCountCore() ==== This method returns the count of the number of records in this FeatureSource. === 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. === Return Value === ^ Return Type ^ Description ^ | Int32 | This method returns the count of the number of records in this FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== GetFeaturesByColumnValueCore(String, String) ==== Get all of the features by passing a columnName and a specified columValue. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returnning features matches the columnValue. | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | The specified columnName to match the columnValue. | | columnValue | String | The specified columnValue to match those returning features. | [[#Protected Methods|Go Back]] ==== GetFeaturesByColumnValueCore(String, String, IEnumerable) ==== Get all of the features by passing a columnName and a specified columValue. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The returnning features matches the columnValue. | === Parameters === ^ Name ^ Type ^ Description ^ | columnName | String | The specified columnName to match the columnValue. | | columnValue | String | The specified columnValue to match those returning features. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFeaturesByIdsCore(IEnumerable, IEnumerable) ==== This method returns a collection of InternalFeatures by providing a group of Ids. === Remarks === This method returns a collection of InternalFeatures by providing a group of Ids. The internal implementation calls the GetAllFeaturesCore. Because of this if you want an efficient version of this method then we high suggest you override the GetFeaturesByIdsCore method and provide a fast way to find a group of InternalFeatures by their Id. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures by providing a group of Ids. | === Parameters === ^ Name ^ Type ^ Description ^ | ids | IEnumerable | This parameter represents the group of Ids which uniquely identified the InternalFeatures in the FeatureSource. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFeaturesForDrawingCore(RectangleShape, Double, Double, IEnumerable) ==== This method returns the InternalFeatures that will be used for drawing. === Remarks === This method returns all of the InternalFeatures of this FeatureSource 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 concreate version of this method. The default implementation of GetFeaturesForDrawingCore uses the GetFeaturesInsodeBoundingBoxCore with some optimizations based on the screen width and height. For example we can determine is a feature is going to draw in only one to four pixels and in that case we may not draw the entire feature but just a subset. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns the InternalFeatures that will be used for drawing. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter is the bounding box of the InternalFeatures you want to draw. | | screenWidth | Double | This parameter is the width in screen pixels of the canvas you will draw on. | | screenHeight | Double | This parameter is the height in screen pixels of the canvas you will draw on. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFeaturesInsideBoundingBoxCore(RectangleShape, IEnumerable) ==== This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box. === Remarks === This method returns all of the InternalFeatures of this FeatureSource 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 concreate 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. It is especially important for this method as many other default virtual methods use this for their calculations. We highly recommend when you override this method that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The return decimalDegreesValue is a collection of all of the InternalFeatures that are inside of the bounding box. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the bounding box you with to find InternalFeatures inside of. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFeaturesNearestToCore(BaseShape, GeographyUnit, Int32, IEnumerable) ==== This method returns a user defined number of InternalFeatures that are closest to the TargetShape. === Remarks === This method returns a user defined number of InternalFeatures that are closest to the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a small bounding box around the TargetShape and then queries the features inside of it. If we reach the number of items to find, then we measure the returned InternalFeatures to find the nearest. If we do not find enough records, we scale up the bounding box and try again. As you can see, this is not the most efficient method. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesNearestCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a user defined number of InternalFeatures that are closest to the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter is the shape you want to find InternalFeatures close to. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of measurement that the TargetShape and the FeatureSource are in, such as feet, meters, etc. | | maxItemsToFind | Int32 | This parameter defines how many close InternalFeatures to find around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFeaturesOutsideBoundingBoxCore(RectangleShape, IEnumerable) ==== This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. === 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 then it 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 Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box. | === Parameters === ^ Name ^ Type ^ Description ^ | boundingBox | [[ThinkGeo.MapSuite.WindowsPhoneCore.RectangleShape|RectangleShape]] | This parameter represents the bounding box you with to find InternalFeatures outside of. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFeaturesWithinDistanceOfCore(BaseShape, GeographyUnit, DistanceUnit, Double, IEnumerable) ==== This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. === Remarks === This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. It is important to note that the TargetShape and the FeatureSource must use the same unit, such as feet or meters. If they do not, then the results will not be predictable or correct. If there is a current transaction and it is marked as live, then the results will include any transaction Feature that applies. The implementation we provided creates a bounding box around the TargetShape using the distance supplied and then queries the features inside of it. This may not be the most efficient method for this operation. If your underlying data provider exposes a more efficient way, we recommend you override the Core version of this method and implement it. The default implementation of GetFeaturesWithinDistanceOfCore uses the GetFeaturesInsideBoundingBoxCore method for speed. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override GetFeaturesInsideBoundingBoxCore method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | This method returns a collection of InternalFeatures that are within a certain distance of the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | The shape you wish to find InternalFeatures within a distance of. | | unitOfData | [[ThinkGeo.MapSuite.WindowsPhoneCore.GeographyUnit|GeographyUnit]] | This parameter is the unit of data that the FeatureSource and TargetShape are in. | | distanceUnit | [[ThinkGeo.MapSuite.WindowsPhoneCore.DistanceUnit|DistanceUnit]] | This parameter specifies the measurement unit for the distance parameter, such as feet, miles, kilometers, etc. | | distance | Double | This parameter specifies the distance in which to find InternalFeatures around the TargetShape. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ==== GetFirstFeaturesWellKnownTypeCore() ==== This method returns the well known type that represents the first feature from FeatureSource. === Remarks === This protected virtual method is called from the concrete public method GetFirstFeaturesWellKnownType. It does not take into account any transaction activity, as this is the responsibility of the concrete public method GetFirstFeaturesWellKnownType. This way, as a developer, if you choose to override this method you do not have to consider transactions at all. The default implementation of GetCountCore uses the GetAllRFeaturesCore method to get WellKnownType of the first feature from all features. We strongly recommend that you provide your own implementation for this method that will be more efficient. If you do not override this method, it will get the count by calling the GetAllFeaturesCore method and get WellKnownType of the first feature from all features. 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 records without returning them. In these ways you can greatly improve the performance of this method. === Return Value === ^ Return Type ^ Description ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.WellKnownType|WellKnownType]] | This method returns the well known type that represents the first feature from FeatureSource. | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== GetReturningColumnNames(ReturningColumnsType) ==== Get returning columnNames according to the returningColumnType. === Remarks === The concreted FeatureSource can override this logic if needed. === Return Value === ^ Return Type ^ Description ^ | Collection | The returning ColumnNames based on the given returningColumnNamesType. | === Parameters === ^ Name ^ Type ^ Description ^ | returningColumnNamesType | [[ThinkGeo.MapSuite.WindowsPhoneCore.ReturningColumnsType|ReturningColumnsType]] | The passed in returningColumnType. | [[#Protected Methods|Go Back]] ==== MemberwiseClone() ==== === Return Value === ^ Return Type ^ Description ^ | Object | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== OnBuildingIndex(BuildingIndexShapeFileFeatureSourceEventArgs) ==== This method allows you to raise the BuildingIndex event. === Remarks === This method allows you to raise the BuildingIndex event. Normally events are not accessible to derived classes so we exposed a way to raise the event is necessary through this protected method. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildingIndexShapeFileFeatureSourceEventArgs|BuildingIndexShapeFileFeatureSourceEventArgs]] | This parameter represents the event arguments you want to raise the BuildingIndex event with. | [[#Protected Methods|Go Back]] ==== OnClosedFeatureSource(ClosedFeatureSourceEventArgs) ==== This method allows you to raise the ClosedFeatureSource event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the ClosedFeatureSource event. This may be useful if you plan to extend the FeatureSource and you need access to the event. Details on the event: This event is called after the closing of the FeatureSource. Technically, this event is called after the calling of the Close method on the FeatureSource and after the protected CloseCore method. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosedFeatureSourceEventArgs|ClosedFeatureSourceEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnClosingFeatureSource(ClosingFeatureSourceEventArgs) ==== This method allows you to raise the ClosingFeatureSource event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the ClosingFeatureSource event. This may be useful if you plan to extend the FeatureSource and you need access to the event. Details on the event: This event is called before the closing of the FeatureSource. Technically, this event is called after the calling of the Close method on the FeatureSource, but before the protected CloseCore method. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosingFeatureSourceEventArgs|ClosingFeatureSourceEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnCommittedTransaction(CommittedTransactionEventArgs) ==== This method allows you to raise the CommittedTransaction event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the CommittedTransaction event. This may be useful if you plan to extend the FeatureSource and you need access to the event. Details on the event: This event is raised after the CommitTransactionCore is called and allows you access to the TransactionBuffer and the TransactionResults object before CommitTransaction method is returned. With this event, you can analyze the results of the transaction and do any cleanup code necessary. In the event some of the records did not commit, you can handle these items here. The TransactionResults object is passed out of the CommitTransaction method so you could analyze it then; however, this is the only place where you have access to both the TransactionResults object and the TransactionBuffer object at the same time. These are useful together to try and determine what went wrong and possibly try and re-commit them. At the time of this event, you will technically be out of the current transaction. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittedTransactionEventArgs|CommittedTransactionEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnCommittingTransaction(CommittingTransactionEventArgs) ==== This method allows you to raise the CommittingTransaction event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the CommittingTransaction event. This may be useful if you plan to extend the FeatureSource and you need access to the event. Details on the event: This event is raised before the CommitTransactionCore is called and allows you access to the TransactionBuffer before the transaction is committed. It also allows you to cancel the pending transaction. The TransactionBuffer is the object that stores all of the pending transactions and is accessible through this event to allow you either add, remove or modify transactions. In the event that you cancel the CommitTransaction method, the transaction remains intact and you will still be editing. This makes it a nice place to possibly check for connectivity before the TransactionCore code is run, which is where the records are actually committed. Calling the RollBackTransaction method is the only way to permanently cancel a pending transaction without committing it. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittingTransactionEventArgs|CommittingTransactionEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnCustomColumnFetch(CustomColumnFetchEventArgs) ==== This method allows you to raise the CustomColumnFetch event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the CustomColumnFetch event. This may be useful if you plan to extend the FeatureSource and you need access to user-definable field data. Details on the event: This event is raised when fields are requested in a feature source method that do not exist in the feature source. It allows you supplement the data from any outside source you may have. It is used primarily when you have data relating to a particular feature or set of features that is not within source of the data. For example, you may have a shape file of the world whose .dbf component describes the area and population of each country. Additionally, in an outside SQL Server table, you may also have data about the countries, and it is this data that you wish to use for determining how you want to color each country. To integrate this SQL data, you simply create a file name that does not exist in the .dbf file. Whenever Map Suite is queried to return records that specifically require this field, the FeatureSource will raise this event and allow you the developer to supply the data. In this way, you can query the SQL table and store the data in some sort of collection, and then when the event is raised, simply supply that data. As this is an event, it will raise for each feature and field combination requested. This means that the event can be raised quite often, and we suggest that you cache the data you wish to supply in memory. We recommend against sending out a new SQL query each time this event is raised. Image that you are supplementing two columns and your query returns 2,000 rows. This means that if you requested those fields, the event would be raised 4,000 times. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.CustomColumnFetchEventArgs|CustomColumnFetchEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnDrawingProgressChanged(DrawingProgressChangedEventArgs) ==== === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]] | | [[#Protected Methods|Go Back]] ==== OnOpenedFeatureSource(OpenedFeatureSourceEventArgs) ==== This method allows you to raise the OpenedFeatureSource event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the OpenedFeatureSource event. This may be useful if you plan to extend the FeatureSource and you need access to the event. Details on the event: This event is called after the opening of the FeatureSource. Technically, this event is called after the calling of the Open method on the FeatureSource and after the protected OpenCore method is called. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpenedFeatureSourceEventArgs|OpenedFeatureSourceEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnOpeningFeatureSource(OpeningFeatureSourceEventArgs) ==== This method allows you to raise the OpeningFeatureSource event from a derived class. === Remarks === You can call this method from a derived class to enable it to raise the OpeningFeatureSource event. This may be useful if you plan to extend the FeatureSource and you need access to the event. Details on the event: This event is called before the opening of the FeatureSource. Technically, this event is called after the calling of the Open method on the FeatureSource, but before the protected OpenCore method. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpeningFeatureSourceEventArgs|OpeningFeatureSourceEventArgs]] | This parameter is the event arguments which define the parameters passed to the recipient of the event. | [[#Protected Methods|Go Back]] ==== OnStreamLoading(StreamLoadingEventArgs) ==== This method allows you to raise the StreamLoading event. === Remarks === This method allows you to raise the StreamLoading event. Normally events are not accessible to derived classes so we exposed a way to raise the event is necessary through this protected method. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ | e | [[ThinkGeo.MapSuite.WindowsPhoneCore.StreamLoadingEventArgs|StreamLoadingEventArgs]] | This parameter represents the event arguments you want to raise the StreamLoading event with. | [[#Protected Methods|Go Back]] ==== OpenCore() ==== This method opens the FeatureSource so that it is initialized and ready to use. === Remarks === This protected virtual method is called from the concreate public method Open. The open method play an important role as it is responsible for initializing the FeatureSource. Most methods on the FeatureSource will throw an exception if the state of the FeatureSource is not opened. When the map draws each layer it will open the FeatureSource as one of its first steps, then after it is finished drawing with that layer it will close it. In this way we are sure to release all resources used by the FeatureSource. When implementing this abstract method consider opening files for file based source, connecting to databases in the database based sources and so on. You will get a chance to close these in the Close method of the FeatureSource. === Return Value === ^ Return Type ^ Description ^ | Void | | === Parameters === ^ Name ^ Type ^ Description ^ [[#Protected Methods|Go Back]] ==== SpatialQueryCore(BaseShape, QueryType, IEnumerable) ==== This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified. === Remarks === This method returns all of the InternalFeatures based on the target Feature and the spatial query type specified below. If you override this method, you do not need to consider transactions. It is suggested that if you are looking to speed up this method that you first override the GetFeaturesInsideBoundingBoxCore and then re-test this method, as it relies heavily on that method internally. See more information below. Spatial Query Types: Disjoint - This method returns InternalFeatures where the specific Feature and the targetShape have no points in common. Intersects - This method returns InternalFeatures where the specific Feature and the targetShape have at least one point in common. Touches - This method returns InternalFeatures where the specific Feature and the targetShape have at least one boundary point in common, but no interior points. Crosses - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all interior points. Within - This method returns InternalFeatures where the specific Feature lies within the interior of the targetShape. Contains - This method returns InternalFeatures where the specific Feature lies within the interior of the current shape. Overlaps - This method returns InternalFeatures where the specific Feature and the targetShape share some but not all points in common. TopologicalEqual - This method returns InternalFeatures where the specific Feature and the target Shape are topologically equal. The default implementation of SpatialQueryCore uses the GetFeaturesInsideBoundingBoxCore method to pre-filter the spatial query. We strongly recommend that you provide your own implementation for this method that will be more efficient. When you override this method, we recommend that you use any spatial indexes you have at your disposal to make this method as fast as possible. === Return Value === ^ Return Type ^ Description ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.Feature|Feature]]> | The return decimalDegreesValue is a collection of InternalFeatures that match the spatial query you executed based on the TargetShape. | === Parameters === ^ Name ^ Type ^ Description ^ | targetShape | [[ThinkGeo.MapSuite.WindowsPhoneCore.BaseShape|BaseShape]] | This parameter specifies the target shape used in the spatial query. | | queryType | [[ThinkGeo.MapSuite.WindowsPhoneCore.QueryType|QueryType]] | This parameter specifies what kind of spatial query you wish to perform. | | returningColumnNames | IEnumerable | This parameter allows you to select the field names of the column data you wish to return with each Feature. | [[#Protected Methods|Go Back]] ===== Public Properties ===== ==== CanExecuteSqlQuery ==== This property specifies whether the FeatureSource can excute a SQL query or not. If it is false, then it will throw exception when these APIs are calleds: ExecuteScalar, ExecuteNonQuery, ExecuteQuery === Remarks === The default implementation is false. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ==== Encoding ==== This property get and set the encoding information for the dbf. === Return Value === ^ Return Type ^ | Encoding | [[#Public Properties|Go Back]] ==== FeatureIdsToExclude ==== A collection of strings representing record id of features not to get in the Layer. === Remarks === This string collection is a handy place to specify what records not to get from the source. Suppose you have a shape file of roads and you want to hide the roads within a particular rectangle, simply execute GetFeaturesInsideBoundingBox() and add the id of the return features to the collection and forget about them. Since you can set this by Layer it makes is easy to determine what to and what not to. === Return Value === ^ Return Type ^ | Collection | [[#Public Properties|Go Back]] ==== GeoCache ==== The cache system. === Remarks === You must set IsActive to true for the Cache system. The default is not active. === Return Value === ^ Return Type ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureCache|FeatureCache]] | [[#Public Properties|Go Back]] ==== IndexPathFileName ==== This property gets and sets the path and file of the index you want to use. === Remarks === When you specify the path and file name it should be in the correct format as such however the file does not need to exists on the file system. This is to allow us to accept streams supplied by the developer at runtime. If you choose to provide a file that exists then we will attempt to use it. If we cannot find it then we will raise the SteamLoading event and allow you to supply the stream. For example you can pass in "C:\NotARealPath\File1.idx" which does not exists on the file system. When we raise the event for you to supply a stream we will pass to you the path and file name for you to differentiate the files. === Return Value === ^ Return Type ^ | String | [[#Public Properties|Go Back]] ==== IsEditable ==== This property returns if the FeatureSource allows edits or is read only. === Remarks === This property is useful to check if a specific FeatureSource accepts editing. If you call the BeginTransaction and this property is false then an exception will be raised. For developers who are creating or extending a FeatureSource it is expected that you override this virtual method if the new FeatureSource you are creating allows edits. By default the decimalDegreesValue if false meaning that if you want to allow edits you must override this method and return true. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ==== IsInTransaction ==== This property returns true if the FeatureSource is in a transaction and false if it is not. === Remarks === To enter a transaction, you must first call the BeginTransaction method of the FeatureSource. It is possible that some FeatureSources are read-only and do not allow edits. To end a transaction, you must either call CommitTransaction or RollbackTransaction. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ==== IsOpen ==== This property returns true if the FeatureSource is open and false if it is not. === Remarks === Various methods on the FeatureSource require that it be in an open state. If one of those methods is called when the state is not open, then the method will throw an exception. To enter the open state, you must call the FeatureSource's Open method. The method will raise an exception if the current FeatureSource is already open. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ==== IsTransactionLive ==== This property returns true if the features currently modified in a transaction are expected to reflect their state when calling other methods on the FeatureSource, such as spatial queries. === Remarks === The live transaction concept means that all of the modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ==== MaxRecordsToDraw ==== === Return Value === ^ Return Type ^ | Int32 | [[#Public Properties|Go Back]] ==== Projection ==== This property holds the projection object that is used within the FeatureSource to ensure that features inside of the FeatureSource are projected. === Remarks === By default this property is null, meaning that the data being passed back from any methods on the FeatureSource will be in the coordinate system of the raw data. When you specify a projection object in the property, all incoming and outgoing method calls will subject the features to projection. For example, if the spatial database you are using has all of its data stored in decimal degrees, but you want to see the data in UTM, you would create a projection object that goes from decimal degrees to UTM and set that as the projection. With this one property set, we will ensure that it will seem to you the developer that all of the data in the FeatureSource is in UTM. That means every spatial query will return UTM projected shapes. You can even pass in UTM shapes for the parameters. Internally, we will ensure that the shapes are converted to and from the projection without any intervention on the developer's part. In fact, even when you override virtual or abstract core methods in the FeatureSource, you will not need to know about projections at all. Simply work with the data in its native coordinate system. We will handle all of the projection at the high level method. === Return Value === ^ Return Type ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.Projection|Projection]] | [[#Public Properties|Go Back]] ==== ReadWriteMode ==== === Return Value === ^ Return Type ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.ShapeFileReadWriteMode|ShapeFileReadWriteMode]] | [[#Public Properties|Go Back]] ==== RequireIndex ==== This property gets and sets the requirement of index when reading data. The default value is true. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ==== ShapePathFileName ==== This property returns the path and file of the shape file you want to use. === Remarks === When you specify the path and file name it should be in the correct format as such however the file does not need to exists on the file system. This is to allow us to accept streams supplied by the developer at runtime. If you choose to provide a file that exists then we will attempt to use it. If we cannot find it then we will raise the SteamLoading event and allow you to supply the stream. For example you can pass in "C:\NotARealPath\File1.shp" which does not exists on the file system. When we raise the event for you to supply a stream we will pass to you the path and file name for you to differentiate the files. === Return Value === ^ Return Type ^ | String | [[#Public Properties|Go Back]] ==== TransactionBuffer ==== The TransactionBuffer used in the Transaction System. === Remarks === The Transaction System The 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 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 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 modifications you perform during a transaction are live from the standpoint of the querying methods on the object. As 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, 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 would be considered live, though not committed. In the case where you modify records -- such as expanding the size of a polygon -- those changes are reflected as well. 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 instead would return the larger records. In this case, the larger records are returned. You can set this property to be false, as well; in which case, all of the spatially related methods would ignore anything that is currently in the transaction buffer waiting to be committed. In such a case, only after committing the transaction would the FeatureSource reflect the changes. === Return Value === ^ Return Type ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.TransactionBuffer|TransactionBuffer]] | [[#Public Properties|Go Back]] ==== UsingSpatialIndex ==== This property gets the shape file feature source with index or not. === Return Value === ^ Return Type ^ | Boolean | [[#Public Properties|Go Back]] ===== Protected Properties ===== ==== CanExecuteSqlQueryCore ==== This property specifies the FeatureSource can excute sql query or not. If it is false, then it will throw exception when called the APIs:ExecuteScalar,ExecuteNonQuery,ExecuteQuery This orverides will make it true. === Return Value === ^ Return Type ^ | Boolean | [[#Protected Properties|Go Back]] ==== FeatureSourceColumns ==== This property gets the columns of the feature source. === Remarks === None. === Return Value === ^ Return Type ^ | Collection<[[ThinkGeo.MapSuite.WindowsPhoneCore.FeatureSourceColumn|FeatureSourceColumn]]> | [[#Protected Properties|Go Back]] ==== IsOpenCore ==== This property returns true if the FeatureSource is open and false if it is not. === Remarks === Various methods on the FeatureSource require that it be in an open state. If one of those methods is called when the state is not open, then the method will throw an exception. To enter the open state, you must call the FeatureSource's Open method. The method will raise an exception if the current FeatureSource is already open. === Return Value === ^ Return Type ^ | Boolean | [[#Protected Properties|Go Back]] ===== Public Events ===== ==== BuildingIndex ==== This event will be fired each time a record was built the rtree index. You can choose to use this event to build the build index progess bar. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.BuildingIndexShapeFileFeatureSourceEventArgs|BuildingIndexShapeFileFeatureSourceEventArgs]] | [[#Public Events|Go Back]] ==== ClosedFeatureSource ==== This event is called after the closing of the FeatureSource. === Remarks === This event is called after the closing of the FeatureSource. Technically, this event is called after the calling of the Close method on the FeatureSource and after the protected CloseCore method. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosedFeatureSourceEventArgs|ClosedFeatureSourceEventArgs]] | [[#Public Events|Go Back]] ==== ClosingFeatureSource ==== This event is called before the closing of the FeatureSource. === Remarks === This event is called before the closing of the FeatureSource. Technically, this event is called after the calling of the Close method on the FeatureSource, but before the protected CloseCore method. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.ClosingFeatureSourceEventArgs|ClosingFeatureSourceEventArgs]] | [[#Public Events|Go Back]] ==== CommittedTransaction ==== This event is raised after the CommitTransaction and the CommitTransactionCore are called and allows you access to the TransactionBuffer and the TransactionResults object before CommitTransaction method is returned. === Remarks === This event is raised after the CommitTransactionCore is called and allows you access to the TransactionBuffer and the TransactionResults object before CommitTransaction method is returned. With this event, you can analyse the results of the transaction and do any cleanup code necessary. In the event some of the records did not commit, you can handle those items here. The TransactionResults object is passed out of the CommitTransaction method so you could analyze it then; however, this is the only place where you have access to both the TransactionResults object and the TransactionBuffer object at the same time. These are useful together to try and determine what went wrong and possibly try and re-commit them. At the time of this event you will technically be out of the current transaction. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittedTransactionEventArgs|CommittedTransactionEventArgs]] | [[#Public Events|Go Back]] ==== CommittingTransaction ==== This event is raised after the CommitTransaction method is called, but before the CommitTransactionCore is called. This allows you access to the TransactionBuffer before the transaction is committed. It also allows you to cancel the pending commit of the transaction. === Remarks === This event is raised before the CommitTransactionCore is called and allows you access to the TransactionBuffer before the transaction is committed. It also allows you to cancel the pending transaction. The TransactionBuffer is the object that stores all of the pending transactions and is accessible through this event to allow you to either add, remove or modify transactions. In the event that you cancel the CommitTransaction method, the transaction remains intact and you will still be editing. This makes it a nice place to possibly check for connectivity before the TransactionCore code is run, which is where the records are actually committed. Calling the RollBackTransaction method is the only way to permanently cancel a pending transaction without committing it. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.CommittingTransactionEventArgs|CommittingTransactionEventArgs]] | [[#Public Events|Go Back]] ==== CustomColumnFetch ==== This event is raised when fields are requested in a feature source method that do not exist in the feature source. It allows you to supplement the data from any outside source you have. === Remarks === This event is raised when fields are requested in a feature source method that do not exist in the feature source. It allows you to supplement the data from any outside source you have. It is used primarily when you have data relating to a particular feature or set of features that is not within source of the data. For example, you may have a shape file of the world whose .dbf component describes the area and population of each country. Additionally, in an outside SQL Server table, you may also have data about the countries, and it is this data that you wish to use for determining how you want to color each country. To integrate this SQL data, you simply create a file name that does not exist in the .dbf file. Whenever Map Suite is queried to return records that specifically require this field, the FeatureSource will raise this event and allow you the developer to supply the data. In this way, you can query the SQL table and store the data in some sort of collection, and then when the event is raised, simply supply that data. As this is an event, it will raise for each feature and field combination requested. This means that the event can be raised quite often, and we suggest that you cache the data you wish to supply in memory. We recommend against sending out a new SQL query each time this event is raised. Image that you are supplementing two columns and your query returns 2,000 rows. This means that if you requested those fields, the event would be raised 4,000 times. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.CustomColumnFetchEventArgs|CustomColumnFetchEventArgs]] | [[#Public Events|Go Back]] ==== DrawingProgressChanged ==== === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.DrawingProgressChangedEventArgs|DrawingProgressChangedEventArgs]] | [[#Public Events|Go Back]] ==== OpenedFeatureSource ==== This event is called after the opening of the FeatureSource. === Remarks === This event is called after the opening of the FeatureSource. Technically, this event is called after the calling of the Open method on the FeatureSource and after the protected OpenCore method is called. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpenedFeatureSourceEventArgs|OpenedFeatureSourceEventArgs]] | [[#Public Events|Go Back]] ==== OpeningFeatureSource ==== This event is called before the opening of the FeatureSource. === Remarks === This event is called before the opening of the FeatureSource. Technically, this event is called after the calling of the Open method on the FeatureSource, but before the protected OpenCore method. It is typical that the FeatureSource may be opened and closed may times during the life cycle of your application. The type of control the MapEngine is embedded in will dictate how often this happens. For example, in the case of the Web Edition, each time a FeatureSource is in the Ajax or Post Back part of the page cycle, it will close the FeatureSource before returning back to the client. This is to conserve resources, as the web is a connection-less environment. In the case of the Desktop Edition, we can keep the FeaureSources open, knowing that we can maintain a persistent connection. === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.OpeningFeatureSourceEventArgs|OpeningFeatureSourceEventArgs]] | [[#Public Events|Go Back]] ==== StreamLoading ==== === Event Arguments === ^ Event Arguments ^ | [[ThinkGeo.MapSuite.WindowsPhoneCore.StreamLoadingEventArgs|StreamLoadingEventArgs]] | [[#Public Events|Go Back]] __NOTOC__ [[Category:WindowsPhoneMapSuiteCore]] [[Category:ThinkGeo.MapSuite.WindowsPhoneCore]] [[Category:UpdateDocumentation]]