using OpenAuth.App.BasicQueryService; using OpenAuth.App.Request; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OpenAuth.App { public class IdleLandApp { ISqlSugarClient client; public IdleLandApp(ISqlSugarClient sqlSugarClient) { client = sqlSugarClient; } public byte[] VectorTile(VectorTileSearchModel req) { req.Init(); List lons = CommonDataManager.getLon(req.x, req.z); List lats = CommonDataManager.getLat(req.y, req.z); double lonmin = lons[0]; double lonmax = lons[1]; double latmin = lats[1]; double latmax = lats[0]; StringBuilder sql = new StringBuilder(); sql.AppendFormat( $"SELECT ST_AsMVT(tile, '{req.source_layer}', 4096, 'geom') tile FROM (" + $"SELECT {req.field} ST_AsMVTGeom(ST_GeomFromText(\"Geom\", 4326), ST_Transform(ST_MakeEnvelope({lonmin},{latmin},{lonmax},{latmax}, 4326),4326),4096, 256, true) AS geom " + $"FROM public.{req.table} where {req.filter} ) AS tile"); var aaa = sql.ToString(); var dataTable = client.Ado.GetDataTable(sql.ToString()); byte[] result = (Byte[])dataTable.Rows[0]["tile"]; return result; } } }