1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/bouyei-Bouyei.Geo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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 NuGet
Bouyei.GeoCore NuGet
Bystd.Geo NuGet

Введение

  1. Поддержка анализа и преобразования часто используемых геометрических форматов данных.
  2. Поддержка основных алгоритмов геометрии, таких как пересечение и вычисление площади.
  3. Минимизация зависимостей от сторонних библиотек для удобства модификации и переносимости.
  4. Простота использования и изучения.

Инструкция по установке

  1. Visual Studio или Visual Studio Code.

Использование

  1. Установите через NuGet.

  2. Вычисление площади:

    • 
      

    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);```

  3. Анализ 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);
  1. Анализ 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());

}

  1. Геопакетный разбор

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Библиотека для динамического анализа форматов данных географического информационного пространства. Например: анализ форматов shp, dbf, mdb, gdb, postgis, spatialite, geopackage, ogc (geojson, wkb, wkt и др.), вычисление площади поверхности эллипсоида, прямое и обратное преобразование Гаусса и т. д. Развернуть Свернуть
GPL-2.0
Отмена

Обновления (3)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/bouyei-Bouyei.Geo.git
git@api.gitlife.ru:oschina-mirror/bouyei-Bouyei.Geo.git
oschina-mirror
bouyei-Bouyei.Geo
bouyei-Bouyei.Geo
master