45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
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<double> lons = CommonDataManager.getLon(req.x, req.z);
|
|
List<double> 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;
|
|
}
|
|
}
|
|
}
|