• 1000 сгенерированные фрагменты растрового изображения возвращаются клиенту на основе файла geo json вместо предварительно обработанных растровых изображений. Примерно так:
[HttpGet]
public IActionResult GetGeoJsonTile(int z, int x, int y)
{
var geoJsonFilePath = "C:\\geojsontiles\\coverage-area.geojson";
var geoJsonObj = JsonConvert.DeserializeObject(File.ReadAllText(geoJsonFilePath));
Byte[] imageBytes;
//RASTERIZE ENTIRE GEOJSON TO BITMAP HERE
//...
//CROP AND ZOOM RASTERIZED BITMAP TO FIT x,y,z PARAMS
//...
return File(imageBytes, "image/png");
}
Растеризация должна быть довольно простой (я думаю). Но часть, на которой я зацикливаюсь, - это кадрирование и масштабирование. Я понимаю, что файл geo json по сути является векторной картой со ссылками на координаты широты и долготы. Я не понимаю, как эти координаты широты и долготы переводятся в координаты x, y, z, которые вводятся на основе взаимодействия пользователя с картой на стороне клиента. Есть ли способ, которым я могу использовать информацию о широте и долготе внутри файла geo json в сочетании с входными данными x, y, z, чтобы определить, насколько масштабировать и где обрезать выходное растровое изображение?
Кроме того, я понимаю, что листовки (и другие клиенты) напрямую поддерживают файлы geo json. Но для меня это не вариант. Файлы geo json, которые мы используем, очень большие и сложные и вызывают серьезные проблемы с запаздыванием при использовании на клиентских машинах.