Map Suite 3.0 has the ability to edit existing ShapeFiles, but what if you want to create your own? The code below should get you started, but if you want to explore more ShapeFile editing, check out our EditShapeFile sample application included with the evaluation download. Additionally, if you're using Map Suite Web Edition, you can download the attached sample application at the end of this article.
Here is a very simple example of creating a point-based ShapeFile from scratch. It adds three records and fills the value for the field "Name".
C#
string shapeFilePath = "c:\\cities.shp";
DbfColumn NameColumn = new DbfColumn("Name", DbfColumnType.String, 30, 0);
DbfColumn PopulationColumn = new DbfColumn("Population", DbfColumnType.Integer, 10, 0);
ShapeFileFeatureSource.CreateShapeFile(ShapeFileType.Point, shapeFilePath, new DbfColumn[] { NameColumn, PopulationColumn });
ShapeFileFeatureSource citiesShapeFile = new ShapeFileFeatureSource(shapeFilePath, ShapeFileReadWriteMode.ReadWrite);
Dictionary<string, string> LawrenceColumns = new Dictionary<string, string>();
LawrenceColumns.Add("Name", "Lawrence");
LawrenceColumns.Add("Population", "80098");
Feature lawrence = new Feature(new PointShape(-95.253199, 38.959902), LawrenceColumns);
Dictionary<string, string> NaplesColumns = new Dictionary<string, string>();
NaplesColumns.Add("Name", "Naples");
NaplesColumns.Add("Population", "21804");
Feature naples = new Feature(new PointShape(-81.798510, 26.152941), NaplesColumns);
citiesShapeFile.Open();
citiesShapeFile.BeginTransaction();
citiesShapeFile.AddFeature(lawrence);
citiesShapeFile.AddFeature(naples);
citiesShapeFile.CommitTransaction();
citiesShapeFile.Close();
VB.NET
Dim shapeFilePath As String = "c:\cities.shp"
Dim NameColumn As New DbfColumn("Name", DbfColumnType.[String], 30, 0)
Dim PopulationColumn As New DbfColumn("Population", DbfColumnType.[Integer], 10, 0)
ShapeFileFeatureSource.CreateShapeFile(ShapeFileType.Point, shapeFilePath, New DbfColumn() {NameColumn, PopulationColumn})
Dim citiesShapeFile As New ShapeFileFeatureSource(shapeFilePath, ShapeFileReadWriteMode.ReadWrite)
Dim LawrenceColumns As New Dictionary(Of String, String)()
LawrenceColumns.Add("Name", "Lawrence")
LawrenceColumns.Add("Population", "80098")
Dim lawrence As New Feature(New PointShape(-95.253199, 38.959902), LawrenceColumns)
Dim NaplesColumns As New Dictionary(Of String, String)()
NaplesColumns.Add("Name", "Naples")
NaplesColumns.Add("Population", "21804")
Dim naples As New Feature(New PointShape(-81.79851R, 26.152941), NaplesColumns)
citiesShapeFile.Open()
citiesShapeFile.BeginTransaction()
citiesShapeFile.AddFeature(lawrence)
citiesShapeFile.AddFeature(naples)
citiesShapeFile.CommitTransaction()
citiesShapeFile.Close()