Siento tu dolor. Pasé por el mismo tipo de cosas con NetTopologySuite (v1.13) y tuve algo de éxito mirando las pruebas unitarias.
En primer lugar, puede consultar la biblioteca DotSpatial a la que se hizo referencia en una pregunta similar específica de las operaciones de archivo de formas DS
Estoy personalmente feliz con la biblioteca NTS. Una vez que descubres el modelo de objetos, no es demasiado complicado armar algo. Como es probable que se haga referencia a este tema más de una vez, aquí hay un volcado de código rápido para escribir archivos de forma desde NTS.
1) Descargue los binarios NTS (1.13.0)
2) Consulte los siguientes ensamblajes:
-GeoAPI, NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.IO.GeoTools (adivina cuánto tiempo tardó en descubrir que este último era necesario)
3) Escriba un código (este es un trabajo de pirateo de 10 minutos)
agregue usando declaraciones para NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.Features, GeoAPI, GeoAPI.Geometries (lo siento, no puedo entender cómo hacer que SO dé formato a estos)
string path = @"C:\data\atreides";
string firstNameAttribute = "firstname";
string lastNameAttribute = "lastname";
//create geometry factory
IGeometryFactory geomFactory = NtsGeometryServices.Instance.CreateGeometryFactory();
//create the default table with fields - alternately use DBaseField classes
AttributesTable t1 = new AttributesTable();
t1.AddAttribute(firstNameAttribute, "Paul");
t1.AddAttribute(lastNameAttribute, "Atreides");
AttributesTable t2 = new AttributesTable();
t2.AddAttribute(firstNameAttribute, "Duncan");
t2.AddAttribute(lastNameAttribute, "Idaho");
//create geometries and features
IGeometry g1 = geomFactory.CreatePoint(new Coordinate(300000, 5000000));
IGeometry g2 = geomFactory.CreatePoint(new Coordinate(300200, 5000300));
Feature feat1 = new Feature(g1, t1);
Feature feat2 = new Feature(g2, t2);
//create attribute list
IList<Feature> features = new List<Feature>() { feat1, feat2 };
ShapefileDataWriter writer = new ShapefileDataWriter(path) { Header = ShapefileDataWriter.GetHeader(features[0], features.Count) };
System.Collections.IList featList = (System.Collections.IList)features;
writer.Write(featList);
Por lo tanto, no está bien documentado, pero es bastante apuntar y disparar una vez que se pone en marcha.