Générateur de tuiles

Générateur de tuiles

La carte en mosaïque est la manière la plus populaire d’afficher et de naviguer sur les cartes. GeneratorTiles dispose de méthodes pour rendre des tuiles pour une carte construite ou à d’autres fins pratiques. Nous devons définir la couche (ou les couches) d’entrée, le répertoire de sortie et le paramètre de zoom. Si nous avons plus d’une couche, alors pour chaque couche, nous joignons les géométries et créons une nouvelle couche fusionnée. Toutes les tuiles sont créées dans le répertoire de sortie défini et ont le nom tile_zxy_{z}_{x}_{y}, où z est le paramètre de zoom, x et y sont les coordonnées de l’étendue du coin supérieur gauche de la tuile. Au niveau de zoom “0”, toute la couche sera rendue dans une seule tuile cartographique. Chaque niveau de zoom double dans les deux dimensions, donc une seule tuile est remplacée par 4 tuiles lors d’un zoom avant. Les tuiles sont enregistrées avec l’extension “png”.

Exemple avec une couche 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); // pour voir toute la tuile
GeneratorTiles.GenerateTiles(layer, OutDirectory, zoom: 1); // pour voir 4 tuiles 

Exemple lorsque nous obtenons une couche à partir d’un fichier GeoJson (ou autre)

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

GeneratorTiles.GenerateTiles(layer_GeoJson, OutDirectory, zoom: 0); // pour voir toute la tuile
GeneratorTiles.GenerateTiles(layer_GeoJson, OutDirectory, zoom: 2); // pour voir 16 tuiles 

GeneratorTiles.GenerateTiles(layer_OsmXml, OutDirectory, zoom: 0); // pour voir toute la tuile
GeneratorTiles.GenerateTiles(layer_OsmXml, OutDirectory, zoom: 2); // pour voir 16 tuiles 

Exemple avec plusieurs couches

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); // pour voir toute la tuile
GeneratorTiles.GenerateTiles(listLayers, OutDirectory, zoom: 1); // pour voir 4 tuiles