Condivido il tuo dolore. Ho passato lo stesso genere di cose con NetTopologySuite (v1.13) e ho avuto un certo successo guardando i test unitari.
Prima di tutto, potresti dare un'occhiata alla libreria DotSpatial a cui faceva riferimento una domanda simile specifica per le operazioni del file di forma DS
Sono personalmente contento della libreria NTS. Una volta che hai capito il modello a oggetti, non è troppo complicato mettere insieme qualcosa. Dal momento che questo argomento verrà probabilmente citato più di una volta, ecco un dump di codice rapido per la scrittura di shapefile da NTS.
1) Scarica i binari NTS (1.13.0)
2) Fare riferimento ai seguenti assiemi:
-GeoAPI, NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.IO.GeoTools (indovina quanto tempo è stato necessario per capire l'ultimo richiesto)
3) Scrivi un po 'di codice (questo è un processo di hacking di 10 minuti)
aggiungere le istruzioni usando per NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.Features, GeoAPI, GeoAPI.Geometries (scusate non riesco a capire come ottenere SO per formattarli)
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);
Quindi, non ben documentato, ma è abbastanza semplice fare una ripresa.