Bouyei.Geo
Это библиотека динамического анализатора для часто используемых форматов пространственных данных, которая обеспечивает поддержку таких форматов, как shpfile, esri mdb, spatialite, geopackage и др. (например, geojson, wkt, wkb и т. д.). Библиотека также предоставляет поддержку распространённых алгоритмов работы с геометрическими данными, таких как расчёт гауссовой кривизны, вычисление площади на плоскости и площади на сфере.
Bouyei.Geo основана на .NET Framework 4.5.1+.
Bouyei.GeoCore основана на .NET Core 2.0+.
Bystd.Geo основана на .NET Standard 2.0+.
Пакет | NuGet |
---|---|
Bouyei.Geo | |
Bouyei.GeoCore | |
Bystd.Geo |
Установите через NuGet.
Вычисление площади:
string wktstr = "POLYGON ((36379440.1493 2936717.206599999, 36379425.4384 2936710.4860999994, 36379423.0042 2936716.307, 36379437.133 2936723.318499999, 36379440.1493 2936717.206599999))";
GeoPlane plane = new GeoPlane(); var area = plane.Area(wktstr);
GeoEllipsoid geo = new GeoEllipsoid(); var ellipse = geo.Area(wktstr);```
Анализ Esri MDB:
string connstr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\LINE.mdb;"; using (IAdoProvider provider = AdoProvider.CreateProvider(connstr, FactoryType.OleDb)) { var rt = provider.Query(new Parameter("select top 1 SHAPE as wkb from multipoint")); var items = rt.Result; List geos = new List(); foreach (var item in items) { EsriMdbParser wkbParser = new EsriMdbParser(item.wkb); var geo = wkbParser.FromReader();
// Генерация WKT
// string wkt= geo.ToWkt();
geos.Add(geo);
}
}
4. Анализ GeoJSON:
* ```
string file = "C:\\3DCity.json";// AppContext.BaseDirectory + "testfiles\\feature.geojson";//"C:\\3DCity.json";
string content = File.ReadAllText(file, Encoding.UTF8);
GeoJsonParser json = new GeoJsonParser(content);
var geo = json.ToFeatures<attr, JsonMultiPolygon>();
List<double[]> coords = new List<double[]>();
coords.Add(new double[] { 1, 2 });
coords.Add(new double[] { 2, 3 });
var collection = new FeatureCollection<attr, JsonLineString>()
{
name = "册亨县八渡镇",
features = new Feature<attr, JsonLineString>[] {
new Feature<attr, JsonLineString>(){
properties=new attr(){ name="乃言村",code="522327"},
geometry=new JsonLineString(){
coordinates=coords
}
}
}
};
var str = json.ToWrite<attr, JsonLineString>(collection);
Анализ Spatialite:
string connstr = $"Data Source={sqlite};Version=3;Read Only=True;Pooling=False;Max Pool Size=100;"; using (var provider = AdoProvider.CreateProvider(connstr, FactoryType.SQLite)) { var rt = provider.Query(new Parameter("select * from mian")); if (rt.IsSuccess() == false) throw new Exception(rt.Info);
SpatiaLiteParser parser = new SpatiaLiteParser();``` foreach (var item in rt.Result)
{ // Разбор spatialite байтов var geo = parser.FromReader(item.GEOMETRY);
// Восстановление в виде spatialite байтов
var geo_buffer= parser.ToWriter(geo);
Console.WriteLine(geo.ToWkt());
}
string connstr = $"Data Source={sqlite};Version=3;Read Only=True;Pooling=False;Max Pool Size=100;"; using (var provider = AdoProvider.CreateProvider(connstr, FactoryType.SQLite)) { var rt = provider.Query(new Parameter("select * from xian")); if (rt.IsSuccess() == false) throw new Exception(rt.Info);
GeoPackageParser parser = new GeoPackageParser();
foreach (var item in rt.Result)
{
// Восстановление в виде geopackage байтов
var geo = parser.FromReader(item.geom);
Console.WriteLine(geo.ToWkt());
// Восстановление в виде geopackage байтов
var geo_buffer = parser.ToWriter(geo);
// Тестирование метода writer
var g=parser.FromReader(geo_buffer);
Console.WriteLine(geo.ToWkt());
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )