Class ShapeFileFeatureSource
This class represents a FeatureSource backed by ESRI a Shape File.
public class ShapeFileFeatureSource : FeatureSource
- Inheritance
-
ShapeFileFeatureSource
- Inherited Members
Remarks
None
Constructors
ShapeFileFeatureSource()
This is the class constructor.
public ShapeFileFeatureSource()
Remarks
None
ShapeFileFeatureSource(string)
This is the class constructor.
public ShapeFileFeatureSource(string shapePathFilename)
Parameters
shapePathFilename
stringThis parameter represents the path and file name to the .shp file.
Remarks
None
ShapeFileFeatureSource(string, FileAccess)
This is the class constructor.
public ShapeFileFeatureSource(string shapePathFilename, FileAccess readWriteMode)
Parameters
shapePathFilename
stringThis parameter represents the path and file name to the .shp file.
readWriteMode
FileAccessThis parameters represents the mode that we will open the file in.
Remarks
None
ShapeFileFeatureSource(string, string)
This is a constructor for the class.
public ShapeFileFeatureSource(string shapePathFilename, string indexPathFilename)
Parameters
shapePathFilename
stringThis parameter is the shape file name you want to load.
indexPathFilename
stringThis parameter is the index file you want 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.
ShapeFileFeatureSource(string, string, FileAccess)
This is a constructor for the class.
public ShapeFileFeatureSource(string shapePathFilename, string indexPathFilename, FileAccess readWriteMode)
Parameters
shapePathFilename
stringThis parameter is the shape file name you want to load.
indexPathFilename
stringThis parameter is the index file you want to use.
readWriteMode
FileAccessThis parameter reflects if you want to open shape file and index for read or read write mode.
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.
ShapeFileFeatureSource(string, string, FileAccess, Encoding)
This is a constructor for the class.
public ShapeFileFeatureSource(string shapePathFilename, string indexPathFilename, FileAccess readWriteMode, Encoding encoding)
Parameters
shapePathFilename
stringThis parameter is the shape file name you want to load.
indexPathFilename
stringThis parameter is the index file you want to use.
readWriteMode
FileAccessThis parameter reflects if you want to open shape file and index for read or read write mode.
encoding
EncodingThe encoding to read and write the dbf file.
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.
Properties
Encoding
This property get and set the encoding information for the dbf.
public Encoding Encoding { get; set; }
Property Value
IndexPathFilename
This property gets and sets the path and file of the index you want to use.
public string IndexPathFilename { get; set; }
Property Value
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.
IsEditable
This property returns if the FeatureSource allows edits or is read only.
public override bool IsEditable { get; }
Property Value
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.
ReadWriteMode
public FileAccess ReadWriteMode { get; set; }
Property Value
RequireIndex
This property gets and sets the requirement of index when reading data. The default value is true.
public bool RequireIndex { get; set; }
Property Value
ShapePathFilename
This property returns the path and file of the shape file you want to use.
public string ShapePathFilename { get; set; }
Property Value
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.
Exceptions
- ArgumentException
Setting an invalid FilePathName structure will thrown an ArgumentException.
SimplificationAreaInPixel
public int SimplificationAreaInPixel { get; set; }
Property Value
SimplifiedAreas
public Collection<RectangleShape> SimplifiedAreas { get; }
Property Value
UsingSpatialIndex
This property gets the shape file feature source with index or not.
public bool UsingSpatialIndex { get; }
Property Value
Methods
AddColumnBoolean(string)
This method adds a new Boolean column to the DBF file associated with the shape file.
public void AddColumnBoolean(string columnName)
Parameters
columnName
stringThis parameter is the column you want to add.
Remarks
None
AddColumnDate(string)
This method adds a new Date column to the DBF file associated with the shape file.
public void AddColumnDate(string columnName)
Parameters
columnName
stringThis parameter is the column you want to add.
Remarks
None
AddColumnDouble(string, int, int)
This method adds a new Double column to the DBF file associated with the shape file.
public void AddColumnDouble(string columnName, int totalLength, int precisionLength)
Parameters
columnName
stringThis parameter is the column you want to add.
totalLength
intThis is the total length of the field including both the digits to the left and right of the decimal point.
precisionLength
intThis parameter specifies how many digits after the decimal point you need to support.
Remarks
None
AddColumnInteger(string, int)
This method adds a new Integer column to the DBF file associated with the shape file.
public void AddColumnInteger(string columnName, int length)
Parameters
columnName
stringThis parameter is the column you want to add.
length
intThis parameter specifies the length of the integer.
Remarks
None
AddColumnMemo(string)
This method adds a new Memo column to the DBF file associated with the shape file.
public void AddColumnMemo(string columnName)
Parameters
columnName
stringThis parameter is the column you want to add.
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.
AddColumnMemo(string, int)
This method adds a new Memo column to the DBF file associated with the shape file.
public void AddColumnMemo(string columnName, int memoValueLength)
Parameters
columnName
stringThis parameter is the column you want to add.
memoValueLength
intThis parameter is the number of digits you need to hold the pointers to the data in the memo file.
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.
AddColumnString(string, int)
This method adds a new String column to the DBF file associated with the shape file.
public void AddColumnString(string columnName, int length)
Parameters
columnName
stringThis parameter is the column you want to add.
length
intThis parameter is the number of characters that the string can hold.
Remarks
This method adds a new String column to the DBF file associated with the shape file.
BuildIndexFile(IEnumerable<Feature>, string)
This method build a spatial index for a passed group of featurs which increases access speed.
public static void BuildIndexFile(IEnumerable<Feature> features, string indexPathFilename)
Parameters
features
IEnumerable<Feature>This parameter specifies the target group of features that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
Remarks
This overload builds an index file with the specified index file name for a group of passed in features.
BuildIndexFile(IEnumerable<Feature>, string, BuildIndexMode)
This method build a spatial index for a passed group of featurs which increases access speed.
public static void BuildIndexFile(IEnumerable<Feature> features, string indexPathFilename, BuildIndexMode buildIndexMode)
Parameters
features
IEnumerable<Feature>This parameter specifies the target group of features that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is an existing index file.
Remarks
This overload builds an index file with the specified index file name for a group of passed in features.
BuildIndexFile(IEnumerable<Feature>, string, ProjectionConverter)
This method build a spatial index for a passed group of featurs using the specified projection which increases access speed.
public static void BuildIndexFile(IEnumerable<Feature> features, string indexPathFilename, ProjectionConverter projectionConverter)
Parameters
features
IEnumerable<Feature>This parameter specifies the target group of features that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
projectionConverter
ProjectionConverterThis parameter specifies the projection used to build index file.
Remarks
This overload builds an index file with the specified index file name for a group of passed in features.
BuildIndexFile(IEnumerable<Feature>, string, ProjectionConverter, BuildIndexMode)
This method build a spatial index for a passed group of featurs which increases access speed.
public static void BuildIndexFile(IEnumerable<Feature> features, string indexPathFilename, ProjectionConverter projectionConverter, BuildIndexMode buildIndexMode)
Parameters
features
IEnumerable<Feature>This parameter specifies the target group of features that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
projectionConverter
ProjectionConverterThis parameter specifies the projection used to build index file.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is an existing index file.
Remarks
This overload builds an index file with the specified index file name for a group of passed in features.
BuildIndexFile(string)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
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.
BuildIndexFile(string, string, string, string, BuildIndexMode)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename, string indexPathFilename, string columnName, string regularExpression, BuildIndexMode buildIndexMode)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
columnName
stringThe columnName to be used to get the value to match the regex expression.
regularExpression
stringThis parameter specifies the regex expression to filter out thoese records to build index with.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is 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.
BuildIndexFile(string, string, BuildIndexMode)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename, string indexPathFilename, BuildIndexMode buildIndexMode)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is 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.
BuildIndexFile(string, string, ProjectionConverter, string, string, BuildIndexMode)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename, string indexPathFilename, ProjectionConverter projectionConverter, string columnName, string regularExpression, BuildIndexMode buildIndexMode)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
projectionConverter
ProjectionConverterThis parameter specifies the projection used to build index file.
columnName
stringThe columnName to be used to get the value to match the regex expression.
regularExpression
stringThis parameter specifies the regex expression to filter out thoese records to build index with.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is 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.
BuildIndexFile(string, string, ProjectionConverter, string, string, BuildIndexMode, Encoding)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename, string indexPathFilename, ProjectionConverter projectionConverter, string columnName, string regularExpression, BuildIndexMode buildIndexMode, Encoding encoding)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
projectionConverter
ProjectionConverterThis parameter specifies the projection used to build index file.
columnName
stringThe columnName to be used to get the value to match the regex expression.
regularExpression
stringThis parameter specifies the regular expression pattern to filter out thoese records to build index with.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is an existing index file.
encoding
EncodingThis 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.
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.
BuildIndexFile(string, string, ProjectionConverter, BuildIndexMode)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename, string indexPathFilename, ProjectionConverter projectionConverter, BuildIndexMode buildIndexMode)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
indexPathFilename
stringThis parameter specifies the index file name.
projectionConverter
ProjectionConverterThis parameter specifies the projection used to build index file.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is 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.
BuildIndexFile(string, BuildIndexMode)
This method build a spatial index for the shape file which increases access speed.
public static void BuildIndexFile(string shapePathFilename, BuildIndexMode buildIndexMode)
Parameters
shapePathFilename
stringThis parameter is the shape file name and path that you want to build an index for.
buildIndexMode
BuildIndexModeThis parameter determines what will happen if there is 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.
BuildRecordIdColumn(string, string, BuildRecordIdMode)
Static API used to build RecordId, the id should start from 0 by default.
public static void BuildRecordIdColumn(string shapeFilename, string fieldname, BuildRecordIdMode rebuildNeeded)
Parameters
shapeFilename
stringThe target shape file name to build record id based on.
fieldname
stringThe fild name for the record id.
rebuildNeeded
BuildRecordIdModeThe build record id mode.
BuildRecordIdColumn(string, string, BuildRecordIdMode, int)
Static API used to build RecordId from the specified starting id number.
public static void BuildRecordIdColumn(string shapeFilename, string fieldname, BuildRecordIdMode rebuildNeeded, int startNumber)
Parameters
shapeFilename
stringThe target shape file name to build record id based on.
fieldname
stringThe fild name for the record id.
rebuildNeeded
BuildRecordIdModeThe build record id mode.
startNumber
intThe starting id number of the record id.
BuildRecordIdColumn(string, string, BuildRecordIdMode, int, Encoding)
Static API used to build RecordId from the specified starting id number.
public static void BuildRecordIdColumn(string shapeFilename, string fieldname, BuildRecordIdMode rebuildNeeded, int startNumber, Encoding encoding)
Parameters
shapeFilename
stringThe target shape file name to build record id based on.
fieldname
stringThe fild name for the record id.
rebuildNeeded
BuildRecordIdModeThe build record id mode.
startNumber
intThe starting id number of the record id.
encoding
EncodingThis parameter specified the encoding information in dbf.
CanGetCountQuicklyCore()
protected override bool CanGetCountQuicklyCore()
Returns
CloneDeepCore()
protected override FeatureSource CloneDeepCore()
Returns
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.
public static void CloneShapeFileStructure(string sourceShapePathFilename, string targetShapePathFilename)
Parameters
sourceShapePathFilename
stringThe source shape file to be cloned.
targetShapePathFilename
stringThe target shape file with same structure with the source one after the structure cloned.
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.
public static void CloneShapeFileStructure(string sourceShapePathFilename, string targetShapePathFilename, OverwriteMode overwriteMode)
Parameters
sourceShapePathFilename
stringThe source shape file to be cloned.
targetShapePathFilename
stringThe target shape file with same structure with the source one after the structure cloned.
overwriteMode
OverwriteModeThis parameter specifies the override mode when the target shape file exists.
Remarks
Exception will be thown when the target shape file not extis while the override mode is set to DoNotOverwrite.
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.
public static void CloneShapeFileStructure(string sourceShapePathFilename, string targetShapePathFilename, OverwriteMode overwriteMode, Encoding encoding)
Parameters
sourceShapePathFilename
stringThe source shape file to be cloned.
targetShapePathFilename
stringThe target shape file with same structure with the source one after the structure cloned.
overwriteMode
OverwriteModeThis parameter specifies the override mode when the target shape file exists.
encoding
EncodingThis parameter specifies the encoding information in the source shape file.
Remarks
Exception will be thown when the target shape file not extis while the override mode is set to DoNotOverwrite.
CloseCore()
This method opens the FeatureSource so that it is initialized and ready to use.
protected override void CloseCore()
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.
CommitTransactionCore(TransactionBuffer)
This method will commit the existing transaction to its underlying source of data.
protected override TransactionResult CommitTransactionCore(TransactionBuffer transactions)
Parameters
transactions
TransactionBufferThis 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.
Returns
- 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.
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.
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which is not in transaction it will throw an InvalidOperationException.
CreateShapeFile(ShapeFileType, string, IEnumerable<DbfColumn>)
Static API to create a new shape file.
public static void CreateShapeFile(ShapeFileType shapeType, string pathFilename, IEnumerable<DbfColumn> databaseColumns)
Parameters
shapeType
ShapeFileTypeThis parameter specifies the the shape file type for the target shape file.
pathFilename
stringThis parameter specifies the shape file name for the target shape file.
databaseColumns
IEnumerable<DbfColumn>This parameter specifies the dbf column information for the target shape file.
CreateShapeFile(ShapeFileType, string, IEnumerable<DbfColumn>, Encoding)
Static API to create a new shape file.
public static void CreateShapeFile(ShapeFileType shapeType, string pathFilename, IEnumerable<DbfColumn> databaseColumns, Encoding encoding)
Parameters
shapeType
ShapeFileTypeThis parameter specifies the the shape file type for the target shape file.
pathFilename
stringThis parameter specifies the shape file name for the target shape file.
databaseColumns
IEnumerable<DbfColumn>This parameter specifies the dbf column information for the target shape file.
encoding
EncodingThis parameter specifies the dbf encoding infromation for the target shape file.
CreateShapeFile(ShapeFileType, string, IEnumerable<DbfColumn>, Encoding, OverwriteMode)
Static API to create a new shape file.
public static void CreateShapeFile(ShapeFileType shapeType, string pathFilename, IEnumerable<DbfColumn> databaseColumns, Encoding encoding, OverwriteMode overwriteMode)
Parameters
shapeType
ShapeFileTypeThis parameter specifies the the shape file type for the target shape file.
pathFilename
stringThis parameter specifies the shape file name for the target shape file.
databaseColumns
IEnumerable<DbfColumn>This parameter specifies the dbf column information for the target shape file.
encoding
EncodingThis parameter specifies the dbf encoding infromation for the target shape file.
overwriteMode
OverwriteModeThis parameter specifies the override mode when the target shape file exists.
Remarks
Exception will be thown when the target shape file exist while the override mode is set to DoNotOverwrite.
GetAllFeaturesCore(IEnumerable<string>)
This method returns all of the InternalFeatures in the FeatureSource.
protected override Collection<Feature> GetAllFeaturesCore(IEnumerable<string> returningColumnNames)
Parameters
returningColumnNames
IEnumerable<string>This parameter allows you to select the field names of the column data you wish to return with each Feature.
Returns
- Collection<Feature>
The return decimalDegreesValue is a collection of 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.
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which has not been opened it will throw an InvalidOperationException.
GetAllFeaturesCore(IEnumerable<string>, int, int)
protected override Collection<Feature> GetAllFeaturesCore(IEnumerable<string> returningColumnNames, int startIndex, int takeCount)
Parameters
returningColumnNames
IEnumerable<string>startIndex
inttakeCount
int
Returns
GetBoundingBoxByIdCore(string)
protected override RectangleShape GetBoundingBoxByIdCore(string id)
Parameters
id
string
Returns
GetBoundingBoxCore()
This method returns the bounding box which encompasses all of the features in the FeatureSource.
protected override RectangleShape GetBoundingBoxCore()
Returns
- RectangleShape
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.
Exceptions
- InvalidOperationException
If the operation is done under source closed state it will throw a InvalidOperationException.
GetColumnsCore()
This method returns the columns available for the FeatureSource.
protected override Collection<FeatureSourceColumn> GetColumnsCore()
Returns
- Collection<FeatureSourceColumn>
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.
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which has not been opened it will throw an InvalidOperationException.
GetCountCore()
This method returns the count of the number of records in this FeatureSource.
protected override long GetCountCore()
Returns
- long
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.
Exceptions
- InvalidOperationException
If the operation is done under source closed state it will throw a InvalidOperationException.
GetDataFromDbf(IEnumerable<string>)
This method gets data directly from the DBF file associated with the shape file.
public Collection<Dictionary<string, string>> GetDataFromDbf(IEnumerable<string> ids)
Parameters
ids
IEnumerable<string>This parameter is the Ids of the Features you want.
Returns
- Collection<Dictionary<string, string>>
This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified.
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.
GetDataFromDbf(IEnumerable<string>, IEnumerable<string>)
This method gets data directly from the DBF file associated with the shape file.
public Collection<Dictionary<string, string>> GetDataFromDbf(IEnumerable<string> ids, IEnumerable<string> columnNames)
Parameters
ids
IEnumerable<string>This parameter is the Ids of the Features you want.
columnNames
IEnumerable<string>This parameter is the returning columnNames of the Features you want.
Returns
- Collection<Dictionary<string, string>>
This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified.
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.
GetDataFromDbf(IEnumerable<string>, string)
This method gets data directly from the DBF file associated with the shape file.
public Collection<Dictionary<string, string>> GetDataFromDbf(IEnumerable<string> ids, string columnName)
Parameters
ids
IEnumerable<string>This parameter is the Ids of the Features you want.
columnName
stringThis parameter is the returning columnName of the Features you want.
Returns
- Collection<Dictionary<string, string>>
This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified.
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.
GetDataFromDbf(IEnumerable<string>, ReturningColumnsType)
This method gets data directly from the DBF file associated with the shape file.
public Collection<Dictionary<string, string>> GetDataFromDbf(IEnumerable<string> ids, ReturningColumnsType returningColumnNamesType)
Parameters
ids
IEnumerable<string>This parameter is the Ids of the Features you want.
returningColumnNamesType
ReturningColumnsTypeThis parameter is the returning column type of the Features you want.
Returns
- Collection<Dictionary<string, string>>
This method returns a collection of dictionary holding all of the values from the DBF for the Ids you specified.
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.
GetDataFromDbf(string)
This method gets data directly from the DBF file associated with the shape file.
public Dictionary<string, string> GetDataFromDbf(string id)
Parameters
id
stringThis parameter is the Id of the Feature you want.
Returns
- Dictionary<string, string>
This method returns a dictionary holding all of the values from the DBF for the Id you specified.
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.
GetDataFromDbf(string, IEnumerable<string>)
This method gets data directly from the DBF file associated with the shape file.
public Dictionary<string, string> GetDataFromDbf(string id, IEnumerable<string> returningColumnNames)
Parameters
id
stringThis parameter is the Id of the Feature you want.
returningColumnNames
IEnumerable<string>This parameter is the returning columns specified for the returning data.
Returns
- Dictionary<string, string>
This method returns a dictionary holding all of the values from the DBF for the Id you specified.
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.
GetDataFromDbf(string, string)
This method gets data directly from the DBF file associated with the shape file.
public string GetDataFromDbf(string id, string columnName)
Parameters
id
stringThis parameter is the Id for the Feature you want to find.
columnName
stringThis parameter is the column name you want to return.
Returns
- string
This method gets data directly from the DBF file associated with the shape file.
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.
GetDataFromDbf(string, ReturningColumnsType)
This method gets data directly from the DBF file associated with the shape file.
public Dictionary<string, string> GetDataFromDbf(string id, ReturningColumnsType returningColumnNamesType)
Parameters
id
stringThis parameter is the Id of the Feature you want.
returningColumnNamesType
ReturningColumnsTypeThis parameter is the returningColumnType specified for the returning data.
Returns
- Dictionary<string, string>
This method returns a dictionary holding all of the values from the DBF for the Id you specified.
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.
GetDbfColumns()
Get the dbf columns out from the shape file featureSource.
public Collection<DbfColumn> GetDbfColumns()
Returns
- Collection<DbfColumn>
The dbfColumns in the shape file FeatureSource.
GetDistinctColumnValuesCore(string)
protected override Collection<DistinctColumnValue> GetDistinctColumnValuesCore(string columnName)
Parameters
columnName
string
Returns
GetFeatureIdsCore()
protected override Collection<string> GetFeatureIdsCore()
Returns
GetFeatureIdsForDrawing(RectangleShape, double, double)
public Collection<string> GetFeatureIdsForDrawing(RectangleShape boundingBox, double screenWidth, double screenHeight)
Parameters
boundingBox
RectangleShapescreenWidth
doublescreenHeight
double
Returns
GetFeatureIdsForDrawingCore(RectangleShape, double, double)
protected virtual Collection<string> GetFeatureIdsForDrawingCore(RectangleShape boundingBox, double screenWidth, double screenHeight)
Parameters
boundingBox
RectangleShapescreenWidth
doublescreenHeight
double
Returns
GetFeaturesByColumnValueCore(string, string, IEnumerable<string>)
protected override Collection<Feature> GetFeaturesByColumnValueCore(string columnName, string columnValue, IEnumerable<string> returningColumnNames)
Parameters
columnName
stringcolumnValue
stringreturningColumnNames
IEnumerable<string>
Returns
GetFeaturesByIdsCore(IEnumerable<string>, IEnumerable<string>)
This method returns a collection of InternalFeatures by providing a group of Ids.
protected override Collection<Feature> GetFeaturesByIdsCore(IEnumerable<string> ids, IEnumerable<string> returningColumnNames)
Parameters
ids
IEnumerable<string>This parameter represents the group of Ids which uniquely identified the InternalFeatures in the FeatureSource.
returningColumnNames
IEnumerable<string>This parameter allows you to select the field names of the column data you wish to return with each Feature.
Returns
- Collection<Feature>
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.
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which has not been opened it will throw an InvalidOperationException.
GetFeaturesForDrawingCore(RectangleShape, double, double, IEnumerable<string>)
This method returns the InternalFeatures that will be used for drawing.
protected override Collection<Feature> GetFeaturesForDrawingCore(RectangleShape boundingBox, double screenWidth, double screenHeight, IEnumerable<string> returningColumnNames)
Parameters
boundingBox
RectangleShapeThis parameter is the bounding box of the InternalFeatures you want to draw.
screenWidth
doubleThis parameter is the width in screen pixels of the view you will draw on.
screenHeight
doubleThis parameter is the height in screen pixels of the view you will draw on.
returningColumnNames
IEnumerable<string>This parameter allows you to select the field names of the column data you wish to return with each Feature.
Returns
- Collection<Feature>
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.
GetFeaturesInsideBoundingBoxCore(RectangleShape, IEnumerable<string>)
This method returns all of the InternalFeatures of this FeatureSource inside of the specified bounding box.
protected override Collection<Feature> GetFeaturesInsideBoundingBoxCore(RectangleShape boundingBox, IEnumerable<string> returningColumnNames)
Parameters
boundingBox
RectangleShapeThis parameter represents the bounding box you with to find InternalFeatures inside of.
returningColumnNames
IEnumerable<string>This parameter allows you to select the field names of the column data you wish to return with each Feature.
Returns
- Collection<Feature>
The return decimalDegreesValue is a collection of all of the InternalFeatures that are inside of the 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.
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which has not been opened it will throw an InvalidOperationException.
GetFeaturesOutsideBoundingBoxCore(RectangleShape, IEnumerable<string>)
This method returns all of the InternalFeatures of this FeatureSource outside of the specified bounding box.
protected override Collection<Feature> GetFeaturesOutsideBoundingBoxCore(RectangleShape boundingBox, IEnumerable<string> returningColumnNames)
Parameters
boundingBox
RectangleShapeThis parameter represents the bounding box you with to find InternalFeatures outside of.
returningColumnNames
IEnumerable<string>This parameter allows you to select the field names of the column data you wish to return with each Feature.
Returns
- Collection<Feature>
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
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which has not been opened it will throw an InvalidOperationException.
GetFirstFeaturesWellKnownTypeCore()
protected override WellKnownType GetFirstFeaturesWellKnownTypeCore()
Returns
GetShapeFileType()
Get shape file type for the shape file featureSource.
public ShapeFileType GetShapeFileType()
Returns
- ShapeFileType
The shapeFileType for the ShapeFileFeatureSource.
GetValidColumnNames(IEnumerable<string>)
public static Collection<string> GetValidColumnNames(IEnumerable<string> columnNames)
Parameters
columnNames
IEnumerable<string>
Returns
GetValidColumnNames(IEnumerable<string>, Encoding)
public static Collection<string> GetValidColumnNames(IEnumerable<string> columnNames, Encoding encoding)
Parameters
columnNames
IEnumerable<string>encoding
Encoding
Returns
GetValidColumns(IEnumerable<DbfColumn>)
public static Collection<DbfColumn> GetValidColumns(IEnumerable<DbfColumn> columns)
Parameters
columns
IEnumerable<DbfColumn>
Returns
GetValidColumns(IEnumerable<DbfColumn>, Encoding)
public static Collection<DbfColumn> GetValidColumns(IEnumerable<DbfColumn> columns, Encoding encoding)
Parameters
columns
IEnumerable<DbfColumn>encoding
Encoding
Returns
OnBuildingIndex(BuildingIndexShapeFileFeatureSourceEventArgs)
This method allows you to raise the BuildingIndex event.
protected static void OnBuildingIndex(BuildingIndexShapeFileFeatureSourceEventArgs e)
Parameters
e
BuildingIndexShapeFileFeatureSourceEventArgsThis parameter represents the event arguments you want to raise the BuildingIndex event with.
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.
OnRebuilding(RebuildingShapeFileFeatureSourceEventArgs)
protected static void OnRebuilding(RebuildingShapeFileFeatureSourceEventArgs e)
Parameters
OnStreamLoading(StreamLoadingEventArgs)
This method allows you to raise the StreamLoading event.
protected virtual void OnStreamLoading(StreamLoadingEventArgs e)
Parameters
e
StreamLoadingEventArgsThis parameter represents the event arguments you want to raise the StreamLoading event with.
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.
OpenCore()
This method opens the FeatureSource so that it is initialized and ready to use.
protected override void OpenCore()
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.
Exceptions
- InvalidOperationException
In the event you attempt to call this method on a feature source which has already been opened it will throw an InvalidOperationException.
Rebuild(string)
This method rebuilds the SHP, SHX, DBF, IDX and IDS files for the given shape file.
public static void Rebuild(string shapePathFilename)
Parameters
shapePathFilename
stringThis parameter is the shape file you want to rebuild.
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.
Rebuild(string, ShapeFileSortingMode, int)
public static void Rebuild(string shapePathFilename, ShapeFileSortingMode sortingMode, int sridForSorting)
Parameters
shapePathFilename
stringsortingMode
ShapeFileSortingModesridForSorting
int
Reproject(string, string, ProjectionConverter, OverwriteMode)
This API provide a easy way to project features in a shape file into another projection and save it to shape file.
public static void Reproject(string sourceShapeFile, string targetShapeFile, ProjectionConverter projectionConverter, OverwriteMode overwriteMode)
Parameters
sourceShapeFile
stringThis parameter specifies the source shape file to be projected.
targetShapeFile
stringThis parameter specifies the target shape file to be saved for the projected features.
projectionConverter
ProjectionConverterThis 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
OverwriteModeThis parameter specifies the override mode when the target shape file exists.
UpdateDbfData(string, IEnumerable<string>, IEnumerable<string>)
This method updates data in the DBF file associated with the shape file.
public void UpdateDbfData(string id, IEnumerable<string> columnNames, IEnumerable<string> values)
Parameters
id
stringThis parameter is the Id of the feature you want to update.
columnNames
IEnumerable<string>This parameter is the columnNames you want to update.
values
IEnumerable<string>This parameter is the target values you want to set.
Remarks
None
UpdateDbfData(string, string, string)
This method updates data in the DBF file associated with the shape file.
public void UpdateDbfData(string id, string columnName, string value)
Parameters
id
stringThis parameter is the Id of the feature you want to update.
columnName
stringThis parameter is the column name you want to update.
value
stringThis parameter is the decimalDegreesValue you want to set.
Remarks
None
Validate()
This method checks all features in a shapefile is supported by Mapsuite or not.
public Dictionary<string, string> Validate()
Returns
- Dictionary<string, string>
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.
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.
public static event EventHandler<BuildingIndexShapeFileFeatureSourceEventArgs> BuildingIndex
Event Type
Rebuilding
public static event EventHandler<RebuildingShapeFileFeatureSourceEventArgs> Rebuilding
Event Type
StreamLoading
This event allows you to pass in your own stream to represent the files.
public event EventHandler<StreamLoadingEventArgs> StreamLoading
Event Type
Remarks
If you choose you can pass in your own stream to represent the file. The stream can come from a variety of places such as isolated storage, a compressed file, and encrypted stream. When the Image is finished with the stream it will dispose of it so be sure to keep this in mind when passing the stream in. If you do not pass in a alternate stream the class will attempt to load the file from the file system using the PathFilename property.