Acını hissediyorum. NetTopologySuite (v1.13) ile aynı şeyleri yaşadım ve birim testlerine bakarken biraz başarılı oldum.
Öncelikle, DS şekil dosyası işlemlerine özgü benzer bir soruda referans gösterilen DotSpatial kütüphanesine göz atabilirsiniz.
NTS kütüphanesinden şahsen mutluyum. Nesne modelini anladıktan sonra, bir şeyleri bir araya getirmek çok fazla yaygara değildir. Bu konuya bir kereden fazla atıfta bulunulacağından, burada NTS'den şekil dosyaları yazmak için hızlı bir kod dökümü.
1) NTS (1.13.0) İkili Dosyalarını İndirin
2) Aşağıdaki montajlara bakın:
-GeoAPI, NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.IO.GeoTools (bu sonuncunun ne kadar sürdüğünü tahmin et)
3) Bazı kodlar yazın (bu 10 dakikalık bir kesmek işi)
NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.Features, GeoAPI, GeoAPI.Geometries için deyimler kullanarak ekleme (üzgünüm bunları biçimlendirmek için SO nasıl elde edileceğini anlayamıyorum)
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);
Yani, iyi belgelenmiş değil ama gittikten sonra oldukça nokta ve ateş.