Generatore di Tiles

Generatore di tiles

La mappa a tile è il modo più popolare per visualizzare e navigare nelle mappe. GeneratorTiles ha metodi per renderizzare le tile per una mappa costruita o per altri scopi pratici. Dobbiamo impostare il layer (o i layer) di input, la directory di output e il parametro zoom. Se abbiamo più di un layer, allora per ogni layer uniamo le geometrie e creiamo un nuovo layer unito. Tutte le tile vengono create nella directory di output impostata e hanno il nome tile_zxy_{z}_{x}_{y}, dove z è il parametro zoom, x e y sono le coordinate dell’estensione dell’angolo superiore sinistro della tile. Al livello di zoom “0”, l’intero layer verrà renderizzato in una singola tile della mappa. Ogni livello di zoom raddoppia in entrambe le dimensioni, quindi una singola tile viene sostituita da 4 tile quando si esegue lo zoom. Le tile vengono salvate con estensione “png”.

Esempio con layer InMemory

var layer = Drivers.InMemory.CreateLayer();

Feature feature_1 = layer.ConstructFeature();
feature_1.Geometry = Geometry.FromText("LINESTRING(0 0, 500 300)");
layer.Add(feature_1);

Feature feature_2 = layer.ConstructFeature();
feature_2.Geometry = Geometry.FromText("LINESTRING(0 300, 500 0)");
layer.Add(feature_2);

GeneratorTiles.GenerateTiles(layer, OutDirectory, zoom: 0); // per vedere l'intera tile
GeneratorTiles.GenerateTiles(layer, OutDirectory, zoom: 1); // per vedere 4 tile

Esempio quando otteniamo il layer da un file GeoJson (o altro)

var layer_GeoJson = VectorLayer.Open(sourcePath, Drivers.GeoJson);
var layer_OsmXml = VectorLayer.Open(sourcePath, Drivers.OsmXml);

GeneratorTiles.GenerateTiles(layer_GeoJson, OutDirectory, zoom: 0); // per vedere l'intera tile
GeneratorTiles.GenerateTiles(layer_GeoJson, OutDirectory, zoom: 2); // per vedere 16 tile

GeneratorTiles.GenerateTiles(layer_OsmXml, OutDirectory, zoom: 0); // per vedere l'intera tile
GeneratorTiles.GenerateTiles(layer_OsmXml, OutDirectory, zoom: 2); // per vedere 16 tile

Esempio con più layer

var layer1 = Drivers.InMemory.CreateLayer();
var layer2 = Drivers.InMemory.CreateLayer();
var layer3 = Drivers.InMemory.CreateLayer();

Feature feature1 = layer1.ConstructFeature();
feature1.Geometry = Geometry.FromText("LINESTRING(-250 100, 0 0)");
layer1.Add(feature1);

Feature feature2 = layer1.ConstructFeature();
feature2.Geometry = Geometry.FromText("LINESTRING(0 100, 250 200)");
layer2.Add(feature2);

Feature feature3 = layer1.ConstructFeature();
feature3.Geometry = Geometry.FromText("LINESTRING(-250 200, 250 0)");
layer3.Add(feature3);

List<VectorLayer> listLayers = new List<VectorLayer>();
listLayers.Add(layer1);
listLayers.Add(layer2);
listLayers.Add(layer3);

GeneratorTiles.GenerateTiles(listLayers, OutDirectory, zoom: 0); // per vedere l'intera tile
GeneratorTiles.GenerateTiles(listLayers, OutDirectory, zoom: 1); // per vedere 4 tile