ly/Model/MultPolygonEntity.cs

71 lines
2.0 KiB
C#
Raw Permalink Normal View History

2025-03-22 12:16:22 +00:00
using LY.App.Common;
using NetTopologySuite.Algorithm;
using NetTopologySuite.Geometries;
using Newtonsoft.Json;
using Pipelines.Sockets.Unofficial.Arenas;
using SqlSugar;
namespace LY.App.Model
{
/// <summary>
/// 多边形实体
/// </summary>
public class MultPolygonEntity : BaseEntity
{
/// <summary>
/// 空间面数据
/// </summary>
[SugarColumn(QuerySql = "st_astext(region)", ColumnDataType = "multipolygon", ColumnName = "region",
UpdateSql = "ST_GeomFromText(@region)",
InsertSql = "ST_GeomFromText(@region)", IsNullable = true, ColumnDescription = "空间面数据")]
[JsonIgnore]
public string? Region { get; set; } //MultiPolygon Geometry
[SugarColumn(IsIgnore = true)]
public string RegionJson { get; set; }
/// <summary>
/// 空间位置点Json数据
/// </summary>
public void SetRegionJson()
{
RegionJson = "";
if (!string.IsNullOrWhiteSpace(Region))
{
var geo = GeoJsonHelper.FromWKT(Region);
if (geo != null)
{
RegionJson = GeoJsonHelper.GetGeoJson(geo);
}
}
}
/// <summary>
/// 设置空间位置点
/// </summary>
/// <param name="region"></param>
public void SetRegion(MultiPolygon region)
{
if (region != null)
{
Region = region.AsText();
}
}
/// <summary>
/// 设置空间位置点
/// </summary>
/// <param name="region"></param>
public void SetRegionJson(string region)
{
RegionJson = "";
if (!string.IsNullOrWhiteSpace(region))
{
var geo = GeoJsonHelper.FromWKT(region);
if (geo != null)
{
RegionJson = GeoJsonHelper.GetGeoJson(geo);
}
}
}
}
}