.NET Core Entity Framework Сохранение пространственной географии Тип данных SQL Server - PullRequest
0 голосов
/ 10 мая 2019

Я разрабатывал приложение ASP.NET Core, используя Entity Core 2.2.Это приложение сохраняет границы местоположения.

Я использую google.maps.drawing.DrawingManager, чтобы позволить пользователям создавать многоугольник для сохранения границ в базе данных сервера SQL с использованием типа данных географии.В будущем мне нужно проверить, находятся ли определенные географические точки внутри или за пределами этого многоугольника.

Ниже приведен код, который вызывает веб-API .NET

function onPolygonComplete(e) {
    if (!cancelDrawingShape) {
        var Path= e.getPath();


        var thisData = {
            sPolygon: JSON.stringify(path.getArray())            };

        $.ajax({
            url: rootPath + 'Location/AddPolygon',
            data: thisData,
            type: 'POST',
            success: function (res) {
                e.setMap(null);
                removeAllFeatures();
                clientGeoFences = res.ClientGeoFences;
                refreshData(false);
            },
            failure: function (res) {

            }
        });

Вызываемый API

публичная асинхронная задача AddPolygon ([FromForm] строка sPolygon) {

}

Поскольку тип данных Geography не поддерживается в Entity Core, я установил NetTopologySuite (NTS) в соответствии с предложением

https://docs.microsoft.com/en-us/ef/core/modeling/spatial

После создания леса мой класс модели

имеет свойство ниже для типа данных Geography

public IGeometry StoreFence {get;задавать;}

Я пытаюсь найти примеры того, как теперь использовать классы NetTopologySuite для установки свойства StoreFence для сохранения Polygon в базе данных.

Любые примеры сохранения полигонов google.maps.drawing.DrawingManager в столбце типа географии SQL Server в базе данных с использованием Entity Core / NetTopologySuite будут отличными.

1 Ответ

0 голосов
/ 21 мая 2019

Получил решение

После установки NetTopologySuite и установки базы данных в БД с колонкой Geogrpahy

Моя модель имеет

публичная IGeometry BoundsFence {get;задавать;}

в качестве свойства для столбца типа Geography

в приведенном ниже коде это свойство будет установлено в WKT (общеизвестный текст) Polygon

                        IPolygon storeFence = (IPolygon)new WKTReader().Read(wktPolygon);

                        //check if orientation is not counter clock wise and reverse 
                        if (!storeFence.Shell.IsCCW)
                        {
                            storeFence = (IPolygon)storeFence.Reverse();
                        }
                        storeFence.SRID = 4326;
                        store.StoreFence = storeFence;

await _dbContext.SaveChangesAsync ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...