C#에서 CSV 파일의 GIS 피처, 포인트 및 지오메트리 내보내기 또는 읽기

GIS C# 라이브러리 Aspose.GIS를 사용하면 쉼표로 구분된 값(CSV) 파일에서 피처를 읽을 수 있습니다.

CSV 파일에서 피처 읽기

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
using (var layer = Drivers.Csv.OpenLayer(dataDir + "sample.csv"))
{
// print attributes
foreach (var attribute in layer.Attributes)
{
Console.Write($"'{attribute.Name}' ");
}
Console.WriteLine();
// print records
foreach (var feature in layer)
{
var dump = feature.GetValuesDump();
foreach (var item in dump)
{
Console.Write($"'{item}' ");
}
Console.WriteLine();
}
}

CSV 파일에서 포인트 읽기

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
using (var layer = Drivers.Csv.OpenLayer(dataDir + "geometries.csv",
new CsvOptions()
{
ColumnX = "x" ,
ColumnY = "y",
ColumnZ = "z",
ColumnM = "m"
}))
{
// print geometry in wkt format
foreach (var feature in layer)
{
Console.Write($"'{feature.Geometry.AsText()}: ");
Console.WriteLine();
}
}

WKT 열을 사용하여 지오메트리 읽기

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
using (var layer = Drivers.Csv.OpenLayer(dataDir + "geometries.csv",
new CsvOptions()
{
ColumnWkt = "geom_data"
}))
{
// print geometry in wkt format
foreach (var feature in layer)
{
Console.Write($"'{feature.Geometry.AsText()}: ");
Console.WriteLine();
}
}

CSV 형식으로 내보내기

// For complete examples and data files, please go to https://github.com/aspose-gis/Aspose.GIS-for-.NET
// apply a custom delimiter and a column for geometry.
var options = new CsvOptions()
{
ColumnWkt = "geom_data",
Delimiter = ';'
};
// create a new CSV layer
using (var layer = Drivers.Csv.CreateLayer(dataDir + "csv_out.csv", options))
{
layer.Attributes.Add(new FeatureAttribute("string_data", AttributeDataType.String));
layer.Attributes.Add(new FeatureAttribute("int_data", AttributeDataType.Integer));
layer.Attributes.Add(new FeatureAttribute("bool_data", AttributeDataType.Boolean));
layer.Attributes.Add(new FeatureAttribute("float_data", AttributeDataType.Double));
Feature feature = layer.ConstructFeature();
feature.SetValue("string_data", "string value");
feature.SetValue("int_data", 10);
feature.SetValue("bool_data", true);
feature.SetValue("float_data", 3.14);
feature.Geometry = new LineString(new[] { new Point(0, 0), new Point(1, 1) });
layer.Add(feature);
Feature feature2 = layer.ConstructFeature();
feature2.SetValue("string_data", "string value2");
feature2.SetValue("int_data", 100);
feature2.SetValue("bool_data", false);
feature2.SetValue("float_data", 3.1415);
feature2.Geometry = Geometry.Null;
layer.Add(feature2);
}