diff --git a/.gitignore b/.gitignore
index 72368d3..037cd31 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
tuiles
*.old
-data
\ No newline at end of file
+data/44-2025-0315-6730-LA93-0M20-E080-pseudo-mercator.jp2.tif*
+data/BDORTHO_2-0_RVB-0M20_JP2-E080_LAMB93_D044_2025-01-01
diff --git a/data/Batiment-B.png b/data/Batiment-B.png
new file mode 100644
index 0000000..99a6690
Binary files /dev/null and b/data/Batiment-B.png differ
diff --git a/data/Batiment-B.png.aux.xml b/data/Batiment-B.png.aux.xml
new file mode 100644
index 0000000..084728c
--- /dev/null
+++ b/data/Batiment-B.png.aux.xml
@@ -0,0 +1,32 @@
+
+
+ PIXEL
+
+
+
+ 0
+ 255
+ 235.01842254772
+ 39.357470717823
+ 100
+
+
+
+
+ 0
+ 255
+ 235.01842254772
+ 39.357470717823
+ 100
+
+
+
+
+ 0
+ 255
+ 235.01842254772
+ 39.357470717823
+ 100
+
+
+
diff --git a/data/Batiment-B.png.points b/data/Batiment-B.png.points
new file mode 100644
index 0000000..61ae5b8
--- /dev/null
+++ b/data/Batiment-B.png.points
@@ -0,0 +1,5 @@
+#CRS: PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]
+mapX,mapY,sourceX,sourceY,enable,dX,dY,residual
+-232839.30201169697102159,6030944.52057821583002806,59.7097003645306188,-473.29754125550067556,1,-3.08466075194772316,-1.56890178940585656,3.46072026887577122
+-232872.93698534040595405,6030985.35497977305203676,523.94643355842197252,-3.40021378088562543,1,-1.19168565954419137,3.66927365492064084,3.85793777371511704
+-232834.84421571739949286,6030987.87683418393135071,594.56984975756211043,-477.98296752711809177,1,4.27634640164546909,-2.10037185984748476,4.76431532295096272
diff --git a/data/Batiment-B_modified.tif b/data/Batiment-B_modified.tif
new file mode 100644
index 0000000..cc09a70
Binary files /dev/null and b/data/Batiment-B_modified.tif differ
diff --git a/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png b/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png
new file mode 100644
index 0000000..d5f9015
Binary files /dev/null and b/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png differ
diff --git a/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png.aux.xml b/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png.aux.xml
new file mode 100644
index 0000000..62986af
--- /dev/null
+++ b/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png.aux.xml
@@ -0,0 +1,44 @@
+
+
+ <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.4.0">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <exif:PixelXDimension>566</exif:PixelXDimension>
+ <exif:PixelYDimension>688</exif:PixelYDimension>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+
+
+ PIXEL
+
+
+
+ 0
+ 248
+ 152.1871019599
+ 31.667935776197
+ 100
+
+
+
+
+ 0
+ 244
+ 156.18471628729
+ 27.964459672963
+ 100
+
+
+
+
+ 0
+ 240
+ 143.51936529296
+ 25.056448103849
+ 100
+
+
+
diff --git a/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png.points b/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png.points
new file mode 100644
index 0000000..3d007bf
--- /dev/null
+++ b/data/L'Antenne - Plan infrastructures - Zoom sans SdD.png.points
@@ -0,0 +1,5 @@
+#CRS: PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]
+mapX,mapY,sourceX,sourceY,enable,dX,dY,residual
+-232834.85077838471625,6030987.97342906147241592,351.22440944881873293,-141.18897637795282662,1,-0.16425934169302536,0.20392196817891772,0.26184976692636103
+-232802.99651265717693605,6030872.04566726088523865,420.04133858267715596,-390.1318897637796681,1,-0.05905644762788143,0.38520819797201966,0.3897088910857377
+-232826.26056334812892601,6030912.59719120431691408,369.42322834645671037,-303.96259842519702943,1,0.22331580798396544,-0.58913015741472918,0.63003515177411717
diff --git a/data/L'Antenne - Plan infrastructures - Zoom sans SdD_georef.tif b/data/L'Antenne - Plan infrastructures - Zoom sans SdD_georef.tif
new file mode 100644
index 0000000..60122ae
Binary files /dev/null and b/data/L'Antenne - Plan infrastructures - Zoom sans SdD_georef.tif differ
diff --git a/data/L'Antenne - Plan infrastructures - Zoom sans SdD_georef.tif.aux.xml b/data/L'Antenne - Plan infrastructures - Zoom sans SdD_georef.tif.aux.xml
new file mode 100644
index 0000000..449f484
--- /dev/null
+++ b/data/L'Antenne - Plan infrastructures - Zoom sans SdD_georef.tif.aux.xml
@@ -0,0 +1,29 @@
+
+
+
+ 0
+ 255
+ 152.20906567992
+ 31.366502330278
+ 100
+
+
+
+
+ 0
+ 255
+ 156.20912735122
+ 27.618230060367
+ 100
+
+
+
+
+ 0
+ 255
+ 143.54402816322
+ 24.71252121816
+ 100
+
+
+
diff --git a/data/antenne.geojson b/data/antenne.geojson
new file mode 100644
index 0000000..6843cb1
--- /dev/null
+++ b/data/antenne.geojson
@@ -0,0 +1 @@
+{"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"coordinates":[-2.091871,47.541451],"type":"Point"}}]}
\ No newline at end of file
diff --git a/data/batimentA-Coté.jpg b/data/batimentA-Coté.jpg
new file mode 100644
index 0000000..6c9d633
Binary files /dev/null and b/data/batimentA-Coté.jpg differ
diff --git a/data/batimentA-Coté.jpg.aux.xml b/data/batimentA-Coté.jpg.aux.xml
new file mode 100644
index 0000000..e69de29
diff --git a/data/batimentA-Coté.jpg.points b/data/batimentA-Coté.jpg.points
new file mode 100644
index 0000000..e69de29
diff --git a/data/batimentA-Coté_modified.tif b/data/batimentA-Coté_modified.tif
new file mode 100644
index 0000000..a1c9203
Binary files /dev/null and b/data/batimentA-Coté_modified.tif differ
diff --git a/data/batimentA-Coté_modified.tif.aux.xml b/data/batimentA-Coté_modified.tif.aux.xml
new file mode 100644
index 0000000..4e1c29f
--- /dev/null
+++ b/data/batimentA-Coté_modified.tif.aux.xml
@@ -0,0 +1,32 @@
+
+
+
+ YES
+ 0
+ 255
+ 144.3677988059
+ 77.776689203742
+ 100
+
+
+
+
+ YES
+ 0
+ 255
+ 146.51065675341
+ 77.579469836568
+ 100
+
+
+
+
+ YES
+ 0
+ 255
+ 148.97955390335
+ 76.132302806289
+ 100
+
+
+
diff --git a/data/osm-buildings.geojson b/data/osm-buildings.geojson
new file mode 100644
index 0000000..5ee4cf8
--- /dev/null
+++ b/data/osm-buildings.geojson
@@ -0,0 +1,190 @@
+{
+ "type": "FeatureCollection",
+ "generator": "overpass-turbo",
+ "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.",
+ "timestamp": "2026-01-20T20:29:36Z",
+ "features": [
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/308716081",
+ "building": "retail",
+ "roof:shape": "hipped",
+ "source": "cadastre-dgi-fr source : Direction Générale des Finances Publiques - Cadastre. Mise à jour : 2014"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.091591,
+ 47.541955
+ ],
+ [
+ -2.091756,
+ 47.541965
+ ],
+ [
+ -2.091764,
+ 47.541926
+ ],
+ [
+ -2.091933,
+ 47.54194
+ ],
+ [
+ -2.091959,
+ 47.541822
+ ],
+ [
+ -2.09234,
+ 47.541854
+ ],
+ [
+ -2.092356,
+ 47.541781
+ ],
+ [
+ -2.091804,
+ 47.54174
+ ],
+ [
+ -2.091808,
+ 47.541705
+ ],
+ [
+ -2.091631,
+ 47.54169
+ ],
+ [
+ -2.091591,
+ 47.541955
+ ]
+ ]
+ ]
+ },
+ "id": "way/308716081"
+ },
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/308716216",
+ "building": "dormitory",
+ "roof:shape": "hipped",
+ "source": "cadastre-dgi-fr source : Direction Générale des Finances Publiques - Cadastre. Mise à jour : 2014"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.091312,
+ 47.541482
+ ],
+ [
+ -2.091514,
+ 47.541498
+ ],
+ [
+ -2.091582,
+ 47.541033
+ ],
+ [
+ -2.091382,
+ 47.541019
+ ],
+ [
+ -2.091378,
+ 47.541027
+ ],
+ [
+ -2.091336,
+ 47.541026
+ ],
+ [
+ -2.091331,
+ 47.54106
+ ],
+ [
+ -2.091375,
+ 47.541062
+ ],
+ [
+ -2.091354,
+ 47.541208
+ ],
+ [
+ -2.091309,
+ 47.541206
+ ],
+ [
+ -2.091305,
+ 47.541252
+ ],
+ [
+ -2.091351,
+ 47.541255
+ ],
+ [
+ -2.091335,
+ 47.541328
+ ],
+ [
+ -2.091251,
+ 47.54132
+ ],
+ [
+ -2.091241,
+ 47.541395
+ ],
+ [
+ -2.091329,
+ 47.541401
+ ],
+ [
+ -2.091312,
+ 47.541482
+ ]
+ ]
+ ]
+ },
+ "id": "way/308716216"
+ },
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/308717173",
+ "building": "yes",
+ "source": "cadastre-dgi-fr source : Direction Générale des Finances Publiques - Cadastre. Mise à jour : 2014"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.091085,
+ 47.540622
+ ],
+ [
+ -2.091096,
+ 47.540577
+ ],
+ [
+ -2.091051,
+ 47.540575
+ ],
+ [
+ -2.091044,
+ 47.540619
+ ],
+ [
+ -2.091085,
+ 47.540622
+ ]
+ ]
+ ]
+ },
+ "id": "way/308717173"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/data/osm-farmland.geojson b/data/osm-farmland.geojson
new file mode 100644
index 0000000..7d67e69
--- /dev/null
+++ b/data/osm-farmland.geojson
@@ -0,0 +1,399 @@
+{
+ "type": "FeatureCollection",
+ "generator": "overpass-turbo",
+ "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.",
+ "timestamp": "2026-01-23T17:35:45Z",
+ "features": [
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/105191376",
+ "landuse": "farmland"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.0952451,
+ 47.5358194
+ ],
+ [
+ -2.095042,
+ 47.5369865
+ ],
+ [
+ -2.0969257,
+ 47.5370863
+ ],
+ [
+ -2.09709,
+ 47.5359349
+ ],
+ [
+ -2.0985699,
+ 47.5358788
+ ],
+ [
+ -2.0985064,
+ 47.5373937
+ ],
+ [
+ -2.0971369,
+ 47.5372995
+ ],
+ [
+ -2.0970726,
+ 47.537579
+ ],
+ [
+ -2.0951336,
+ 47.5374419
+ ],
+ [
+ -2.095046,
+ 47.5375026
+ ],
+ [
+ -2.094855,
+ 47.5383366
+ ],
+ [
+ -2.0982323,
+ 47.5385246
+ ],
+ [
+ -2.0980275,
+ 47.5389216
+ ],
+ [
+ -2.0975408,
+ 47.5393929
+ ],
+ [
+ -2.0970015,
+ 47.5407833
+ ],
+ [
+ -2.0975613,
+ 47.5410948
+ ],
+ [
+ -2.098578,
+ 47.542333
+ ],
+ [
+ -2.0982971,
+ 47.5424965
+ ],
+ [
+ -2.096334,
+ 47.5422518
+ ],
+ [
+ -2.0962913,
+ 47.5425807
+ ],
+ [
+ -2.0941477,
+ 47.542534
+ ],
+ [
+ -2.0938804,
+ 47.54299
+ ],
+ [
+ -2.0921412,
+ 47.5429506
+ ],
+ [
+ -2.0918808,
+ 47.5450114
+ ],
+ [
+ -2.092319,
+ 47.5450439
+ ],
+ [
+ -2.0922481,
+ 47.54557
+ ],
+ [
+ -2.0970568,
+ 47.5456209
+ ],
+ [
+ -2.0997192,
+ 47.5458659
+ ],
+ [
+ -2.0997473,
+ 47.5457792
+ ],
+ [
+ -2.0996996,
+ 47.5457698
+ ],
+ [
+ -2.0995018,
+ 47.5457323
+ ],
+ [
+ -2.0995051,
+ 47.5452727
+ ],
+ [
+ -2.1000195,
+ 47.5448702
+ ],
+ [
+ -2.1007991,
+ 47.5450295
+ ],
+ [
+ -2.1023022,
+ 47.5453324
+ ],
+ [
+ -2.1024658,
+ 47.5445086
+ ],
+ [
+ -2.1025843,
+ 47.5441797
+ ],
+ [
+ -2.101446,
+ 47.5440115
+ ],
+ [
+ -2.1009282,
+ 47.5430787
+ ],
+ [
+ -2.1021864,
+ 47.5427844
+ ],
+ [
+ -2.1001801,
+ 47.5416908
+ ],
+ [
+ -2.101135,
+ 47.5394238
+ ],
+ [
+ -2.1018109,
+ 47.539547
+ ],
+ [
+ -2.1023581,
+ 47.5390545
+ ],
+ [
+ -2.1018002,
+ 47.5387068
+ ],
+ [
+ -2.1026692,
+ 47.537758
+ ],
+ [
+ -2.1045897,
+ 47.5372727
+ ],
+ [
+ -2.1050081,
+ 47.5383084
+ ],
+ [
+ -2.1035705,
+ 47.5396266
+ ],
+ [
+ -2.1030018,
+ 47.5395108
+ ],
+ [
+ -2.1025512,
+ 47.5398439
+ ],
+ [
+ -2.1039781,
+ 47.5404089
+ ],
+ [
+ -2.1050019,
+ 47.5405719
+ ],
+ [
+ -2.1062186,
+ 47.540782
+ ],
+ [
+ -2.1076635,
+ 47.540369
+ ],
+ [
+ -2.1072504,
+ 47.5392826
+ ],
+ [
+ -2.1078083,
+ 47.5391885
+ ],
+ [
+ -2.1083919,
+ 47.5401271
+ ],
+ [
+ -2.1091265,
+ 47.5400823
+ ],
+ [
+ -2.1091156,
+ 47.5404373
+ ],
+ [
+ -2.1095655,
+ 47.5409011
+ ],
+ [
+ -2.1099064,
+ 47.5415678
+ ],
+ [
+ -2.1112004,
+ 47.5418735
+ ],
+ [
+ -2.1111704,
+ 47.5398444
+ ],
+ [
+ -2.1110029,
+ 47.539537
+ ],
+ [
+ -2.1099917,
+ 47.5397751
+ ],
+ [
+ -2.1097338,
+ 47.5395057
+ ],
+ [
+ -2.1096327,
+ 47.5393892
+ ],
+ [
+ -2.1093813,
+ 47.5392386
+ ],
+ [
+ -2.1090092,
+ 47.5388664
+ ],
+ [
+ -2.1083841,
+ 47.5382604
+ ],
+ [
+ -2.1078768,
+ 47.537775
+ ],
+ [
+ -2.108259,
+ 47.5371097
+ ],
+ [
+ -2.1091779,
+ 47.5366905
+ ],
+ [
+ -2.1089856,
+ 47.5363202
+ ],
+ [
+ -2.1088708,
+ 47.5361888
+ ],
+ [
+ -2.1086991,
+ 47.5359426
+ ],
+ [
+ -2.1084952,
+ 47.5357397
+ ],
+ [
+ -2.1080124,
+ 47.5354573
+ ],
+ [
+ -2.107358,
+ 47.535508
+ ],
+ [
+ -2.1060383,
+ 47.5346315
+ ],
+ [
+ -2.1060598,
+ 47.535153
+ ],
+ [
+ -2.10621,
+ 47.5353776
+ ],
+ [
+ -2.1063077,
+ 47.5357623
+ ],
+ [
+ -2.1058647,
+ 47.5356802
+ ],
+ [
+ -2.1049724,
+ 47.5355342
+ ],
+ [
+ -2.1053152,
+ 47.5346795
+ ],
+ [
+ -2.1057008,
+ 47.533718
+ ],
+ [
+ -2.1053785,
+ 47.5337767
+ ],
+ [
+ -2.1053141,
+ 47.5334816
+ ],
+ [
+ -2.104311,
+ 47.5325381
+ ],
+ [
+ -2.1041847,
+ 47.5315286
+ ],
+ [
+ -2.1034795,
+ 47.5305967
+ ],
+ [
+ -2.0952451,
+ 47.5358194
+ ]
+ ]
+ ]
+ },
+ "id": "way/105191376"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/data/osm-forest.geojson b/data/osm-forest.geojson
new file mode 100644
index 0000000..e4115be
--- /dev/null
+++ b/data/osm-forest.geojson
@@ -0,0 +1,409 @@
+{
+ "type": "FeatureCollection",
+ "generator": "overpass-turbo",
+ "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.",
+ "timestamp": "2026-01-23T17:34:45Z",
+ "features": [
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/42177798",
+ "CLC:code": "311",
+ "CLC:id": "FR-82814",
+ "CLC:year": "2006",
+ "landuse": "forest",
+ "leaf_type": "broadleaved",
+ "source": "Union européenne - SOeS, CORINE Land Cover, 2006."
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.0858411,
+ 47.5367668
+ ],
+ [
+ -2.0870426,
+ 47.5369308
+ ],
+ [
+ -2.0877894,
+ 47.5375514
+ ],
+ [
+ -2.0878767,
+ 47.5382634
+ ],
+ [
+ -2.0876533,
+ 47.5392287
+ ],
+ [
+ -2.0874928,
+ 47.539816
+ ],
+ [
+ -2.08794,
+ 47.539992
+ ],
+ [
+ -2.0885711,
+ 47.539909
+ ],
+ [
+ -2.0903356,
+ 47.5401696
+ ],
+ [
+ -2.09019,
+ 47.5410086
+ ],
+ [
+ -2.0884419,
+ 47.5410039
+ ],
+ [
+ -2.0882668,
+ 47.5419639
+ ],
+ [
+ -2.0900628,
+ 47.5420526
+ ],
+ [
+ -2.0899929,
+ 47.5426571
+ ],
+ [
+ -2.0905267,
+ 47.54276
+ ],
+ [
+ -2.0910003,
+ 47.5426051
+ ],
+ [
+ -2.0910982,
+ 47.5422037
+ ],
+ [
+ -2.0907624,
+ 47.5420998
+ ],
+ [
+ -2.0909687,
+ 47.5407906
+ ],
+ [
+ -2.0921003,
+ 47.5408508
+ ],
+ [
+ -2.0923436,
+ 47.5408351
+ ],
+ [
+ -2.0920593,
+ 47.542888
+ ],
+ [
+ -2.0921412,
+ 47.5429506
+ ],
+ [
+ -2.0938804,
+ 47.54299
+ ],
+ [
+ -2.0941477,
+ 47.542534
+ ],
+ [
+ -2.0962913,
+ 47.5425807
+ ],
+ [
+ -2.096334,
+ 47.5422518
+ ],
+ [
+ -2.0982971,
+ 47.5424965
+ ],
+ [
+ -2.098578,
+ 47.542333
+ ],
+ [
+ -2.0975613,
+ 47.5410948
+ ],
+ [
+ -2.0970015,
+ 47.5407833
+ ],
+ [
+ -2.0975408,
+ 47.5393929
+ ],
+ [
+ -2.0980275,
+ 47.5389216
+ ],
+ [
+ -2.0982323,
+ 47.5385246
+ ],
+ [
+ -2.094855,
+ 47.5383366
+ ],
+ [
+ -2.095046,
+ 47.5375026
+ ],
+ [
+ -2.0951336,
+ 47.5374419
+ ],
+ [
+ -2.0970726,
+ 47.537579
+ ],
+ [
+ -2.0971369,
+ 47.5372995
+ ],
+ [
+ -2.0985064,
+ 47.5373937
+ ],
+ [
+ -2.0985699,
+ 47.5358788
+ ],
+ [
+ -2.09709,
+ 47.5359349
+ ],
+ [
+ -2.0969257,
+ 47.5370863
+ ],
+ [
+ -2.095042,
+ 47.5369865
+ ],
+ [
+ -2.0952451,
+ 47.5358194
+ ],
+ [
+ -2.0954114,
+ 47.5355333
+ ],
+ [
+ -2.0938334,
+ 47.5352965
+ ],
+ [
+ -2.0941646,
+ 47.5340648
+ ],
+ [
+ -2.095981,
+ 47.5344615
+ ],
+ [
+ -2.0960972,
+ 47.5332256
+ ],
+ [
+ -2.0944213,
+ 47.5330515
+ ],
+ [
+ -2.0941078,
+ 47.5340524
+ ],
+ [
+ -2.0936,
+ 47.5339916
+ ],
+ [
+ -2.0938559,
+ 47.5329916
+ ],
+ [
+ -2.0913789,
+ 47.5327399
+ ],
+ [
+ -2.091097,
+ 47.5336964
+ ],
+ [
+ -2.0921731,
+ 47.5338105
+ ],
+ [
+ -2.0916294,
+ 47.5357709
+ ],
+ [
+ -2.0944859,
+ 47.5362129
+ ],
+ [
+ -2.0918948,
+ 47.5378077
+ ],
+ [
+ -2.0890662,
+ 47.5374166
+ ],
+ [
+ -2.0890993,
+ 47.5373123
+ ],
+ [
+ -2.0899648,
+ 47.5345041
+ ],
+ [
+ -2.0884154,
+ 47.5342524
+ ],
+ [
+ -2.0876442,
+ 47.5354176
+ ],
+ [
+ -2.0861738,
+ 47.5345591
+ ],
+ [
+ -2.0852659,
+ 47.5354391
+ ],
+ [
+ -2.0863325,
+ 47.5359446
+ ],
+ [
+ -2.0858411,
+ 47.5367668
+ ]
+ ]
+ ]
+ },
+ "id": "way/42177798"
+ },
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/351442695",
+ "landuse": "forest"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.0829894,
+ 47.5365523
+ ],
+ [
+ -2.0836702,
+ 47.5357914
+ ],
+ [
+ -2.0830157,
+ 47.5355245
+ ],
+ [
+ -2.082335,
+ 47.5362855
+ ],
+ [
+ -2.0829894,
+ 47.5365523
+ ]
+ ]
+ ]
+ },
+ "id": "way/351442695"
+ },
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/351442696",
+ "landuse": "forest"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.0805728,
+ 47.5352153
+ ],
+ [
+ -2.0799277,
+ 47.5348752
+ ],
+ [
+ -2.0785581,
+ 47.5353584
+ ],
+ [
+ -2.0796362,
+ 47.5356388
+ ],
+ [
+ -2.0805728,
+ 47.5352153
+ ]
+ ]
+ ]
+ },
+ "id": "way/351442696"
+ },
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/461571423",
+ "landuse": "forest"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.10165,
+ 47.5380042
+ ],
+ [
+ -2.1016071,
+ 47.5372292
+ ],
+ [
+ -2.1005235,
+ 47.5374538
+ ],
+ [
+ -2.1005342,
+ 47.5381853
+ ],
+ [
+ -2.10165,
+ 47.5380042
+ ]
+ ]
+ ]
+ },
+ "id": "way/461571423"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/data/osm-meadow.geojson b/data/osm-meadow.geojson
new file mode 100644
index 0000000..dd2f439
--- /dev/null
+++ b/data/osm-meadow.geojson
@@ -0,0 +1,470 @@
+{
+ "type": "FeatureCollection",
+ "generator": "overpass-turbo",
+ "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.",
+ "timestamp": "2026-01-23T17:35:45Z",
+ "features": [
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/41866248",
+ "CLC:code": "231",
+ "CLC:id": "FR-82838",
+ "CLC:year": "2006",
+ "landuse": "meadow",
+ "source": "Union européenne - SOeS, CORINE Land Cover, 2006."
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.0654165,
+ 47.5392901
+ ],
+ [
+ -2.0658808,
+ 47.539259
+ ],
+ [
+ -2.0664027,
+ 47.538728
+ ],
+ [
+ -2.0679012,
+ 47.5382926
+ ],
+ [
+ -2.0687364,
+ 47.538394
+ ],
+ [
+ -2.0737163,
+ 47.5388765
+ ],
+ [
+ -2.0750389,
+ 47.5395203
+ ],
+ [
+ -2.0757212,
+ 47.5394503
+ ],
+ [
+ -2.0762971,
+ 47.5396331
+ ],
+ [
+ -2.0789548,
+ 47.5403952
+ ],
+ [
+ -2.0791894,
+ 47.5404484
+ ],
+ [
+ -2.0793623,
+ 47.5400875
+ ],
+ [
+ -2.0812069,
+ 47.540448
+ ],
+ [
+ -2.0810401,
+ 47.5408836
+ ],
+ [
+ -2.0799464,
+ 47.5431592
+ ],
+ [
+ -2.0820925,
+ 47.5433263
+ ],
+ [
+ -2.081413,
+ 47.5417513
+ ],
+ [
+ -2.0815342,
+ 47.5415359
+ ],
+ [
+ -2.0826568,
+ 47.5417755
+ ],
+ [
+ -2.0828547,
+ 47.5414224
+ ],
+ [
+ -2.0840949,
+ 47.5393972
+ ],
+ [
+ -2.0855269,
+ 47.5371524
+ ],
+ [
+ -2.0858411,
+ 47.5367668
+ ],
+ [
+ -2.0863325,
+ 47.5359446
+ ],
+ [
+ -2.0852659,
+ 47.5354391
+ ],
+ [
+ -2.0861738,
+ 47.5345591
+ ],
+ [
+ -2.0876442,
+ 47.5354176
+ ],
+ [
+ -2.0885888,
+ 47.5339946
+ ],
+ [
+ -2.0895487,
+ 47.5325485
+ ],
+ [
+ -2.0897385,
+ 47.5324036
+ ],
+ [
+ -2.0911836,
+ 47.5303879
+ ],
+ [
+ -2.0912244,
+ 47.5302067
+ ],
+ [
+ -2.0913895,
+ 47.5292051
+ ],
+ [
+ -2.0914531,
+ 47.5287441
+ ],
+ [
+ -2.0915747,
+ 47.5279182
+ ],
+ [
+ -2.0917536,
+ 47.5272104
+ ],
+ [
+ -2.0920277,
+ 47.5266634
+ ],
+ [
+ -2.093305,
+ 47.5242317
+ ],
+ [
+ -2.0943355,
+ 47.522319
+ ],
+ [
+ -2.0855654,
+ 47.518571
+ ],
+ [
+ -2.0848623,
+ 47.5194019
+ ],
+ [
+ -2.0812502,
+ 47.523475
+ ],
+ [
+ -2.0787509,
+ 47.523382
+ ],
+ [
+ -2.0703617,
+ 47.5232749
+ ],
+ [
+ -2.0684338,
+ 47.5298216
+ ],
+ [
+ -2.0701719,
+ 47.5300389
+ ],
+ [
+ -2.0704937,
+ 47.5312704
+ ],
+ [
+ -2.0678544,
+ 47.5311835
+ ],
+ [
+ -2.0665241,
+ 47.5348198
+ ],
+ [
+ -2.0679048,
+ 47.5350831
+ ],
+ [
+ -2.068075,
+ 47.5353672
+ ],
+ [
+ -2.0679917,
+ 47.5357713
+ ],
+ [
+ -2.0676532,
+ 47.5360566
+ ],
+ [
+ -2.0662961,
+ 47.5358334
+ ],
+ [
+ -2.0656176,
+ 47.5357218
+ ],
+ [
+ -2.0655477,
+ 47.5366596
+ ],
+ [
+ -2.0650356,
+ 47.5366864
+ ],
+ [
+ -2.0644473,
+ 47.5370571
+ ],
+ [
+ -2.0635383,
+ 47.5386194
+ ],
+ [
+ -2.0638666,
+ 47.5387906
+ ],
+ [
+ -2.0654165,
+ 47.5392901
+ ]
+ ]
+ ]
+ },
+ "id": "way/41866248"
+ },
+ {
+ "type": "Feature",
+ "properties": {
+ "@id": "way/317257624",
+ "landuse": "meadow"
+ },
+ "geometry": {
+ "type": "Polygon",
+ "coordinates": [
+ [
+ [
+ -2.0711,
+ 47.5470613
+ ],
+ [
+ -2.071553,
+ 47.5474233
+ ],
+ [
+ -2.0717838,
+ 47.5474512
+ ],
+ [
+ -2.0722041,
+ 47.5477349
+ ],
+ [
+ -2.0734238,
+ 47.5479351
+ ],
+ [
+ -2.0737205,
+ 47.5471174
+ ],
+ [
+ -2.072781,
+ 47.5468281
+ ],
+ [
+ -2.0728799,
+ 47.5465722
+ ],
+ [
+ -2.0735804,
+ 47.5463052
+ ],
+ [
+ -2.0741408,
+ 47.5461661
+ ],
+ [
+ -2.0744458,
+ 47.5457545
+ ],
+ [
+ -2.0749402,
+ 47.5456544
+ ],
+ [
+ -2.0757232,
+ 47.5453873
+ ],
+ [
+ -2.0761517,
+ 47.5457044
+ ],
+ [
+ -2.0764979,
+ 47.5459881
+ ],
+ [
+ -2.0768249,
+ 47.5458545
+ ],
+ [
+ -2.07705,
+ 47.5457545
+ ],
+ [
+ -2.0775116,
+ 47.5456822
+ ],
+ [
+ -2.0777753,
+ 47.545671
+ ],
+ [
+ -2.0778722,
+ 47.5456187
+ ],
+ [
+ -2.0779319,
+ 47.5455709
+ ],
+ [
+ -2.0778659,
+ 47.5454596
+ ],
+ [
+ -2.0776846,
+ 47.5454207
+ ],
+ [
+ -2.0774044,
+ 47.545404
+ ],
+ [
+ -2.0774951,
+ 47.5452816
+ ],
+ [
+ -2.0782615,
+ 47.5450313
+ ],
+ [
+ -2.0770665,
+ 47.544959
+ ],
+ [
+ -2.0787586,
+ 47.5443546
+ ],
+ [
+ -2.0799091,
+ 47.543667
+ ],
+ [
+ -2.0782081,
+ 47.5435471
+ ],
+ [
+ -2.0774454,
+ 47.5438351
+ ],
+ [
+ -2.0769351,
+ 47.5437779
+ ],
+ [
+ -2.0766779,
+ 47.5434341
+ ],
+ [
+ -2.0766759,
+ 47.5431504
+ ],
+ [
+ -2.0730926,
+ 47.5427106
+ ],
+ [
+ -2.0727903,
+ 47.5431395
+ ],
+ [
+ -2.0725151,
+ 47.5426963
+ ],
+ [
+ -2.0711593,
+ 47.5424013
+ ],
+ [
+ -2.0708077,
+ 47.54232
+ ],
+ [
+ -2.0706382,
+ 47.544816
+ ],
+ [
+ -2.0712317,
+ 47.5445927
+ ],
+ [
+ -2.0726661,
+ 47.5448747
+ ],
+ [
+ -2.0733992,
+ 47.5450408
+ ],
+ [
+ -2.0737013,
+ 47.5452649
+ ],
+ [
+ -2.0715552,
+ 47.5462124
+ ],
+ [
+ -2.0711,
+ 47.5470613
+ ]
+ ]
+ ]
+ },
+ "id": "way/317257624"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/data/plan-antenne-vinterhackv2.png b/data/plan-antenne-vinterhackv2.png
new file mode 100644
index 0000000..dd1fb28
Binary files /dev/null and b/data/plan-antenne-vinterhackv2.png differ
diff --git a/data/plan-antenne.png b/data/plan-antenne.png
new file mode 100644
index 0000000..a6a9039
Binary files /dev/null and b/data/plan-antenne.png differ
diff --git a/data/plan-antenne.png.aux.xml b/data/plan-antenne.png.aux.xml
new file mode 100644
index 0000000..3ff4954
--- /dev/null
+++ b/data/plan-antenne.png.aux.xml
@@ -0,0 +1,38 @@
+
+
+ Adobe ImageReady
+
+
+ PIXEL
+
+
+
+ YES
+ 0
+ 255
+ 218.15973494056
+ 85.093114873712
+ 100
+
+
+
+
+ YES
+ 0
+ 255
+ 218.45250574406
+ 84.571176572918
+ 100
+
+
+
+
+ YES
+ 0
+ 255
+ 218.63923945257
+ 84.321846779873
+ 100
+
+
+
diff --git a/data/plan-antenne.png.points b/data/plan-antenne.png.points
new file mode 100644
index 0000000..ec19c58
--- /dev/null
+++ b/data/plan-antenne.png.points
@@ -0,0 +1,4 @@
+#CRS: PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],MEMBER["World Geodetic System 1984 (G2296)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]
+mapX,mapY,sourceX,sourceY,enable,dX,dY,residual
+-232839.30623557584476657,6030944.43660930637270212,1055.42348611094462285,-2143.27233077166692965,1,0.00000006070922609,0.00000002263141141,0.00000006479036128
+-232872.91792297590291128,6030985.33372651413083076,1517.17960685351613392,-2587.81491661940481208,1,-0.00000005016590876,-0.00000001978787623,0.00000005392752959
diff --git a/data/plan-antenne_modified.tif b/data/plan-antenne_modified.tif
new file mode 100644
index 0000000..7dfa905
Binary files /dev/null and b/data/plan-antenne_modified.tif differ
diff --git a/data/plan-antenne_modified.tif.aux.xml b/data/plan-antenne_modified.tif.aux.xml
new file mode 100644
index 0000000..cab5df1
--- /dev/null
+++ b/data/plan-antenne_modified.tif.aux.xml
@@ -0,0 +1,32 @@
+
+
+
+ YES
+ 0
+ 255
+ 187.96746973511
+ 108.0809194344
+ 100
+
+
+
+
+ YES
+ 0
+ 255
+ 188.2266331056
+ 107.78782945717
+ 100
+
+
+
+
+ YES
+ 0
+ 255
+ 188.39418075033
+ 107.65861311573
+ 100
+
+
+