diff --git a/frontend/data/countries.json b/frontend/data/countries.json new file mode 100644 index 0000000..4a653d7 --- /dev/null +++ b/frontend/data/countries.json @@ -0,0 +1,102 @@ +[ + { + "name": "Switzerland", + "file": "switzerland.json", + "hint": "Alpine country in Central Europe", + "cities": [ + { "name": "Bern", "lon": 7.4474, "lat": 46.948 }, + { "name": "Zurich", "lon": 8.5417, "lat": 47.3769 }, + { "name": "Geneva", "lon": 6.1432, "lat": 46.2044 } + ] + }, + { + "name": "Norway", + "file": "norway.json", + "hint": "Scandinavian country with long coastline", + "cities": [ + { "name": "Oslo", "lon": 10.7522, "lat": 59.9139 }, + { "name": "Bergen", "lon": 5.3221, "lat": 60.39299 }, + { "name": "Tromso", "lon": 18.9553, "lat": 69.6492 } + ] + }, + { + "name": "Italy", + "file": "italy.json", + "hint": "Boot-shaped peninsula in Southern Europe", + "cities": [ + { "name": "Rome", "lon": 12.4964, "lat": 41.9028 }, + { "name": "Milan", "lon": 9.19, "lat": 45.4642 }, + { "name": "Naples", "lon": 14.2681, "lat": 40.8518 } + ] + }, + { + "name": "Japan", + "file": "japan.json", + "hint": "Island nation in East Asia", + "cities": [ + { "name": "Tokyo", "lon": 139.6503, "lat": 35.6762 }, + { "name": "Osaka", "lon": 135.5023, "lat": 34.6937 }, + { "name": "Sapporo", "lon": 141.3545, "lat": 43.0618 } + ] + }, + { + "name": "Brazil", + "file": "brazil.json", + "hint": "Largest country in South America", + "cities": [ + { "name": "Brasilia", "lon": -47.8825, "lat": -15.7942 }, + { "name": "Sao Paulo", "lon": -46.6333, "lat": -23.5505 }, + { "name": "Manaus", "lon": -60.0217, "lat": -3.119 } + ] + }, + { + "name": "Australia", + "file": "australia.json", + "hint": "Continent and country in the Southern Hemisphere", + "cities": [ + { "name": "Canberra", "lon": 149.13, "lat": -35.2809 }, + { "name": "Sydney", "lon": 151.2093, "lat": -33.8688 }, + { "name": "Perth", "lon": 115.8613, "lat": -31.9523 } + ] + }, + { + "name": "France", + "file": "france.json", + "hint": "Western Europe, roughly hexagonal shape", + "cities": [ + { "name": "Paris", "lon": 2.3522, "lat": 48.8566 }, + { "name": "Lyon", "lon": 4.8357, "lat": 45.764 }, + { "name": "Marseille", "lon": 5.3698, "lat": 43.2965 } + ] + }, + { + "name": "India", + "file": "india.json", + "hint": "Large peninsula in South Asia", + "cities": [ + { "name": "New Delhi", "lon": 77.209, "lat": 28.6139 }, + { "name": "Mumbai", "lon": 72.8777, "lat": 19.076 }, + { "name": "Chennai", "lon": 80.2707, "lat": 13.0827 } + ] + }, + { + "name": "Canada", + "file": "canada.json", + "hint": "Second largest country in the world", + "cities": [ + { "name": "Ottawa", "lon": -75.6972, "lat": 45.4215 }, + { "name": "Vancouver", "lon": -123.1207, "lat": 49.2827 }, + { "name": "Toronto", "lon": -79.3832, "lat": 43.6532 } + ] + }, + { + "name": "Germany", + "file": "germany.json", + "hint": "Central European country", + "cities": [ + { "name": "Berlin", "lon": 13.405, "lat": 52.52 }, + { "name": "Munich", "lon": 11.582, "lat": 48.1351 }, + { "name": "Hamburg", "lon": 9.9937, "lat": 53.5511 } + ] + } +] diff --git a/frontend/data/outlines/australia.json b/frontend/data/outlines/australia.json index a93028f..070f93f 100644 --- a/frontend/data/outlines/australia.json +++ b/frontend/data/outlines/australia.json @@ -9,285 +9,1547 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { - "minLon": 112.91944420700008, - "maxLon": 159.1064559250001, - "minLat": -54.75042083099993, - "maxLat": -9.240166924999926 + "geoBounds": { + "minLon": 113.156979514, + "maxLon": 153.63062584700003, + "minLat": -43.641289971999925, + "maxLat": -10.687676690999922 + }, + "projectedBounds": { + "minX": 1.974962, + "maxX": 2.68136, + "minY": -0.848225, + "maxY": -0.187626 + }, + "projection": { + "padding": 6, + "scale": 124.575596, + "xOffset": 6, + "yOffset": 8.852744 }, "rings": [ [ { - "x": 40.31, - "y": 49.14 - }, - { - "x": 6.62, - "y": 56.24 - }, - { - "x": 4.54, - "y": 54.98 - }, - { - "x": 6.07, - "y": 49.51 - }, - { - "x": 0.51, - "y": 37.16 - }, - { - "x": 2.06, - "y": 37.97 - }, - { - "x": 1.29, - "y": 35.75 - }, - { - "x": 2.85, - "y": 37.52 - }, - { - "x": 1.02, - "y": 33.34 - }, - { - "x": 2.22, - "y": 27.93 - }, - { - "x": 17.4, - "y": 22.84 - }, - { - "x": 21.64, - "y": 15.77 - }, - { - "x": 23.06, - "y": 18.36 - }, - { - "x": 23.06, - "y": 15.24 - }, - { - "x": 25.95, - "y": 15.74 - }, - { - "x": 24.81, - "y": 13.81 - }, - { - "x": 28.36, - "y": 10.28 - }, - { - "x": 31.39, - "y": 10.33 - }, - { - "x": 32.7, - "y": 13.75 - }, - { - "x": 36.39, - "y": 13.08 - }, - { - "x": 38.23, - "y": 6.94 - }, - { - "x": 42.95, - "y": 6.36 - }, - { - "x": 41.27, - "y": 4.15 - }, - { - "x": 51.21, - "y": 5.84 - }, - { - "x": 48.82, - "y": 12.54 - }, - { - "x": 59.77, - "y": 18.44 - }, - { - "x": 64.15, - "y": 3.18 - }, - { - "x": 66.82, - "y": 11.34 - }, - { - "x": 70.21, - "y": 12.53 - }, - { - "x": 72.34, - "y": 21.36 - }, - { - "x": 77.65, - "y": 24.17 - }, - { - "x": 87.22, - "y": 36.68 - }, - { - "x": 86.91, - "y": 47.98 - }, - { - "x": 80.25, - "y": 62.09 - }, - { - "x": 72.51, - "y": 65.71 - }, - { - "x": 69.32, - "y": 62.9 - }, - { - "x": 66.29, - "y": 65.08 - }, - { - "x": 61.65, - "y": 64.08 - }, - { - "x": 58.19, - "y": 61.59 - }, - { - "x": 57.25, - "y": 57.43 - }, - { - "x": 54.53, + "x": 45.96, "y": 57.97 }, { - "x": 54.52, - "y": 54.72 + "x": 45.09, + "y": 57.64 }, { - "x": 51.79, - "y": 57.17 + "x": 40.88, + "y": 58.1 }, { - "x": 53.81, - "y": 51.15 + "x": 36.73, + "y": 59.68 }, { - "x": 49.9, - "y": 56.62 + "x": 33.94, + "y": 59.68 }, { - "x": 45.96, - "y": 51.01 + "x": 30.01, + "y": 61.66 }, { - "x": 40.84, - "y": 49.41 + "x": 28.55, + "y": 64.01 }, { - "x": 40.31, - "y": 49.14 - } - ], - [ - { - "x": 75.95, - "y": 74.69 + "x": 25.43, + "y": 64.22 }, { - "x": 71.68, - "y": 75.39 + "x": 25.24, + "y": 63.7 }, { - "x": 68.81, - "y": 69.04 + "x": 23.78, + "y": 63.68 }, { - "x": 76.41, - "y": 69.44 + "x": 20.88, + "y": 63.97 }, { - "x": 75.94, - "y": 74.66 + "x": 19.95, + "y": 64.54 }, { - "x": 75.95, - "y": 74.69 - } - ], - [ + "x": 19.92, + "y": 65.18 + }, { - "x": 54.58, - "y": 58.4 + "x": 19.2, + "y": 65.57 + }, + { + "x": 18.36, + "y": 65.36 + }, + { + "x": 16.96, + "y": 66.85 + }, + { + "x": 16.17, + "y": 66.89 + }, + { + "x": 16.38, + "y": 67.13 + }, + { + "x": 13.57, + "y": 66.94 + }, + { + "x": 12.13, + "y": 66.37 + }, + { + "x": 11.34, + "y": 65.34 + }, + { + "x": 10.27, + "y": 65.12 + }, + { + "x": 9.94, + "y": 64.39 + }, + { + "x": 9.98, + "y": 62.92 + }, + { + "x": 10.81, + "y": 63.2 + }, + { + "x": 11.55, + "y": 62.26 + }, + { + "x": 11.53, + "y": 58.19 + }, + { + "x": 10.14, + "y": 55.22 + }, + { + "x": 9.66, + "y": 51.68 + }, + { + "x": 8.19, + "y": 49.2 + }, + { + "x": 7.86, + "y": 47.26 + }, + { + "x": 6, + "y": 44.42 + }, + { + "x": 6.26, + "y": 44.62 + }, + { + "x": 6.32, + "y": 44.05 + }, + { + "x": 6.49, + "y": 44.98 + }, + { + "x": 6.45, + "y": 44.09 + }, + { + "x": 6.7, + "y": 45.2 + }, + { + "x": 6.81, + "y": 44.7 + }, + { + "x": 6.89, + "y": 45.43 + }, + { + "x": 7.02, + "y": 45.12 + }, + { + "x": 7.11, + "y": 45.64 + }, + { + "x": 7.43, + "y": 45.51 + }, + { + "x": 7.58, + "y": 44.89 + }, + { + "x": 6.57, + "y": 43.4 + }, + { + "x": 6.78, + "y": 42.87 + }, + { + "x": 7.24, + "y": 44.53 + }, + { + "x": 7.52, + "y": 43.92 + }, + { + "x": 7.98, + "y": 45.11 + }, + { + "x": 8.34, + "y": 44.82 + }, + { + "x": 8.4, + "y": 43.67 + }, + { + "x": 6.51, + "y": 40.24 + }, + { + "x": 7.33, + "y": 37.99 + }, + { + "x": 7.06, + "y": 35.89 + }, + { + "x": 7.72, + "y": 34.42 + }, + { + "x": 8.21, + "y": 34.07 + }, + { + "x": 8.07, + "y": 35.66 + }, + { + "x": 8.61, + "y": 35.68 + }, + { + "x": 9.24, + "y": 34.17 + }, + { + "x": 11.05, + "y": 33.37 + }, + { + "x": 13.9, + "y": 31.11 + }, + { + "x": 14.04, + "y": 31.53 + }, + { + "x": 15.96, + "y": 31.4 + }, + { + "x": 16.82, + "y": 30.71 + }, + { + "x": 18.28, + "y": 30.53 + }, + { + "x": 18.91, + "y": 29.8 + }, + { + "x": 19.99, + "y": 30.03 + }, + { + "x": 23.33, + "y": 28.77 + }, + { + "x": 24.82, + "y": 26.33 + }, + { + "x": 26.02, + "y": 25.48 + }, + { + "x": 25.6, + "y": 25.23 + }, + { + "x": 25.6, + "y": 23.59 + }, + { + "x": 26.49, + "y": 22.5 + }, + { + "x": 27.01, + "y": 22.5 + }, + { + "x": 27.22, + "y": 21.67 + }, + { + "x": 28.64, + "y": 24.35 + }, + { + "x": 28.69, + "y": 22.96 + }, + { + "x": 29.39, + "y": 23.49 + }, + { + "x": 29.13, + "y": 23 + }, + { + "x": 29.47, + "y": 22.61 + }, + { + "x": 29.07, + "y": 22.72 + }, + { + "x": 28.33, + "y": 21.86 + }, + { + "x": 28.95, + "y": 21.7 + }, + { + "x": 28.69, + "y": 21.08 + }, + { + "x": 29.28, + "y": 21.7 + }, + { + "x": 29.38, + "y": 21.22 + }, + { + "x": 31.54, + "y": 21.64 + }, + { + "x": 30.45, + "y": 21.47 + }, + { + "x": 31.17, + "y": 20.29 + }, + { + "x": 30.63, + "y": 20.72 + }, + { + "x": 30.39, + "y": 19.66 + }, + { + "x": 31.06, + "y": 19.54 + }, + { + "x": 31.02, + "y": 19.04 + }, + { + "x": 32.15, + "y": 19.64 + }, + { + "x": 32.06, + "y": 19.18 + }, + { + "x": 31.5, + "y": 19.14 + }, + { + "x": 31.87, + "y": 18.84 + }, + { + "x": 31.41, + "y": 18.79 + }, + { + "x": 31.91, + "y": 18.4 + }, + { + "x": 32.11, + "y": 18.84 + }, + { + "x": 32.11, + "y": 18.5 + }, + { + "x": 32.69, + "y": 18.78 + }, + { + "x": 32.06, + "y": 17.86 + }, + { + "x": 32.51, + "y": 17.34 + }, + { + "x": 33.03, + "y": 17.45 + }, + { + "x": 33.09, + "y": 16.73 + }, + { + "x": 33.14, + "y": 17.65 + }, + { + "x": 33.34, + "y": 17.12 + }, + { + "x": 33.75, + "y": 17.66 + }, + { + "x": 34.11, + "y": 15.98 + }, + { + "x": 34.55, + "y": 16.74 + }, + { + "x": 35.07, + "y": 16.07 + }, + { + "x": 35.24, + "y": 16.74 + }, + { + "x": 35.8, + "y": 15.65 + }, + { + "x": 37.01, + "y": 16.1 + }, + { + "x": 38.78, + "y": 17.84 + }, + { + "x": 38.33, + "y": 19.59 + }, + { + "x": 38.54, + "y": 18.88 + }, + { + "x": 38.9, + "y": 19.38 + }, + { + "x": 38.7, + "y": 18.6 + }, + { + "x": 38.95, + "y": 18.26 + }, + { + "x": 39.24, + "y": 18.58 + }, + { + "x": 39.43, + "y": 17.92 + }, + { + "x": 40.65, + "y": 18.24 + }, + { + "x": 40.78, + "y": 18.98 + }, + { + "x": 40.94, + "y": 18.1 + }, + { + "x": 42.03, + "y": 18.91 + }, + { + "x": 41.85, + "y": 18.11 + }, + { + "x": 42.61, + "y": 17.85 + }, + { + "x": 42.11, + "y": 18.07 + }, + { + "x": 41.73, + "y": 17.6 + }, + { + "x": 42.16, + "y": 17.42 + }, + { + "x": 41.26, + "y": 16.96 + }, + { + "x": 42.05, + "y": 16.21 + }, + { + "x": 42.38, + "y": 14.97 + }, + { + "x": 43.34, + "y": 14.76 + }, + { + "x": 42.9, + "y": 13.86 + }, + { + "x": 43.72, + "y": 13.09 + }, + { + "x": 44.13, + "y": 13.32 + }, + { + "x": 43.88, + "y": 12.65 + }, + { + "x": 44.58, + "y": 13.19 + }, + { + "x": 44.41, + "y": 12.65 + }, + { + "x": 45.44, + "y": 11.86 + }, + { + "x": 45.77, + "y": 12.41 + }, + { + "x": 47.52, + "y": 12.11 + }, + { + "x": 47.81, + "y": 12.61 + }, + { + "x": 47.98, + "y": 12.07 + }, + { + "x": 48.62, + "y": 12.06 + }, + { + "x": 48.05, + "y": 10.6 + }, + { + "x": 46.46, + "y": 10.23 + }, + { + "x": 46.93, + "y": 9.83 + }, + { + "x": 47.35, + "y": 10.45 + }, + { + "x": 47.29, + "y": 9.85 + }, + { + "x": 47.59, + "y": 10.14 + }, + { + "x": 47.72, + "y": 9.81 + }, + { + "x": 48.44, + "y": 10.67 + }, + { + "x": 48.95, + "y": 10.28 + }, + { + "x": 50.3, + "y": 11.46 }, { "x": 51.13, - "y": 58.61 + "y": 11.15 }, { - "x": 54.54, - "y": 58.4 + "x": 51.74, + "y": 11.94 }, { - "x": 54.58, - "y": 58.4 + "x": 52.99, + "y": 11.65 + }, + { + "x": 53.97, + "y": 12.43 + }, + { + "x": 55.45, + "y": 11.23 + }, + { + "x": 54.91, + "y": 12.22 + }, + { + "x": 55.78, + "y": 11.91 + }, + { + "x": 55.74, + "y": 12.8 + }, + { + "x": 56.29, + "y": 12.69 + }, + { + "x": 56.46, + "y": 12.26 + }, + { + "x": 56.06, + "y": 12.12 + }, + { + "x": 56.91, + "y": 11.53 + }, + { + "x": 57.11, + "y": 12.35 + }, + { + "x": 57.81, + "y": 12.53 + }, + { + "x": 56.69, + "y": 13.49 + }, + { + "x": 57.1, + "y": 13.98 + }, + { + "x": 56.75, + "y": 13.93 + }, + { + "x": 56.69, + "y": 14.53 + }, + { + "x": 56.37, + "y": 14.68 + }, + { + "x": 56.39, + "y": 14.09 + }, + { + "x": 55.41, + "y": 14.72 + }, + { + "x": 55.45, + "y": 15.64 + }, + { + "x": 55.84, + "y": 15.47 + }, + { + "x": 55.47, + "y": 16.66 + }, + { + "x": 54.29, + "y": 17.85 + }, + { + "x": 54.51, + "y": 18.35 + }, + { + "x": 57.22, + "y": 20.58 + }, + { + "x": 57.82, + "y": 20.42 + }, + { + "x": 60.42, + "y": 22.31 + }, + { + "x": 62.21, + "y": 22.76 + }, + { + "x": 62.79, + "y": 23.79 + }, + { + "x": 64.36, + "y": 24.6 + }, + { + "x": 65.47, + "y": 24.45 + }, + { + "x": 66.23, + "y": 23.95 + }, + { + "x": 67.48, + "y": 20.87 + }, + { + "x": 67.99, + "y": 18.5 + }, + { + "x": 67.55, + "y": 15.92 + }, + { + "x": 68.05, + "y": 14.55 + }, + { + "x": 67.81, + "y": 13.94 + }, + { + "x": 68.3, + "y": 13.25 + }, + { + "x": 68.58, + "y": 13.79 + }, + { + "x": 68.73, + "y": 13.35 + }, + { + "x": 68.16, + "y": 12.77 + }, + { + "x": 67.82, + "y": 12.97 + }, + { + "x": 68.43, + "y": 11.69 + }, + { + "x": 68.76, + "y": 11.92 + }, + { + "x": 69.04, + "y": 9.43 + }, + { + "x": 69.9, + "y": 8.85 + }, + { + "x": 70.59, + "y": 11.4 + }, + { + "x": 71.43, + "y": 11.69 + }, + { + "x": 71.05, + "y": 12.49 + }, + { + "x": 71.83, + "y": 13.13 + }, + { + "x": 71.67, + "y": 13.72 + }, + { + "x": 72.07, + "y": 13.62 + }, + { + "x": 72.04, + "y": 15.67 + }, + { + "x": 72.59, + "y": 17.13 + }, + { + "x": 73.04, + "y": 17.33 + }, + { + "x": 74.1, + "y": 16.58 + }, + { + "x": 74.53, + "y": 17.47 + }, + { + "x": 75.99, + "y": 18.34 + }, + { + "x": 76.11, + "y": 21.76 + }, + { + "x": 76.92, + "y": 22.97 + }, + { + "x": 77.32, + "y": 22.73 + }, + { + "x": 77.73, + "y": 24.44 + }, + { + "x": 77.43, + "y": 25.82 + }, + { + "x": 78.15, + "y": 26.48 + }, + { + "x": 78.13, + "y": 27.47 + }, + { + "x": 79.38, + "y": 28.27 + }, + { + "x": 79.64, + "y": 27.98 + }, + { + "x": 79.87, + "y": 28.51 + }, + { + "x": 80.5, + "y": 28.29 + }, + { + "x": 81.07, + "y": 29.48 + }, + { + "x": 81.37, + "y": 29.21 + }, + { + "x": 82.63, + "y": 30.33 + }, + { + "x": 82.98, + "y": 30 + }, + { + "x": 83.46, + "y": 30.43 + }, + { + "x": 83.79, + "y": 31.11 + }, + { + "x": 83.19, + "y": 31.2 + }, + { + "x": 85, + "y": 33.47 + }, + { + "x": 85.37, + "y": 35.69 + }, + { + "x": 85.7, + "y": 35.42 + }, + { + "x": 86.21, + "y": 36.05 + }, + { + "x": 86.22, + "y": 34.87 + }, + { + "x": 87.43, + "y": 35.97 + }, + { + "x": 87.58, + "y": 35.37 + }, + { + "x": 87.88, + "y": 38.09 + }, + { + "x": 89.48, + "y": 39.48 + }, + { + "x": 89.98, + "y": 39.31 + }, + { + "x": 91.69, + "y": 42.08 + }, + { + "x": 92.44, + "y": 42.34 + }, + { + "x": 92.68, + "y": 43.98 + }, + { + "x": 92.76, + "y": 43.62 + }, + { + "x": 93.08, + "y": 43.9 + }, + { + "x": 93.09, + "y": 46.67 + }, + { + "x": 92.71, + "y": 46.96 + }, + { + "x": 93.6, + "y": 48.42 + }, + { + "x": 94, + "y": 50.59 + }, + { + "x": 92.72, + "y": 55.15 + }, + { + "x": 92.76, + "y": 56.63 + }, + { + "x": 91.64, + "y": 59.09 + }, + { + "x": 91.63, + "y": 60.12 + }, + { + "x": 90.09, + "y": 61.21 + }, + { + "x": 89.21, + "y": 62.92 + }, + { + "x": 88.78, + "y": 62.95 + }, + { + "x": 88.89, + "y": 64.04 + }, + { + "x": 87.85, + "y": 65.61 + }, + { + "x": 87.94, + "y": 67.01 + }, + { + "x": 87.62, + "y": 66.88 + }, + { + "x": 87.76, + "y": 67.28 + }, + { + "x": 86.52, + "y": 68.74 + }, + { + "x": 85.84, + "y": 72.44 + }, + { + "x": 86.07, + "y": 73.54 + }, + { + "x": 85.49, + "y": 73.59 + }, + { + "x": 85, + "y": 74.33 + }, + { + "x": 81.23, + "y": 74.88 + }, + { + "x": 79.25, + "y": 76.82 + }, + { + "x": 77.9, + "y": 76.9 + }, + { + "x": 78.03, + "y": 77.45 + }, + { + "x": 78.45, + "y": 77.17 + }, + { + "x": 78.27, + "y": 78.11 + }, + { + "x": 77.8, + "y": 77.33 + }, + { + "x": 77.24, + "y": 77.44 + }, + { + "x": 76.99, + "y": 76.72 + }, + { + "x": 76.05, + "y": 76.41 + }, + { + "x": 76.45, + "y": 75.99 + }, + { + "x": 76.21, + "y": 75.55 + }, + { + "x": 75.11, + "y": 76.34 + }, + { + "x": 74.53, + "y": 75.84 + }, + { + "x": 75.2, + "y": 75.87 + }, + { + "x": 75.49, + "y": 75.36 + }, + { + "x": 75.09, + "y": 74.56 + }, + { + "x": 73.87, + "y": 75.25 + }, + { + "x": 74.59, + "y": 75.33 + }, + { + "x": 74.48, + "y": 75.71 + }, + { + "x": 72.05, + "y": 77.31 + }, + { + "x": 69.77, + "y": 75.95 + }, + { + "x": 68.19, + "y": 75.65 + }, + { + "x": 67.43, + "y": 76.05 + }, + { + "x": 66.83, + "y": 75.28 + }, + { + "x": 65.23, + "y": 74.7 + }, + { + "x": 63.92, + "y": 72.92 + }, + { + "x": 63.65, + "y": 72.06 + }, + { + "x": 64.05, + "y": 71.15 + }, + { + "x": 63.42, + "y": 69.68 + }, + { + "x": 62.01, + "y": 68.34 + }, + { + "x": 63.65, + "y": 70.09 + }, + { + "x": 62.28, + "y": 68.42 + }, + { + "x": 62.48, + "y": 68.13 + }, + { + "x": 62.92, + "y": 68.64 + }, + { + "x": 62.98, + "y": 67.81 + }, + { + "x": 60.25, + "y": 68.46 + }, + { + "x": 60.97, + "y": 67.72 + }, + { + "x": 61.21, + "y": 66.23 + }, + { + "x": 60.23, + "y": 64.55 + }, + { + "x": 59.47, + "y": 67.16 + }, + { + "x": 57.49, + "y": 67.49 + }, + { + "x": 57.88, + "y": 66.55 + }, + { + "x": 58.81, + "y": 66.59 + }, + { + "x": 58.82, + "y": 64.58 + }, + { + "x": 59.87, + "y": 63.13 + }, + { + "x": 59.6, + "y": 62.24 + }, + { + "x": 60.1, + "y": 61.77 + }, + { + "x": 59.52, + "y": 60.32 + }, + { + "x": 59.53, + "y": 61.52 + }, + { + "x": 58.82, + "y": 61.92 + }, + { + "x": 58.33, + "y": 63.26 + }, + { + "x": 56.95, + "y": 63.94 + }, + { + "x": 55.53, + "y": 65.57 + }, + { + "x": 55.23, + "y": 66.29 + }, + { + "x": 55.69, + "y": 66.11 + }, + { + "x": 55.59, + "y": 66.83 + }, + { + "x": 53.73, + "y": 65.74 + }, + { + "x": 53.95, + "y": 65.3 + }, + { + "x": 54.59, + "y": 65.78 + }, + { + "x": 54.06, + "y": 64.16 + }, + { + "x": 53.15, + "y": 63.2 + }, + { + "x": 52.85, + "y": 62.01 + }, + { + "x": 52.04, + "y": 62.09 + }, + { + "x": 51.47, + "y": 61.38 + }, + { + "x": 51.48, + "y": 60.82 + }, + { + "x": 51.97, + "y": 60.73 + }, + { + "x": 51.64, + "y": 60.16 + }, + { + "x": 51.02, + "y": 60.39 + }, + { + "x": 51.21, + "y": 59.98 + }, + { + "x": 50.56, + "y": 59.24 + }, + { + "x": 49.71, + "y": 59.54 + }, + { + "x": 48.66, + "y": 58.86 + }, + { + "x": 47.48, + "y": 59.07 + }, + { + "x": 46.5, + "y": 58.29 + }, + { + "x": 45.96, + "y": 57.97 } ], [ { - "x": 87.58, - "y": 34.61 + "x": 81.75, + "y": 89.92 }, { - "x": 86.9, - "y": 36.38 + "x": 80.95, + "y": 89.36 }, { - "x": 87.56, - "y": 34.58 + "x": 81.09, + "y": 89.04 }, { - "x": 87.58, - "y": 34.61 - } - ], - [ - { - "x": 40.31, - "y": 4.77 + "x": 81.56, + "y": 89.29 }, { - "x": 37.77, - "y": 4.38 + "x": 81.41, + "y": 88.94 }, { - "x": 40.3, - "y": 4.74 + "x": 80.74, + "y": 88.75 }, { - "x": 40.31, - "y": 4.77 + "x": 80.53, + "y": 89.37 + }, + { + "x": 80.2, + "y": 88.57 + }, + { + "x": 80.13, + "y": 90.03 + }, + { + "x": 79.52, + "y": 89.62 + }, + { + "x": 79.8, + "y": 90.12 + }, + { + "x": 79.42, + "y": 91.06 + }, + { + "x": 78.62, + "y": 90.63 + }, + { + "x": 77.46, + "y": 90.88 + }, + { + "x": 77.29, + "y": 90.32 + }, + { + "x": 77.91, + "y": 90.18 + }, + { + "x": 77.23, + "y": 89.81 + }, + { + "x": 77.04, + "y": 90.1 + }, + { + "x": 75.81, + "y": 88.06 + }, + { + "x": 75.65, + "y": 86.86 + }, + { + "x": 76.26, + "y": 87.79 + }, + { + "x": 76.45, + "y": 87.28 + }, + { + "x": 75.73, + "y": 86.86 + }, + { + "x": 74.69, + "y": 84.58 + }, + { + "x": 74.63, + "y": 82.35 + }, + { + "x": 78.68, + "y": 83.9 + }, + { + "x": 81.72, + "y": 82.62 + }, + { + "x": 82.21, + "y": 82.92 + }, + { + "x": 82.55, + "y": 86.88 + }, + { + "x": 82.18, + "y": 86.11 + }, + { + "x": 81.52, + "y": 87.88 + }, + { + "x": 81.75, + "y": 89.89 + }, + { + "x": 81.75, + "y": 89.92 } ] ] diff --git a/frontend/data/outlines/brazil.json b/frontend/data/outlines/brazil.json index b8e9310..8bb1dad 100644 --- a/frontend/data/outlines/brazil.json +++ b/frontend/data/outlines/brazil.json @@ -9,285 +9,1307 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { + "geoBounds": { "minLon": -74.01847469099994, - "maxLon": -28.877064581999946, + "maxLon": -34.79360917899993, "minLat": -33.74228037499992, "maxLat": 5.267224833000029 }, + "projectedBounds": { + "minX": -1.291866, + "maxX": -0.607263, + "minY": -0.626241, + "maxY": 0.09206 + }, + "projection": { + "padding": 6, + "scale": 122.511339, + "xOffset": 8.064182, + "yOffset": 6 + }, "rings": [ [ { - "x": 36.37, - "y": 90.9 + "x": 43.16, + "y": 85.05 }, { - "x": 45.1, - "y": 80.82 + "x": 46.79, + "y": 80.6 }, { - "x": 40.22, - "y": 70.64 + "x": 47.25, + "y": 80.66 }, { - "x": 35.52, - "y": 70.09 + "x": 47.08, + "y": 80.25 }, { - "x": 36.67, - "y": 60.2 + "x": 49.15, + "y": 78.54 }, { - "x": 34.73, - "y": 55.26 + "x": 51.23, + "y": 77.65 }, { - "x": 30.7, - "y": 55.2 + "x": 51.59, + "y": 75.5 }, { - "x": 30.01, - "y": 48.87 + "x": 51.06, + "y": 74 }, { - "x": 19.98, - "y": 44.25 + "x": 49.58, + "y": 73.88 }, { - "x": 19.1, - "y": 38.33 + "x": 50.34, + "y": 70.28 }, { - "x": 11.97, - "y": 41.99 + "x": 49.5, + "y": 69.71 }, { - "x": 7.48, - "y": 41.73 + "x": 47.83, + "y": 70.06 }, { - "x": 7.74, - "y": 37.68 + "x": 47.4, + "y": 67 }, { - "x": 4.04, - "y": 39.15 - }, - { - "x": 0, - "y": 32.84 - }, - { - "x": 2.44, - "y": 26.66 - }, - { - "x": 8.96, - "y": 24.5 - }, - { - "x": 8.78, - "y": 11.99 - }, - { - "x": 10.81, - "y": 11.84 - }, - { - "x": 9.22, - "y": 9.12 - }, - { - "x": 14.61, - "y": 8.02 - }, - { - "x": 18.88, - "y": 11.81 - }, - { - "x": 23.59, - "y": 7.65 - }, - { - "x": 20.41, - "y": 2.55 - }, - { - "x": 24.69, - "y": 4.36 - }, - { - "x": 30.58, - "y": 0 - }, - { - "x": 33.6, - "y": 10.46 - }, - { - "x": 40.02, - "y": 8.75 - }, - { - "x": 39.98, - "y": 7.02 - }, - { - "x": 46.67, - "y": 7.92 - }, - { - "x": 49.85, - "y": 2.12 - }, - { - "x": 53.46, - "y": 10.49 - }, - { - "x": 47.21, - "y": 17.6 - }, - { - "x": 51.35, - "y": 15.84 - }, - { - "x": 51.39, - "y": 18.55 - }, - { - "x": 54.49, - "y": 18.06 - }, - { - "x": 53.95, - "y": 20.37 - }, - { - "x": 57.55, - "y": 15.2 - }, - { - "x": 60.23, - "y": 15.32 - }, - { - "x": 65.32, - "y": 18.2 - }, - { - "x": 64.74, - "y": 21.96 - }, - { - "x": 67.71, - "y": 19.5 - }, - { - "x": 75.39, - "y": 20.8 - }, - { - "x": 85.31, - "y": 26.69 - }, - { - "x": 86.89, - "y": 31.85 - }, - { - "x": 85.76, - "y": 37.07 - }, - { - "x": 77.74, - "y": 46.15 - }, - { - "x": 77.27, - "y": 58.82 - }, - { - "x": 73.16, - "y": 69.94 - }, - { - "x": 55.99, - "y": 78.49 - }, - { - "x": 55.98, - "y": 86.59 - }, - { - "x": 48.61, - "y": 95.96 - }, - { - "x": 51.96, - "y": 91.56 - }, - { - "x": 50.36, - "y": 90.43 + "x": 46.89, + "y": 66.19 }, { "x": 45.72, - "y": 100 + "y": 65.69 }, { - "x": 44.88, - "y": 95.67 + "x": 44.76, + "y": 66.2 }, { - "x": 36.4, - "y": 90.93 + "x": 42.34, + "y": 65.69 }, { - "x": 36.37, - "y": 90.9 - } - ], - [ - { - "x": 50.58, - "y": 15.08 + "x": 42.71, + "y": 63.12 }, { - "x": 48.97, - "y": 17.3 + "x": 41.98, + "y": 61.31 }, { - "x": 50.54, - "y": 15.05 + "x": 42.62, + "y": 60.89 }, { - "x": 50.58, - "y": 15.08 - } - ], - [ - { - "x": 56.61, - "y": 14.98 + "x": 42.05, + "y": 60.32 }, { - "x": 51.87, - "y": 18.05 + "x": 43.46, + "y": 56.91 + }, + { + "x": 42.74, + "y": 55.37 + }, + { + "x": 41.46, + "y": 54.7 + }, + { + "x": 41.59, + "y": 52.59 + }, + { + "x": 37.7, + "y": 52.53 + }, + { + "x": 37.51, + "y": 50.78 + }, + { + "x": 36.79, + "y": 49.94 + }, + { + "x": 37.46, + "y": 49.91 + }, + { + "x": 37.03, + "y": 47.07 + }, + { + "x": 35.8, + "y": 46.34 + }, + { + "x": 34.11, + "y": 46.5 + }, + { + "x": 33.52, + "y": 45.65 + }, + { + "x": 32.07, + "y": 45.32 + }, + { + "x": 31.46, + "y": 44.56 + }, + { + "x": 28.68, + "y": 44.15 + }, + { + "x": 27.35, + "y": 43.12 + }, + { + "x": 26.52, + "y": 41.55 + }, + { + "x": 26.5, + "y": 38.09 + }, + { + "x": 23.86, + "y": 38.56 + }, + { + "x": 19.62, + "y": 41.19 + }, + { + "x": 17.95, + "y": 40.8 + }, + { + "x": 15.29, + "y": 40.97 + }, + { + "x": 15.53, + "y": 37.54 + }, + { + "x": 13.88, + "y": 38.76 + }, + { + "x": 11.96, + "y": 38.78 + }, + { + "x": 11.71, + "y": 37.76 + }, + { + "x": 9.78, + "y": 37.49 + }, + { + "x": 10.31, + "y": 36.61 + }, + { + "x": 8.06, + "y": 33.45 + }, + { + "x": 8.72, + "y": 32.94 + }, + { + "x": 8.62, + "y": 32.04 + }, + { + "x": 9.93, + "y": 31.16 + }, + { + "x": 9.74, + "y": 30.3 + }, + { + "x": 10.42, + "y": 28.27 + }, + { + "x": 14.98, + "y": 26.17 + }, + { + "x": 16.72, + "y": 26.46 + }, + { + "x": 17.94, + "y": 19.81 + }, + { + "x": 17.47, + "y": 18.4 + }, + { + "x": 16.51, + "y": 17.62 + }, + { + "x": 16.54, + "y": 16.02 + }, + { + "x": 18.5, + "y": 15.89 + }, + { + "x": 18.18, + "y": 15.06 + }, + { + "x": 16.97, + "y": 15.01 + }, + { + "x": 16.96, + "y": 13.63 + }, + { + "x": 20.58, + "y": 13.6 + }, + { + "x": 20.52, + "y": 12.97 + }, + { + "x": 21.16, + "y": 13.54 + }, + { + "x": 22.13, + "y": 12.7 + }, + { + "x": 22.82, + "y": 13.62 + }, + { + "x": 22.89, + "y": 14.76 + }, + { + "x": 23.34, + "y": 14.66 + }, + { + "x": 24.6, + "y": 15.68 + }, + { + "x": 26.05, + "y": 15.17 + }, + { + "x": 26.24, + "y": 15.89 + }, + { + "x": 27.06, + "y": 14.87 + }, + { + "x": 28.61, + "y": 14.05 + }, + { + "x": 28.73, + "y": 14.36 + }, + { + "x": 29.41, + "y": 13.16 + }, + { + "x": 30.83, + "y": 12.43 + }, + { + "x": 30.8, + "y": 12.1 + }, + { + "x": 29.38, + "y": 11.99 + }, + { + "x": 29.05, + "y": 9.59 + }, + { + "x": 27.79, + "y": 8.11 + }, + { + "x": 29.12, + "y": 8.45 + }, + { + "x": 29.41, + "y": 8.97 + }, + { + "x": 30.87, + "y": 8.81 + }, + { + "x": 31.86, + "y": 9.66 + }, + { + "x": 32.12, + "y": 8.67 + }, + { + "x": 35.88, + "y": 7.61 + }, + { + "x": 36.73, + "y": 6.79 + }, + { + "x": 36.46, + "y": 6.14 + }, + { + "x": 37.58, + "y": 6 + }, + { + "x": 38.08, + "y": 6.45 + }, + { + "x": 37.7, + "y": 7.59 + }, + { + "x": 38.7, + "y": 7.89 + }, + { + "x": 39.05, + "y": 8.85 + }, + { + "x": 38.33, + "y": 9.61 + }, + { + "x": 38.05, + "y": 11.17 + }, + { + "x": 38.55, + "y": 13.3 + }, + { + "x": 40.49, + "y": 14.74 + }, + { + "x": 43.77, + "y": 13.05 + }, + { + "x": 46.69, + "y": 13.32 + }, + { + "x": 46.28, + "y": 12.45 + }, + { + "x": 46.63, + "y": 11.87 + }, + { + "x": 47.18, + "y": 12.15 + }, + { + "x": 48.82, + "y": 11.7 + }, + { + "x": 50.55, + "y": 12.76 + }, + { + "x": 51.37, + "y": 12.21 + }, + { + "x": 53.09, + "y": 12.63 + }, + { + "x": 56.03, + "y": 8.22 + }, + { + "x": 56.35, + "y": 8.87 + }, + { + "x": 56.18, + "y": 7.77 + }, + { + "x": 56.8, + "y": 8.36 + }, + { + "x": 56.91, + "y": 9.47 + }, + { + "x": 57.11, + "y": 8.97 + }, + { + "x": 57.75, + "y": 12.85 + }, + { + "x": 59.59, + "y": 13.66 + }, + { + "x": 59.67, + "y": 14.48 + }, + { + "x": 59.1, + "y": 14.67 + }, + { + "x": 59.66, + "y": 14.79 + }, + { + "x": 57.73, + "y": 16.92 + }, + { + "x": 56.58, + "y": 17.45 + }, + { + "x": 55.28, + "y": 20.14 + }, + { + "x": 53.63, + "y": 20.7 + }, + { + "x": 54.55, + "y": 20.53 + }, + { + "x": 54.7, + "y": 20.9 + }, + { + "x": 57.63, + "y": 19.23 + }, + { + "x": 57.38, + "y": 19.69 + }, + { + "x": 58.02, + "y": 21 + }, + { + "x": 57.64, + "y": 21.48 + }, + { + "x": 58.01, + "y": 21.13 + }, + { + "x": 58.53, + "y": 21.71 + }, + { + "x": 59.47, + "y": 21.18 + }, + { + "x": 59.82, + "y": 21.79 + }, + { + "x": 59.75, + "y": 21.35 + }, + { + "x": 60.29, + "y": 21.58 + }, + { + "x": 60.66, + "y": 21.08 + }, + { + "x": 60.14, + "y": 23.01 + }, + { + "x": 61.63, + "y": 20.7 + }, + { + "x": 61.49, + "y": 21.23 + }, + { + "x": 62.29, + "y": 20.24 + }, + { + "x": 62.78, + "y": 20.83 + }, + { + "x": 62.67, + "y": 20.02 + }, + { + "x": 63.62, + "y": 18.69 + }, + { + "x": 63.78, + "y": 18.95 + }, + { + "x": 64.11, + "y": 18.49 + }, + { + "x": 64.28, + "y": 18.9 + }, + { + "x": 64.59, + "y": 18.51 + }, + { + "x": 65, + "y": 19.02 + }, + { + "x": 64.85, + "y": 18.55 + }, + { + "x": 65.21, + "y": 18.55 + }, + { + "x": 65.95, + "y": 19.21 + }, + { + "x": 66.22, + "y": 18.8 + }, + { + "x": 66.37, + "y": 19.29 + }, + { + "x": 66.69, + "y": 19.13 + }, + { + "x": 66.37, + "y": 19.46 + }, + { + "x": 67.06, + "y": 19.14 + }, + { + "x": 66.96, + "y": 19.51 + }, + { + "x": 67.44, + "y": 19.62 + }, + { + "x": 67.55, + "y": 19.22 + }, + { + "x": 67.41, + "y": 19.81 + }, + { + "x": 68.02, + "y": 19.53 + }, + { + "x": 68.09, + "y": 19.95 + }, + { + "x": 68.26, + "y": 19.55 + }, + { + "x": 68.22, + "y": 20.03 + }, + { + "x": 68.61, + "y": 19.7 + }, + { + "x": 68.67, + "y": 20.2 + }, + { + "x": 69.22, + "y": 20.03 + }, + { + "x": 69.13, + "y": 20.58 + }, + { + "x": 69.45, + "y": 20.11 + }, + { + "x": 69.42, + "y": 21.01 + }, + { + "x": 70.39, + "y": 20.32 + }, + { + "x": 70.52, + "y": 21.16 + }, + { + "x": 71.13, + "y": 21.21 + }, + { + "x": 71.18, + "y": 21.67 + }, + { + "x": 70.49, + "y": 22.15 + }, + { + "x": 70.85, + "y": 22.47 + }, + { + "x": 71.26, + "y": 21.87 + }, + { + "x": 71.48, + "y": 22.22 + }, + { + "x": 70.85, + "y": 22.83 + }, + { + "x": 70.55, + "y": 24.34 + }, + { + "x": 71.62, + "y": 22.59 + }, + { + "x": 72.18, + "y": 22.44 + }, + { + "x": 71.51, + "y": 23.29 + }, + { + "x": 71.82, + "y": 23.42 + }, + { + "x": 72.41, + "y": 22.73 + }, + { + "x": 73.42, + "y": 22.74 + }, + { + "x": 73.44, + "y": 22.28 + }, + { + "x": 78.14, + "y": 23.73 + }, + { + "x": 78.12, + "y": 23.43 + }, + { + "x": 80.83, + "y": 23.37 + }, + { + "x": 84.06, + "y": 25.19 + }, + { + "x": 86.83, + "y": 27.79 + }, + { + "x": 90.4, + "y": 28.29 + }, + { + "x": 91.94, + "y": 32.66 + }, + { + "x": 91.9, + "y": 34.29 + }, + { + "x": 90.84, + "y": 37.02 + }, + { + "x": 90.01, + "y": 38.06 + }, + { + "x": 89.44, + "y": 37.93 + }, + { + "x": 89.76, + "y": 38.22 + }, + { + "x": 88.46, + "y": 39.88 + }, + { + "x": 86.92, + "y": 41.22 + }, + { + "x": 86.63, + "y": 40.99 + }, + { + "x": 86.9, + "y": 41.35 + }, + { + "x": 86.21, + "y": 41.73 + }, + { + "x": 85.82, + "y": 43.24 + }, + { + "x": 84.35, + "y": 45.21 + }, + { + "x": 83.94, + "y": 45.35 + }, + { + "x": 83.6, + "y": 44.38 + }, + { + "x": 83.36, + "y": 44.96 + }, + { + "x": 83.1, + "y": 44.74 + }, + { + "x": 83.53, + "y": 45.04 + }, + { + "x": 82.69, + "y": 46.63 + }, + { + "x": 82.92, + "y": 46.41 + }, + { + "x": 82.98, + "y": 47.15 + }, + { + "x": 82.62, + "y": 46.94 + }, + { + "x": 82.86, + "y": 47.9 + }, + { + "x": 83.09, + "y": 47.29 + }, + { + "x": 82.8, + "y": 49.01 + }, + { + "x": 83.24, + "y": 51.62 + }, + { + "x": 82.5, + "y": 54.54 + }, + { + "x": 82.65, + "y": 55.7 + }, + { + "x": 81.53, + "y": 57.03 + }, + { + "x": 81.26, + "y": 60.03 + }, + { + "x": 78.54, + "y": 64.33 + }, + { + "x": 78.72, + "y": 65.49 + }, + { + "x": 76.6, + "y": 66.76 + }, + { + "x": 76.5, + "y": 67.79 + }, + { + "x": 74.32, + "y": 67.77 + }, + { + "x": 74.23, + "y": 67.06 + }, + { + "x": 73.81, + "y": 67.25 + }, + { + "x": 73.92, + "y": 67.82 + }, + { + "x": 70.85, + "y": 67.93 + }, + { + "x": 71, + "y": 68.66 + }, + { + "x": 70.02, + "y": 68.78 + }, + { + "x": 69.2, + "y": 69.77 + }, + { + "x": 68.07, + "y": 69.64 + }, + { + "x": 67.36, + "y": 70.22 + }, + { + "x": 67.15, + "y": 69.87 + }, + { + "x": 63.59, + "y": 72.6 + }, + { + "x": 63.94, + "y": 72.65 + }, + { + "x": 63.25, + "y": 73.6 + }, + { + "x": 63.4, + "y": 73.15 + }, + { + "x": 62.72, + "y": 73.1 + }, + { + "x": 62.69, + "y": 73.64 + }, + { + "x": 62.11, + "y": 73.35 + }, + { + "x": 62.93, + "y": 73.87 + }, + { + "x": 62.05, + "y": 74.57 + }, + { + "x": 62.49, + "y": 74.56 + }, + { + "x": 62.45, + "y": 75.3 + }, + { + "x": 61.99, + "y": 75.05 + }, + { + "x": 62.68, + "y": 77.64 + }, + { + "x": 62.07, + "y": 80.87 + }, + { + "x": 61.83, + "y": 80.52 + }, + { + "x": 62.08, + "y": 80.97 + }, + { + "x": 59.83, + "y": 83.2 + }, + { + "x": 57.88, + "y": 87.17 + }, + { + "x": 54.98, + "y": 89.99 + }, + { + "x": 54.96, + "y": 89.13 + }, + { + "x": 55.49, + "y": 89.2 + }, + { + "x": 56.76, + "y": 88.22 + }, + { + "x": 56.95, + "y": 87.22 + }, + { + "x": 57.32, + "y": 87.39 + }, + { + "x": 57.33, + "y": 86.79 + }, + { + "x": 57.94, + "y": 86.38 + }, + { + "x": 57.87, + "y": 85.47 + }, + { + "x": 58.21, + "y": 85.69 + }, + { + "x": 58.11, + "y": 85.03 + }, + { + "x": 57.42, + "y": 85.64 + }, + { + "x": 56.68, + "y": 84.59 + }, + { + "x": 56.58, + "y": 85.13 + }, + { + "x": 57.09, + "y": 85.45 + }, + { + "x": 56.71, + "y": 86.51 + }, + { + "x": 56.48, + "y": 86.17 + }, + { + "x": 56.34, + "y": 87.26 + }, + { + "x": 55.22, + "y": 87.89 + }, + { + "x": 54.68, + "y": 88.91 + }, + { + "x": 54.95, + "y": 89.98 + }, + { + "x": 53.39, + "y": 92.92 }, { "x": 51.91, - "y": 13.99 + "y": 93.87 }, { - "x": 56.62, - "y": 14.82 + "x": 51.91, + "y": 92.35 }, { - "x": 56.61, - "y": 14.98 + "x": 52.77, + "y": 91.39 + }, + { + "x": 51.76, + "y": 90.64 + }, + { + "x": 51.39, + "y": 89.7 + }, + { + "x": 48.21, + "y": 87.67 + }, + { + "x": 47.46, + "y": 86.68 + }, + { + "x": 46.57, + "y": 87.26 + }, + { + "x": 46.57, + "y": 86.55 + }, + { + "x": 44.81, + "y": 84.83 + }, + { + "x": 44, + "y": 85.29 + }, + { + "x": 43.2, + "y": 85.08 + }, + { + "x": 43.16, + "y": 85.05 + } + ], + [ + { + "x": 62.71, + "y": 18.51 + }, + { + "x": 62.32, + "y": 19.6 + }, + { + "x": 61.73, + "y": 19.72 + }, + { + "x": 61.92, + "y": 20.31 + }, + { + "x": 61.58, + "y": 20.04 + }, + { + "x": 61.9, + "y": 20.38 + }, + { + "x": 61.11, + "y": 20.26 + }, + { + "x": 61.08, + "y": 20.75 + }, + { + "x": 60.42, + "y": 20.48 + }, + { + "x": 60.36, + "y": 20.97 + }, + { + "x": 59.97, + "y": 20.66 + }, + { + "x": 59.9, + "y": 21.14 + }, + { + "x": 59.09, + "y": 21.08 + }, + { + "x": 58.87, + "y": 20.45 + }, + { + "x": 58.62, + "y": 21.2 + }, + { + "x": 57.7, + "y": 20.35 + }, + { + "x": 57.73, + "y": 19.6 + }, + { + "x": 58.4, + "y": 19.5 + }, + { + "x": 57.74, + "y": 19.49 + }, + { + "x": 57.84, + "y": 18.46 + }, + { + "x": 58.25, + "y": 18.73 + }, + { + "x": 57.92, + "y": 18.07 + }, + { + "x": 58.63, + "y": 17.5 + }, + { + "x": 61.79, + "y": 17.61 + }, + { + "x": 62.86, + "y": 17.86 + }, + { + "x": 62.71, + "y": 18.38 + }, + { + "x": 62.71, + "y": 18.51 } ] ] diff --git a/frontend/data/outlines/canada.json b/frontend/data/outlines/canada.json index e9e057b..8cce662 100644 --- a/frontend/data/outlines/canada.json +++ b/frontend/data/outlines/canada.json @@ -9,1829 +9,6223 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { + "geoBounds": { "minLon": -141.00556393099993, "maxLon": -52.61660722599993, "minLat": 41.66908559200006, "maxLat": 83.11652252800008 }, + "projectedBounds": { + "minX": -2.461011, + "maxX": -0.918333, + "minY": 0.801416, + "maxY": 2.811046 + }, + "projection": { + "padding": 6, + "scale": 43.789138, + "xOffset": 16.223724, + "yOffset": 6 + }, "rings": [ [ { - "x": 51.87, - "y": 81.42 + "x": 51.26, + "y": 85.58 }, { - "x": 20.27, - "y": 82.33 + "x": 51.26, + "y": 86.02 }, { - "x": 18.32, - "y": 77.66 + "x": 29.92, + "y": 86.02 }, { - "x": 14.97, - "y": 77.08 + "x": 29.87, + "y": 85.2 }, { - "x": 15.88, - "y": 73.07 + "x": 29.59, + "y": 85.56 }, { - "x": 14.27, - "y": 74.36 + "x": 29.17, + "y": 85.27 }, { - "x": 14.04, - "y": 70.18 + "x": 29.58, + "y": 85.19 }, { - "x": 13.25, - "y": 71.73 + "x": 29.35, + "y": 84.65 }, { - "x": 11.91, - "y": 69.35 + "x": 29, + "y": 85.14 }, { - "x": 13.04, - "y": 66.67 + "x": 28.59, + "y": 84.79 }, { - "x": 6.76, - "y": 56.8 + "x": 28.95, + "y": 84.23 }, { - "x": 3.98, - "y": 58.43 + "x": 28.39, + "y": 84.45 }, { - "x": 0.01, - "y": 55.04 + "x": 28.6, + "y": 83.72 }, { - "x": 0, - "y": 32.49 + "x": 28.32, + "y": 84.34 }, { - "x": 6.63, - "y": 34.88 + "x": 28.11, + "y": 83.97 }, { - "x": 7.38, - "y": 32.3 + "x": 27.48, + "y": 84.22 }, { - "x": 12.82, - "y": 30.99 + "x": 27.97, + "y": 83.51 }, { - "x": 9.15, - "y": 34.8 + "x": 27.75, + "y": 84.02 }, { - "x": 14.74, - "y": 30.22 + "x": 27.3, + "y": 83.54 }, { - "x": 17.6, - "y": 33.29 - }, - { - "x": 18.78, - "y": 31.27 - }, - { - "x": 18.74, - "y": 33.17 - }, - { - "x": 29.44, - "y": 34.38 - }, - { - "x": 29.29, - "y": 36.94 - }, - { - "x": 34.99, - "y": 36.45 - }, - { - "x": 38.2, - "y": 40.46 - }, - { - "x": 37.48, - "y": 36.25 - }, - { - "x": 40, - "y": 34.93 - }, - { - "x": 36.42, - "y": 35.8 - }, - { - "x": 39.35, - "y": 34.19 - }, - { - "x": 43.88, - "y": 37.22 - }, - { - "x": 51.03, - "y": 35.76 - }, - { - "x": 51.3, - "y": 39.7 - }, - { - "x": 53.89, - "y": 34.93 - }, - { - "x": 50.32, - "y": 31.34 - }, - { - "x": 51.79, - "y": 26.94 - }, - { - "x": 56, - "y": 31.26 - }, - { - "x": 54.4, - "y": 32.43 - }, - { - "x": 57.35, - "y": 32.96 - }, - { - "x": 57.4, - "y": 35.89 - }, - { - "x": 58.49, - "y": 33.44 - }, - { - "x": 59.94, - "y": 34.52 - }, - { - "x": 60.52, - "y": 38.6 - }, - { - "x": 63.9, - "y": 34 - }, - { - "x": 62.71, - "y": 32.01 - }, - { - "x": 66.47, - "y": 32.51 - }, - { - "x": 67.32, - "y": 38.88 - }, - { - "x": 64.99, - "y": 40.45 - }, - { - "x": 63.46, - "y": 38.73 - }, - { - "x": 64.84, - "y": 40.82 - }, - { - "x": 61.39, - "y": 40.01 - }, - { - "x": 60.67, - "y": 42.91 - }, - { - "x": 56.01, - "y": 41.43 - }, - { - "x": 61.17, - "y": 43.37 - }, - { - "x": 57.46, - "y": 47.06 - }, - { - "x": 53.43, - "y": 45.66 - }, - { - "x": 57, - "y": 48.39 - }, - { - "x": 52.27, - "y": 54.57 - }, - { - "x": 54.45, - "y": 63.22 - }, - { - "x": 57.02, - "y": 62.45 - }, - { - "x": 62.89, - "y": 67.84 - }, - { - "x": 66.38, - "y": 67.44 - }, - { - "x": 66.89, - "y": 74.61 - }, - { - "x": 69.77, - "y": 78.15 - }, - { - "x": 69.28, - "y": 68.66 - }, - { - "x": 72.96, - "y": 64.43 - }, - { - "x": 70.64, - "y": 59.1 - }, - { - "x": 71.11, - "y": 50.23 - }, - { - "x": 76.18, - "y": 49.78 - }, - { - "x": 81.05, - "y": 53.56 - }, - { - "x": 79.16, - "y": 55.61 - }, - { - "x": 80.05, - "y": 58.74 - }, - { - "x": 82.19, - "y": 58.71 - }, - { - "x": 81.05, - "y": 61.15 - }, - { - "x": 84.8, - "y": 59.8 - }, - { - "x": 86.62, - "y": 55.09 - }, - { - "x": 90.87, - "y": 67.85 - }, - { - "x": 94.65, - "y": 68.84 - }, - { - "x": 90.61, - "y": 70.94 - }, - { - "x": 94.51, - "y": 69.77 - }, - { - "x": 96.53, - "y": 74.81 - }, - { - "x": 91.49, - "y": 79.39 - }, - { - "x": 84.33, - "y": 79.25 - }, - { - "x": 80.7, - "y": 84.36 - }, - { - "x": 79.12, + "x": 26.54, "y": 83.65 }, { - "x": 80.07, - "y": 85.94 + "x": 26.32, + "y": 83.35 }, { - "x": 72.64, - "y": 95.24 + "x": 26.84, + "y": 83.2 }, { - "x": 66.25, - "y": 99.99 + "x": 26.33, + "y": 83.23 }, { - "x": 64.37, - "y": 88.28 + "x": 26.54, + "y": 82.89 }, { - "x": 51.93, - "y": 81.46 + "x": 27.23, + "y": 82.76 }, { - "x": 51.87, - "y": 81.42 - } - ], - [ - { - "x": 83.53, - "y": 91.53 - }, - { - "x": 81.2, - "y": 86.03 - }, - { - "x": 79.32, - "y": 91.4 - }, - { - "x": 75, - "y": 91.97 - }, - { - "x": 86.03, - "y": 81.78 - }, - { - "x": 86.75, - "y": 83.71 - }, - { - "x": 83.9, - "y": 84.73 - }, - { - "x": 90.55, - "y": 91.31 - }, - { - "x": 85.45, - "y": 95.65 - }, - { - "x": 84.65, - "y": 93.33 - }, - { - "x": 87.85, - "y": 91.09 - }, - { - "x": 86.27, - "y": 89.33 - }, - { - "x": 83.52, - "y": 91.51 - }, - { - "x": 83.53, - "y": 91.53 - } - ], - [ - { - "x": 99.99, - "y": 85.87 - }, - { - "x": 98.94, - "y": 88.06 - }, - { - "x": 98.34, - "y": 85.03 - }, - { - "x": 96.87, - "y": 87.46 - }, - { - "x": 96.44, - "y": 84.83 - }, - { - "x": 92.43, - "y": 85.64 - }, - { - "x": 96.29, - "y": 75.97 - }, - { - "x": 95.2, - "y": 80.99 - }, - { - "x": 96.04, - "y": 79.52 - }, - { - "x": 96.87, - "y": 82.2 - }, - { - "x": 99.01, - "y": 81.62 - }, - { - "x": 99.97, - "y": 85.86 - }, - { - "x": 99.99, - "y": 85.87 - } - ], - [ - { - "x": 11.19, - "y": 74.66 - }, - { - "x": 9.55, - "y": 72.31 - }, - { - "x": 11.21, - "y": 74.67 - }, - { - "x": 11.19, - "y": 74.66 - } - ], - [ - { - "x": 12.17, - "y": 70.51 - }, - { - "x": 13.17, - "y": 72.07 - }, - { - "x": 12.15, - "y": 70.52 - }, - { - "x": 12.17, - "y": 70.51 - } - ], - [ - { - "x": 9.53, - "y": 72.16 - }, - { - "x": 10.57, - "y": 69.85 - }, - { - "x": 9.55, - "y": 72.17 - }, - { - "x": 9.53, - "y": 72.16 - } - ], - [ - { - "x": 51.81, - "y": 34.39 - }, - { - "x": 46.85, - "y": 33.96 - }, - { - "x": 48.74, - "y": 31.9 - }, - { - "x": 51.8, - "y": 34.38 - }, - { - "x": 51.81, - "y": 34.39 - } - ], - [ - { - "x": 45.41, - "y": 32.11 - }, - { - "x": 42.44, - "y": 32.38 - }, - { - "x": 44.39, - "y": 33.59 - }, - { - "x": 43.09, - "y": 34.53 - }, - { - "x": 38.94, - "y": 32.84 - }, - { - "x": 31.41, - "y": 35.38 - }, - { - "x": 26.66, - "y": 31.67 - }, - { - "x": 33.36, - "y": 30.8 - }, - { - "x": 26.5, - "y": 30.18 - }, - { - "x": 29.36, - "y": 27.97 - }, - { - "x": 24.78, - "y": 27.11 - }, - { - "x": 29.89, - "y": 23.48 - }, - { - "x": 33.09, - "y": 26.32 - }, - { - "x": 35.51, - "y": 24.61 - }, - { - "x": 37.53, - "y": 27.77 - }, - { - "x": 38.67, - "y": 23.66 - }, - { - "x": 45.39, - "y": 31.96 - }, - { - "x": 45.41, - "y": 32.11 - } - ], - [ - { - "x": 77, - "y": 39.52 - }, - { - "x": 76.95, - "y": 35.9 - }, - { - "x": 72.84, - "y": 34.83 - }, - { - "x": 74, - "y": 33.49 - }, - { - "x": 70.13, - "y": 30 - }, - { - "x": 70.38, - "y": 31.94 - }, - { - "x": 67.97, - "y": 32.33 - }, - { - "x": 59.1, - "y": 30.48 - }, - { - "x": 58.21, - "y": 29.01 - }, - { - "x": 61.1, - "y": 29.24 - }, - { - "x": 57.7, - "y": 28.13 - }, - { - "x": 58.78, - "y": 23.8 - }, - { - "x": 63.55, - "y": 22.61 - }, - { - "x": 61.4, - "y": 25.03 - }, - { - "x": 63.55, - "y": 28.54 - }, - { - "x": 61.3, - "y": 29.26 - }, - { - "x": 63.64, - "y": 29.29 - }, - { - "x": 62.59, - "y": 24.66 - }, - { - "x": 64.9, - "y": 24.44 - }, - { - "x": 63.23, - "y": 23.63 - }, - { - "x": 66.7, - "y": 22.63 - }, - { - "x": 67.9, - "y": 27.09 - }, - { - "x": 69.22, - "y": 25.6 - }, - { - "x": 71.57, - "y": 27.42 - }, - { - "x": 70.36, - "y": 26.02 - }, - { - "x": 72.54, - "y": 25.03 - }, - { - "x": 74.74, - "y": 26.2 - }, - { - "x": 73.43, - "y": 27.55 - }, - { - "x": 75.61, - "y": 26.74 - }, - { - "x": 74.59, - "y": 28.79 - }, - { - "x": 76.12, - "y": 27.36 - }, - { - "x": 75.94, - "y": 29.1 - }, - { - "x": 79.07, - "y": 28.58 - }, - { - "x": 77.42, - "y": 30.17 - }, - { - "x": 79.61, - "y": 29.04 - }, - { - "x": 78.59, - "y": 31.59 - }, - { - "x": 82.27, - "y": 30.31 - }, - { - "x": 79.8, - "y": 32.02 - }, - { - "x": 82.53, - "y": 30.86 - }, - { - "x": 83.6, - "y": 32.3 - }, - { - "x": 80.31, - "y": 32.79 - }, - { - "x": 84.12, - "y": 33.58 - }, - { - "x": 81.03, - "y": 34.5 - }, - { - "x": 90.21, - "y": 39.77 - }, - { - "x": 87.65, - "y": 43.95 - }, - { - "x": 85.42, - "y": 41.89 - }, - { - "x": 86.72, - "y": 40.45 - }, - { - "x": 81.63, - "y": 40.83 - }, - { - "x": 86.37, - "y": 46.04 - }, - { - "x": 85.8, - "y": 49.58 - }, - { - "x": 81.47, - "y": 46.7 - }, - { - "x": 84.89, - "y": 51.22 - }, - { - "x": 78.39, - "y": 48.11 - }, - { - "x": 76.6, - "y": 44.52 - }, - { - "x": 71.27, - "y": 45.09 - }, - { - "x": 71.97, - "y": 42.57 - }, - { - "x": 74.25, - "y": 44.38 - }, - { - "x": 73.6, - "y": 42.93 - }, - { - "x": 76.38, - "y": 42.62 - }, - { - "x": 76.93, - "y": 39.55 - }, - { - "x": 77, - "y": 39.52 - } - ], - [ - { - "x": 29.06, - "y": 23.18 - }, - { - "x": 20.6, - "y": 29.02 - }, - { - "x": 17.12, - "y": 26.91 - }, - { - "x": 18.38, - "y": 21.15 - }, - { - "x": 29.04, - "y": 23.14 - }, - { - "x": 29.06, - "y": 23.18 - } - ], - [ - { - "x": 20.01, - "y": 83.53 - }, - { - "x": 14.25, - "y": 78.02 - }, - { - "x": 17.57, - "y": 79.08 + "x": 26.26, + "y": 82.81 }, { - "x": 19.99, - "y": 83.5 + "x": 26.8, + "y": 82.01 }, { - "x": 20.01, - "y": 83.53 - } - ], - [ - { - "x": 69.83, - "y": 50.3 - }, - { - "x": 69.21, - "y": 51.98 - }, - { - "x": 69.82, - "y": 50.28 - }, - { - "x": 69.83, - "y": 50.3 - } - ], - [ - { - "x": 66.54, - "y": 48.57 - }, - { - "x": 64.83, - "y": 50.6 - }, - { - "x": 66.55, - "y": 48.57 - }, - { - "x": 66.54, - "y": 48.57 - } - ], - [ - { - "x": 68.81, - "y": 46.68 - }, - { - "x": 60.96, - "y": 47.18 + "x": 27.18, + "y": 82.42 }, { - "x": 62.3, - "y": 41.87 + "x": 26.95, + "y": 81.37 }, { - "x": 68.83, - "y": 46.67 - }, - { - "x": 68.81, - "y": 46.68 - } - ], - [ - { - "x": 63.96, - "y": 41.08 + "x": 26.46, + "y": 82.04 }, { - "x": 65.34, - "y": 42.13 + "x": 26.26, + "y": 81.68 }, { - "x": 63.97, - "y": 41.08 + "x": 25.86, + "y": 82.04 }, { - "x": 63.96, - "y": 41.08 - } - ], - [ - { - "x": 76.53, - "y": 36.86 - }, - { - "x": 74.94, - "y": 36.35 - }, - { - "x": 76.52, - "y": 36.85 - }, - { - "x": 76.53, - "y": 36.86 - } - ], - [ - { - "x": 74.64, - "y": 36.05 - }, - { - "x": 72.34, - "y": 38.22 - }, - { - "x": 74.63, - "y": 36.05 - }, - { - "x": 74.64, - "y": 36.05 - } - ], - [ - { - "x": 41.1, - "y": 22.89 - }, - { - "x": 40.41, - "y": 24.77 - }, - { - "x": 38.43, - "y": 23.24 - }, - { - "x": 40.93, - "y": 22.87 - }, - { - "x": 41.1, - "y": 22.89 - } - ], - [ - { - "x": 68, - "y": 22.94 - }, - { - "x": 73.48, - "y": 24.65 - }, - { - "x": 68.02, - "y": 22.98 - }, - { - "x": 68, - "y": 22.94 - } - ], - [ - { - "x": 50.55, - "y": 25.69 + "x": 26.14, + "y": 81.25 }, { - "x": 47.83, - "y": 28.58 + "x": 25.82, + "y": 81.37 }, { - "x": 43.27, - "y": 24.86 + "x": 25.42, + "y": 80.44 }, { - "x": 48.91, - "y": 22.19 + "x": 26.26, + "y": 80.83 }, { - "x": 48.15, - "y": 24.72 - }, - { - "x": 50.55, - "y": 25.65 - }, - { - "x": 50.55, - "y": 25.69 - } - ], - [ - { - "x": 47.24, - "y": 22.35 - }, - { - "x": 49.04, - "y": 21.75 - }, - { - "x": 47.66, - "y": 22.34 - }, - { - "x": 47.24, - "y": 22.35 - } - ], - [ - { - "x": 57.38, - "y": 22.18 - }, - { - "x": 51.85, - "y": 26.89 - }, - { - "x": 51.72, - "y": 22.01 - }, - { - "x": 57.33, - "y": 22.16 - }, - { - "x": 57.38, - "y": 22.18 - } - ], - [ - { - "x": 53.82, - "y": 19.72 - }, - { - "x": 50.22, - "y": 19.6 - }, - { - "x": 52.16, - "y": 18.03 - }, - { - "x": 53.82, - "y": 19.66 - }, - { - "x": 53.82, - "y": 19.72 - } - ], - [ - { - "x": 43.48, - "y": 17.19 - }, - { - "x": 41.89, - "y": 17.3 - }, - { - "x": 43.73, - "y": 17.14 - }, - { - "x": 43.48, - "y": 17.19 - } - ], - [ - { - "x": 26.27, - "y": 17.42 - }, - { - "x": 24.43, - "y": 18.13 - }, - { - "x": 26.3, - "y": 17.39 - }, - { - "x": 26.27, - "y": 17.42 - } - ], - [ - { - "x": 41.42, - "y": 16.04 - }, - { - "x": 42.99, - "y": 16.15 - }, - { - "x": 41.43, - "y": 16.1 - }, - { - "x": 41.42, - "y": 16.04 - } - ], - [ - { - "x": 49.31, - "y": 18.33 - }, - { - "x": 43.13, - "y": 18.09 - }, - { - "x": 48.14, - "y": 15.52 - }, - { - "x": 49.31, - "y": 18.31 - }, - { - "x": 49.31, - "y": 18.33 - } - ], - [ - { - "x": 40.29, - "y": 17.96 - }, - { - "x": 32.32, - "y": 21 - }, - { - "x": 30.05, - "y": 20.38 - }, - { - "x": 34.03, - "y": 19 - }, - { - "x": 26.38, - "y": 18.96 - }, - { - "x": 29.57, - "y": 15.91 - }, - { - "x": 36.31, - "y": 18.43 - }, - { - "x": 34.63, - "y": 16.21 - }, - { - "x": 36.44, - "y": 15.09 - }, - { - "x": 37.31, - "y": 17.68 - }, - { - "x": 40.28, - "y": 17.91 - }, - { - "x": 40.29, - "y": 17.96 - } - ], - [ - { - "x": 29.61, - "y": 15.34 - }, - { - "x": 31.17, - "y": 15.3 - }, - { - "x": 29.63, - "y": 15.34 - }, - { - "x": 29.61, - "y": 15.34 - } - ], - [ - { - "x": 69.52, - "y": 19.6 - }, - { - "x": 55.99, - "y": 20.44 - }, - { - "x": 54.24, - "y": 16.33 - }, - { - "x": 49.83, - "y": 15.39 - }, - { - "x": 69.53, - "y": 19.59 - }, - { - "x": 69.52, - "y": 19.6 - } - ], - [ - { - "x": 24.54, - "y": 16.69 + "x": 25.55, + "y": 80.37 }, { - "x": 20.32, - "y": 16.96 + "x": 25.71, + "y": 79.83 }, { - "x": 28.98, - "y": 14.01 + "x": 25.14, + "y": 80.65 }, { "x": 24.55, - "y": 16.72 + "y": 79.94 }, { - "x": 24.54, - "y": 16.69 - } - ], - [ - { - "x": 58.09, - "y": 13.9 + "x": 25.04, + "y": 79.56 }, { - "x": 56.34, - "y": 13.37 + "x": 24.27, + "y": 79.4 }, { - "x": 58.07, - "y": 13.89 + "x": 24.32, + "y": 79.04 }, { - "x": 58.09, - "y": 13.9 - } - ], - [ - { - "x": 41.42, - "y": 14.29 + "x": 24.67, + "y": 79.45 }, { - "x": 39.5, - "y": 13 + "x": 24.35, + "y": 79 }, { - "x": 41.44, - "y": 14.2 + "x": 24.72, + "y": 79.07 }, { - "x": 41.42, - "y": 14.29 - } - ], - [ + "x": 25.04, + "y": 77.91 + }, { - "x": 54.03, - "y": 13.2 + "x": 24.77, + "y": 77.72 + }, + { + "x": 24.55, + "y": 78.55 + }, + { + "x": 24.58, + "y": 77.09 + }, + { + "x": 23.23, + "y": 76.37 + }, + { + "x": 20.75, + "y": 72.02 + }, + { + "x": 19.78, + "y": 72.04 + }, + { + "x": 18.91, + "y": 73.08 + }, + { + "x": 17.7, + "y": 70.9 + }, + { + "x": 16.23, + "y": 70.96 + }, + { + "x": 16.22, + "y": 53.87 + }, + { + "x": 17.65, + "y": 54.18 + }, + { + "x": 20.7, + "y": 56 + }, + { + "x": 20.07, + "y": 54.81 + }, + { + "x": 20.5, + "y": 55.07 + }, + { + "x": 20.17, + "y": 54.62 + }, + { + "x": 21.21, + "y": 54.33 + }, + { + "x": 21.21, + "y": 53.71 + }, + { + "x": 21.77, + "y": 54.09 + }, + { + "x": 21.37, + "y": 54.95 + }, + { + "x": 24.88, + "y": 52.49 + }, + { + "x": 24.94, + "y": 53.12 + }, + { + "x": 22.52, + "y": 54.73 + }, + { + "x": 21.98, + "y": 55.51 + }, + { + "x": 22.4, + "y": 55.93 + }, + { + "x": 22.05, + "y": 55.61 + }, + { + "x": 22.74, + "y": 55.7 + }, + { + "x": 22.45, + "y": 55.13 + }, + { + "x": 23.68, + "y": 54.2 + }, + { + "x": 23.57, + "y": 54.63 + }, + { + "x": 23.67, + "y": 54.02 + }, + { + "x": 23.77, + "y": 54.49 + }, + { + "x": 23.75, + "y": 53.95 + }, + { + "x": 23.88, + "y": 54.99 + }, + { + "x": 24.34, + "y": 53.78 + }, + { + "x": 25.49, + "y": 53.15 + }, + { + "x": 25.46, + "y": 53.79 + }, + { + "x": 25.91, + "y": 52.81 + }, + { + "x": 26.53, + "y": 52.6 + }, + { + "x": 26.01, + "y": 52.2 + }, + { + "x": 26.18, + "y": 51.76 + }, + { + "x": 28.11, + "y": 54.6 + }, + { + "x": 28.17, + "y": 53.78 + }, + { + "x": 28.59, + "y": 53.73 + }, + { + "x": 28.24, + "y": 53.52 + }, + { + "x": 28.74, + "y": 53.13 + }, + { + "x": 28.3, + "y": 53.09 + }, + { + "x": 28.91, + "y": 52.75 + }, + { + "x": 28.9, + "y": 54.5 + }, + { + "x": 29.69, + "y": 54.39 + }, + { + "x": 30, + "y": 53.47 + }, + { + "x": 30.72, + "y": 53.5 + }, + { + "x": 34.44, + "y": 55.51 + }, + { + "x": 36.11, + "y": 55.57 + }, + { + "x": 36.94, + "y": 56.55 + }, + { + "x": 35.91, + "y": 56.99 + }, + { + "x": 36.01, + "y": 57.77 + }, + { + "x": 38.48, + "y": 58.01 + }, + { + "x": 39.86, + "y": 57.35 + }, + { + "x": 40.82, + "y": 58.66 + }, + { + "x": 40.96, + "y": 58.12 + }, + { + "x": 41.45, + "y": 58.81 + }, + { + "x": 41.54, + "y": 59.27 + }, + { + "x": 40.97, + "y": 59.07 + }, + { + "x": 42.03, + "y": 60.62 + }, + { + "x": 41.6, + "y": 59.82 + }, + { + "x": 41.73, + "y": 59.21 + }, + { + "x": 42.15, + "y": 59.7 + }, + { + "x": 41.54, + "y": 57.18 + }, + { + "x": 42.64, + "y": 57.06 + }, + { + "x": 43.25, + "y": 56.05 + }, + { + "x": 42.55, + "y": 56.31 + }, + { + "x": 42.55, + "y": 56.76 + }, + { + "x": 41.58, + "y": 56.66 + }, + { + "x": 41.74, + "y": 57.03 + }, + { + "x": 40.83, + "y": 56.8 + }, + { + "x": 41.23, + "y": 56.08 + }, + { + "x": 42.81, + "y": 55.4 + }, + { + "x": 44.14, + "y": 57.3 + }, + { + "x": 44.95, + "y": 57.02 + }, + { + "x": 45.86, + "y": 57.99 + }, + { + "x": 47.02, + "y": 57.67 + }, + { + "x": 48.38, + "y": 57.98 + }, + { + "x": 48.82, + "y": 57.77 + }, + { + "x": 48.64, + "y": 57.17 + }, + { + "x": 49.69, + "y": 58.13 + }, + { + "x": 49.66, + "y": 57.52 + }, + { + "x": 49.02, + "y": 57.7 + }, + { + "x": 48.55, + "y": 56.59 + }, + { + "x": 49.53, + "y": 56.33 + }, + { + "x": 49.79, + "y": 56.82 + }, + { + "x": 50.31, + "y": 56.72 + }, + { + "x": 50.09, + "y": 57.34 + }, + { + "x": 50.7, + "y": 56.76 + }, + { + "x": 50.26, + "y": 58.42 + }, + { + "x": 50.54, + "y": 58.93 + }, + { + "x": 50.96, + "y": 58.63 + }, + { + "x": 51.12, + "y": 59.42 + }, + { + "x": 50.27, + "y": 59.25 + }, + { + "x": 50.76, + "y": 60.16 }, { "x": 50.55, - "y": 13.29 + "y": 59.51 }, { - "x": 54.07, - "y": 13.2 + "x": 51.22, + "y": 59.42 }, { - "x": 54.03, - "y": 13.2 - } - ], - [ - { - "x": 43.62, - "y": 12.97 + "x": 51.02, + "y": 57.24 }, { - "x": 45.34, - "y": 12.96 + "x": 51.54, + "y": 57.29 }, { - "x": 43.62, - "y": 12.99 + "x": 52.63, + "y": 56.05 }, { - "x": 43.62, - "y": 12.97 - } - ], - [ - { - "x": 30.91, - "y": 12.67 + "x": 52.28, + "y": 55.14 }, { - "x": 29.29, - "y": 12.44 + "x": 51.66, + "y": 55.8 }, { - "x": 30.89, - "y": 12.61 + "x": 51.93, + "y": 54.59 }, { - "x": 30.91, - "y": 12.67 - } - ], - [ - { - "x": 35.53, - "y": 12.17 + "x": 52.51, + "y": 54.33 }, { - "x": 31.41, - "y": 13.35 + "x": 52.29, + "y": 54.91 }, { - "x": 35.42, - "y": 12.11 + "x": 52.53, + "y": 54.17 }, { - "x": 35.53, - "y": 12.17 - } - ], - [ - { - "x": 35.92, - "y": 11.24 + "x": 51.9, + "y": 54.31 }, { - "x": 31.3, - "y": 11.53 + "x": 51.67, + "y": 53.79 }, { - "x": 35.89, - "y": 11.22 + "x": 50.64, + "y": 53.58 }, { - "x": 35.92, - "y": 11.24 - } - ], - [ - { - "x": 49.89, - "y": 12.84 + "x": 50.18, + "y": 52.57 }, { - "x": 48.25, - "y": 10.48 + "x": 50.44, + "y": 51.81 }, { - "x": 52.21, - "y": 11.41 + "x": 50.78, + "y": 51.88 }, { - "x": 49.94, - "y": 12.85 + "x": 50.16, + "y": 51.3 }, { - "x": 49.89, - "y": 12.84 - } - ], - [ - { - "x": 40.05, - "y": 9.68 + "x": 50.23, + "y": 50.15 }, { - "x": 44.54, - "y": 9.74 + "x": 50.52, + "y": 49.83 }, { - "x": 47.5, - "y": 12.62 + "x": 50.97, + "y": 50.11 }, { - "x": 40.06, - "y": 9.69 + "x": 51.1, + "y": 49.6 }, { - "x": 40.05, - "y": 9.68 - } - ], - [ - { - "x": 46.22, - "y": 7.52 + "x": 50.69, + "y": 49.36 }, { - "x": 47.92, - "y": 8.02 + "x": 51.73, + "y": 48.4 }, { - "x": 46.22, - "y": 7.54 + "x": 51.69, + "y": 49.03 }, { - "x": 46.22, - "y": 7.52 - } - ], - [ - { - "x": 50.21, - "y": 7.41 + "x": 52.36, + "y": 48.98 }, { - "x": 52.75, - "y": 7.55 + "x": 52.93, + "y": 49.99 }, { - "x": 50.14, - "y": 6.69 + "x": 52.88, + "y": 51.13 }, { - "x": 54.02, - "y": 4.21 + "x": 54.04, + "y": 52.69 }, { - "x": 63.46, - "y": 9.28 + "x": 53.4, + "y": 52.57 }, { - "x": 55.42, - "y": 11.84 + "x": 53.23, + "y": 52.92 }, { - "x": 52.85, - "y": 9.96 + "x": 53.72, + "y": 53.05 }, { - "x": 57.29, - "y": 9.33 + "x": 52.97, + "y": 53.82 }, { - "x": 50.28, - "y": 7.39 + "x": 54.97, + "y": 54.3 }, { - "x": 50.21, - "y": 7.41 - } - ], - [ - { - "x": 90.42, - "y": 1.89 + "x": 54.59, + "y": 54.73 }, { - "x": 81.12, - "y": 3.37 + "x": 54.1, + "y": 54.53 }, { - "x": 84.17, - "y": 3.86 + "x": 54.71, + "y": 55.12 }, { - "x": 80.31, - "y": 4.85 + "x": 55.02, + "y": 56.89 }, { - "x": 86.63, - "y": 3.94 + "x": 55.73, + "y": 54.74 }, { - "x": 71.21, - "y": 9.07 + "x": 56.54, + "y": 55.43 }, { - "x": 75.09, - "y": 10.92 + "x": 56.89, + "y": 56.71 }, { - "x": 66.53, - "y": 14.03 + "x": 56.43, + "y": 56.77 }, { - "x": 70.87, - "y": 16.05 + "x": 56.45, + "y": 57.42 }, { - "x": 58.07, - "y": 15.78 + "x": 57.1, + "y": 59.13 }, { - "x": 61.55, - "y": 14.33 + "x": 57.88, + "y": 58.62 }, { - "x": 59.72, - "y": 12.68 + "x": 58.52, + "y": 55.86 }, { - "x": 63.97, - "y": 14.03 + "x": 59.19, + "y": 55.84 }, { - "x": 66.39, - "y": 12.15 + "x": 58.92, + "y": 55.39 }, { - "x": 63.63, - "y": 13.5 + "x": 59.39, + "y": 55.23 }, { - "x": 63.8, - "y": 10.92 + "x": 58.66, + "y": 54.69 }, { - "x": 60.55, - "y": 12.04 + "x": 58.6, + "y": 53.42 }, { - "x": 61.17, - "y": 10.62 + "x": 61.13, + "y": 53.9 }, { - "x": 67.35, - "y": 9.81 + "x": 60.33, + "y": 54.12 }, { - "x": 63.64, - "y": 9.84 + "x": 61.83, + "y": 54.88 }, { - "x": 65.21, - "y": 9.8 + "x": 61.27, + "y": 55.54 }, { - "x": 61.66, - "y": 6.77 + "x": 61.91, + "y": 55.76 + }, + { + "x": 60.82, + "y": 56.48 + }, + { + "x": 61.88, + "y": 58.39 + }, + { + "x": 61.7, + "y": 59.36 + }, + { + "x": 60.27, + "y": 60.62 + }, + { + "x": 59.85, + "y": 59.59 + }, + { + "x": 59.69, + "y": 59.93 + }, + { + "x": 59.51, + "y": 59.42 + }, + { + "x": 58.86, + "y": 59.52 + }, + { + "x": 59.33, + "y": 59.48 + }, + { + "x": 59.94, + "y": 60.98 + }, + { + "x": 59.38, + "y": 60.52 + }, + { + "x": 59.48, + "y": 60.97 + }, + { + "x": 58.84, + "y": 60.77 + }, + { + "x": 58.67, + "y": 60.19 + }, + { + "x": 57.66, + "y": 60.29 + }, + { + "x": 58.37, + "y": 60.98 + }, + { + "x": 57.21, + "y": 62.53 + }, + { + "x": 55.44, + "y": 61.38 + }, + { + "x": 54.06, + "y": 61.38 + }, + { + "x": 55.24, + "y": 61.67 + }, + { + "x": 55.94, + "y": 62.53 + }, + { + "x": 57.46, + "y": 62.69 + }, + { + "x": 56.75, + "y": 64.57 + }, + { + "x": 55.58, + "y": 64.99 + }, + { + "x": 55.37, + "y": 64.46 + }, + { + "x": 55.09, + "y": 65.54 + }, + { + "x": 54.51, + "y": 65.65 + }, + { + "x": 52.32, + "y": 64.57 + }, + { + "x": 52.42, + "y": 65.11 + }, + { + "x": 53.6, + "y": 65.42 + }, + { + "x": 53.32, + "y": 65.72 + }, + { + "x": 53.85, + "y": 65.4 + }, + { + "x": 54.61, + "y": 65.94 + }, + { + "x": 54.73, + "y": 66.51 + }, + { + "x": 53.33, + "y": 66.91 + }, + { + "x": 53.76, + "y": 67.3 + }, + { + "x": 53.2, + "y": 67.25 + }, + { + "x": 53.32, + "y": 68.03 + }, + { + "x": 52.72, + "y": 67.67 + }, + { + "x": 53.09, + "y": 67.91 + }, + { + "x": 52.44, + "y": 68.35 + }, + { + "x": 52.71, + "y": 68.7 + }, + { + "x": 51.54, + "y": 70.66 + }, + { + "x": 51.38, + "y": 72.85 + }, + { + "x": 51.99, + "y": 73.22 + }, + { + "x": 51.87, + "y": 74.07 + }, + { + "x": 52.01, + "y": 73.26 + }, + { + "x": 52.79, + "y": 73.31 + }, + { + "x": 53.35, + "y": 75.32 + }, + { + "x": 53, + "y": 75.94 + }, + { + "x": 54.76, + "y": 75.49 + }, + { + "x": 58.93, + "y": 78.08 + }, + { + "x": 58.71, + "y": 78.55 + }, + { + "x": 58.99, + "y": 78.16 + }, + { + "x": 61.07, + "y": 78.33 + }, + { + "x": 61.09, + "y": 81.19 + }, + { + "x": 61.72, + "y": 82.03 + }, + { + "x": 61.41, + "y": 82.17 + }, + { + "x": 62.39, + "y": 82.75 + }, + { + "x": 62.07, + "y": 83.59 + }, + { + "x": 62.77, + "y": 83.27 + }, + { + "x": 63.36, + "y": 83.97 + }, + { + "x": 63.08, + "y": 83.15 + }, + { + "x": 63.37, + "y": 82.82 + }, + { + "x": 63.73, + "y": 83.43 + }, + { + "x": 63.58, + "y": 82.69 + }, + { + "x": 64.06, + "y": 82.1 + }, + { + "x": 63.58, + "y": 79.63 + }, + { + "x": 63.03, + "y": 79 + }, + { + "x": 64.53, + "y": 78.2 + }, + { + "x": 65.51, + "y": 76.63 + }, + { + "x": 65.29, + "y": 74.86 + }, + { + "x": 63.94, + "y": 73.49 + }, + { + "x": 65, + "y": 71.33 + }, + { + "x": 64.66, + "y": 71.32 + }, + { + "x": 64.75, + "y": 70.12 + }, + { + "x": 64.23, + "y": 70.2 + }, + { + "x": 64.78, + "y": 69.01 + }, + { + "x": 64.26, + "y": 67.78 + }, + { + "x": 64.78, + "y": 67.29 + }, + { + "x": 67.01, + "y": 68.09 + }, + { + "x": 67.69, + "y": 67.48 + }, + { + "x": 68.48, + "y": 68.08 }, { "x": 68.35, - "y": 8.56 + "y": 68.54 }, { - "x": 65.39, - "y": 6.74 + "x": 68.81, + "y": 68.49 }, { - "x": 73, - "y": 5.4 + "x": 68.73, + "y": 68.97 }, { - "x": 62.1, - "y": 6.22 + "x": 69.28, + "y": 68.9 }, { - "x": 66.35, - "y": 4.67 + "x": 69.29, + "y": 69.63 }, { - "x": 60.3, - "y": 5.96 + "x": 70.97, + "y": 70 }, { - "x": 58.31, - "y": 5.31 + "x": 70.78, + "y": 71.31 }, { - "x": 63.65, - "y": 4.39 + "x": 69.7, + "y": 71.32 }, { - "x": 55.77, - "y": 3.33 + "x": 70.83, + "y": 71.63 }, { - "x": 63.69, - "y": 1.53 + "x": 70.68, + "y": 72.46 }, { - "x": 69.89, - "y": 3.13 + "x": 71.08, + "y": 72.57 }, { - "x": 65.93, - "y": 1.7 + "x": 70.82, + "y": 73.22 }, { - "x": 74.22, - "y": 1.2 + "x": 70.6, + "y": 72.84 }, { - "x": 72.26, - "y": 0.19 + "x": 70.3, + "y": 73.27 }, { - "x": 90.4, - "y": 1.82 + "x": 71.74, + "y": 73.24 }, { - "x": 90.42, - "y": 1.89 - } - ], - [ - { - "x": 91.56, - "y": 90.05 + "x": 71.76, + "y": 74.2 }, { - "x": 90, - "y": 90.25 + "x": 70.97, + "y": 74.72 }, { - "x": 90.98, + "x": 72.01, + "y": 73.55 + }, + { + "x": 72.25, + "y": 74.5 + }, + { + "x": 73.25, + "y": 73.15 + }, + { + "x": 73.51, + "y": 73.91 + }, + { + "x": 73.56, + "y": 73.05 + }, + { + "x": 74.07, + "y": 72.86 + }, + { + "x": 73.88, + "y": 72.2 + }, + { + "x": 74.32, + "y": 72.36 + }, + { + "x": 73.89, + "y": 71.83 + }, + { + "x": 74.32, + "y": 71.78 + }, + { + "x": 74.6, + "y": 70.89 + }, + { + "x": 74.44, + "y": 71.44 + }, + { + "x": 74.79, + "y": 71.23 + }, + { + "x": 75.03, + "y": 72.35 + }, + { + "x": 75.55, + "y": 72.52 + }, + { + "x": 75.05, + "y": 72.9 + }, + { + "x": 75.74, + "y": 72.84 + }, + { + "x": 75.96, + "y": 73.4 + }, + { + "x": 75.39, + "y": 73.95 + }, + { + "x": 76.18, + "y": 73.7 + }, + { + "x": 75.58, + "y": 74.42 + }, + { + "x": 76.25, + "y": 74.13 + }, + { + "x": 76.09, + "y": 74.49 + }, + { + "x": 76.69, + "y": 74.93 + }, + { + "x": 76.2, + "y": 75.12 + }, + { + "x": 77.09, + "y": 75.67 + }, + { + "x": 76.84, + "y": 76.35 + }, + { + "x": 76.16, + "y": 76.1 + }, + { + "x": 76.82, + "y": 76.4 + }, + { + "x": 76.49, + "y": 76.58 + }, + { + "x": 76.91, + "y": 76.81 + }, + { + "x": 76.55, + "y": 76.81 + }, + { + "x": 77.11, + "y": 76.9 + }, + { + "x": 77.61, + "y": 77.79 + }, + { + "x": 77.88, + "y": 77.5 + }, + { + "x": 77.61, + "y": 78.56 + }, + { + "x": 78.3, + "y": 78.11 + }, + { + "x": 78.16, + "y": 78.39 + }, + { + "x": 78.57, + "y": 78.36 + }, + { + "x": 78.19, + "y": 78.89 + }, + { + "x": 78.78, + "y": 78.23 + }, + { + "x": 78.61, + "y": 78.58 + }, + { + "x": 78.88, + "y": 78.33 + }, + { + "x": 78.97, + "y": 78.76 + }, + { + "x": 80.16, + "y": 79.09 + }, + { + "x": 78.45, + "y": 79.8 + }, + { + "x": 79.38, + "y": 79.57 + }, + { + "x": 78.03, + "y": 80.48 + }, + { + "x": 77.46, + "y": 80.09 + }, + { + "x": 78.1, + "y": 80.52 + }, + { + "x": 77.81, + "y": 80.81 + }, + { + "x": 79.65, + "y": 79.55 + }, + { + "x": 80.32, + "y": 79.95 + }, + { + "x": 80.14, + "y": 80.6 + }, + { + "x": 80.82, + "y": 80.14 + }, + { + "x": 81.38, + "y": 80.82 + }, + { + "x": 81.06, + "y": 81.11 + }, + { + "x": 81.38, + "y": 81.63 + }, + { + "x": 80.81, + "y": 81.66 + }, + { + "x": 81.46, + "y": 81.85 + }, + { + "x": 81.04, + "y": 81.85 + }, + { + "x": 81.48, + "y": 82.13 + }, + { + "x": 81.25, + "y": 82.49 + }, + { + "x": 79.15, + "y": 83.32 + }, + { + "x": 78.18, + "y": 84.53 + }, + { + "x": 73.2, + "y": 84.51 + }, + { + "x": 70.74, + "y": 87 + }, + { + "x": 69.67, + "y": 86.66 + }, + { + "x": 70.69, "y": 87.05 }, { - "x": 91.56, - "y": 90.04 + "x": 69.5, + "y": 88.57 }, { - "x": 91.56, - "y": 90.05 + "x": 67.14, + "y": 89.89 + }, + { + "x": 67.46, + "y": 90.12 + }, + { + "x": 65.3, + "y": 91.95 + }, + { + "x": 63.65, + "y": 92.05 + }, + { + "x": 63.6, + "y": 92.83 + }, + { + "x": 60.97, + "y": 94 + }, + { + "x": 60.43, + "y": 93.61 + }, + { + "x": 61.21, + "y": 92.02 + }, + { + "x": 60.91, + "y": 90.18 + }, + { + "x": 59.71, + "y": 88.83 + }, + { + "x": 56.47, + "y": 86.82 + }, + { + "x": 53.99, + "y": 87.11 + }, + { + "x": 51.75, + "y": 86.36 + }, + { + "x": 51.31, + "y": 85.6 + }, + { + "x": 51.26, + "y": 85.58 } ], [ { - "x": 89.38, - "y": 88.43 + "x": 68.24, + "y": 59.88 }, { - "x": 86.65, - "y": 87.9 + "x": 68.81, + "y": 58.82 }, { - "x": 89.27, - "y": 88.38 + "x": 68.19, + "y": 56.87 }, { - "x": 89.38, - "y": 88.43 - } - ], - [ - { - "x": 86.76, - "y": 80.4 + "x": 67.55, + "y": 56.65 }, { - "x": 89.72, - "y": 82.08 + "x": 67.62, + "y": 55.95 }, { - "x": 86.78, - "y": 80.43 + "x": 67.27, + "y": 56.31 }, { - "x": 86.76, - "y": 80.4 - } - ], - [ + "x": 66.68, + "y": 55.68 + }, { - "x": 69.53, + "x": 66.82, + "y": 55.11 + }, + { + "x": 65.43, + "y": 55.96 + }, + { + "x": 65.43, + "y": 55.23 + }, + { + "x": 66.21, + "y": 54.78 + }, + { + "x": 65.42, + "y": 54.1 + }, + { + "x": 65.77, + "y": 53.84 + }, + { + "x": 64.99, + "y": 53.88 + }, + { + "x": 65.16, + "y": 53.23 + }, + { + "x": 64.67, + "y": 53.67 + }, + { + "x": 64.6, + "y": 52.65 + }, + { + "x": 64.06, + "y": 52.62 + }, + { + "x": 63.6, + "y": 51.55 + }, + { + "x": 63.16, + "y": 52.17 + }, + { + "x": 63.67, + "y": 52.42 + }, + { + "x": 63.77, + "y": 53.37 + }, + { + "x": 61.52, + "y": 52.8 + }, + { + "x": 62.14, + "y": 53.73 + }, + { + "x": 60.55, + "y": 52.4 + }, + { + "x": 61.52, + "y": 53.37 + }, + { + "x": 59.17, + "y": 52.83 + }, + { + "x": 58.43, + "y": 53.11 + }, + { + "x": 57.84, + "y": 52.57 + }, + { + "x": 58, + "y": 51.92 + }, + { + "x": 56.85, + "y": 52.57 + }, + { + "x": 56.04, + "y": 51.87 + }, + { + "x": 55.54, + "y": 50.59 + }, + { + "x": 57.5, + "y": 50.82 + }, + { + "x": 56.84, + "y": 50.16 + }, + { + "x": 55.35, + "y": 50.03 + }, + { + "x": 55.17, + "y": 49.39 + }, + { + "x": 55.78, + "y": 45.56 + }, + { + "x": 56.91, + "y": 43.95 + }, + { + "x": 57.84, + "y": 43.57 + }, + { + "x": 59.15, + "y": 43.87 + }, + { + "x": 57.7, + "y": 46.53 + }, + { + "x": 57.95, + "y": 48.39 + }, + { + "x": 59.15, + "y": 50.13 + }, + { + "x": 57.63, + "y": 50.83 + }, + { + "x": 59.05, + "y": 50.35 + }, + { + "x": 59.22, + "y": 50.87 + }, + { + "x": 59.32, + "y": 49.22 + }, + { + "x": 58.22, + "y": 48.37 + }, + { + "x": 58.66, + "y": 47.74 + }, + { + "x": 59.67, + "y": 48.34 + }, + { + "x": 59.07, + "y": 47.67 + }, + { + "x": 59.46, + "y": 47.45 + }, + { + "x": 58.63, + "y": 47.24 + }, + { + "x": 58.51, + "y": 46.1 + }, + { + "x": 59.83, + "y": 46.49 + }, + { + "x": 58.71, + "y": 45.49 + }, + { + "x": 60.07, + "y": 45.9 + }, + { + "x": 58.92, + "y": 45.04 + }, + { + "x": 59.53, + "y": 45.25 + }, + { + "x": 59.29, + "y": 44.81 + }, + { + "x": 59.65, + "y": 44.59 + }, + { + "x": 60.08, + "y": 45.07 + }, + { + "x": 59.8, + "y": 44.47 + }, + { + "x": 61.28, + "y": 43.89 + }, + { + "x": 61.72, + "y": 43.98 + }, + { + "x": 62.66, + "y": 46.54 + }, + { + "x": 61.79, + "y": 47.79 + }, + { + "x": 62.44, + "y": 47.11 + }, + { + "x": 62.1, + "y": 48.68 + }, + { + "x": 62.66, + "y": 47.65 + }, + { + "x": 63.1, + "y": 48.08 + }, + { + "x": 62.72, + "y": 47.59 + }, + { + "x": 62.99, + "y": 47.13 + }, + { + "x": 63.04, + "y": 47.86 + }, + { + "x": 63.36, + "y": 47.4 + }, + { + "x": 63.65, + "y": 47.7 + }, + { + "x": 63.48, + "y": 48.51 + }, + { + "x": 63.99, + "y": 48.71 + }, + { + "x": 63.74, + "y": 47.97 + }, + { + "x": 64.57, + "y": 49.01 + }, + { + "x": 63.75, + "y": 47.57 + }, + { + "x": 65.14, + "y": 48.07 + }, + { + "x": 63.95, + "y": 47.12 + }, + { + "x": 65.23, + "y": 46.53 + }, + { + "x": 65.83, + "y": 47.2 + }, + { + "x": 66.52, + "y": 47.15 + }, + { + "x": 66.71, + "y": 47.76 + }, + { + "x": 65.85, + "y": 48.21 + }, + { + "x": 65.61, + "y": 48.77 + }, + { + "x": 66.5, + "y": 48.23 + }, + { + "x": 65.83, + "y": 49.15 + }, + { + "x": 66.62, + "y": 48.08 + }, + { + "x": 67.3, + "y": 48.32 + }, + { + "x": 67.23, + "y": 48.85 + }, + { + "x": 66.38, + "y": 49.16 + }, + { + "x": 66.72, + "y": 49.23 + }, + { + "x": 66.37, + "y": 49.58 + }, + { + "x": 66.95, + "y": 49.24 + }, + { + "x": 66.61, + "y": 50.38 + }, + { + "x": 67.03, + "y": 49.23 + }, + { + "x": 67.34, + "y": 49.03 + }, + { + "x": 67.32, + "y": 49.53 + }, + { + "x": 67.65, + "y": 48.95 + }, + { + "x": 67.19, + "y": 49.83 + }, + { + "x": 67.25, + "y": 50.33 + }, + { + "x": 67.77, + "y": 49.48 + }, + { + "x": 67.52, + "y": 50.69 + }, + { + "x": 67.96, + "y": 50 + }, + { + "x": 67.91, + "y": 50.85 + }, + { + "x": 68.54, + "y": 49.22 + }, + { + "x": 69.64, + "y": 50.17 + }, + { + "x": 68.39, + "y": 51.21 + }, + { + "x": 68.84, + "y": 51.19 + }, + { + "x": 68.53, + "y": 51.71 + }, + { + "x": 70.02, + "y": 50.65 + }, + { + "x": 69.88, + "y": 51.45 + }, + { + "x": 68.99, + "y": 52.15 + }, + { + "x": 69.1, + "y": 52.44 + }, + { + "x": 69.6, + "y": 51.89 + }, + { + "x": 69.31, + "y": 53.05 + }, + { + "x": 69.74, + "y": 51.66 + }, + { + "x": 70.56, + "y": 51.09 + }, + { + "x": 70.11, + "y": 52.01 + }, + { + "x": 70.89, + "y": 51.3 + }, + { + "x": 71.8, + "y": 51.85 + }, + { + "x": 70.13, + "y": 53.45 + }, + { + "x": 71.5, + "y": 52.65 + }, + { + "x": 70.5, + "y": 53.95 + }, + { + "x": 71.96, + "y": 52.36 + }, + { + "x": 72.7, + "y": 53.7 + }, + { + "x": 70.48, + "y": 54.15 + }, + { + "x": 72.61, + "y": 54.28 + }, + { + "x": 73.05, + "y": 54.86 + }, + { + "x": 71.24, + "y": 54.51 + }, + { + "x": 71.96, + "y": 54.81 + }, + { + "x": 71.28, + "y": 54.8 + }, + { + "x": 71.63, + "y": 54.85 + }, + { + "x": 71.24, + "y": 55.35 + }, + { + "x": 71.91, + "y": 54.97 + }, + { + "x": 72.25, + "y": 55.23 + }, + { + "x": 71.64, + "y": 55.5 + }, + { + "x": 72.19, + "y": 55.74 + }, + { + "x": 70.96, + "y": 55.67 + }, + { + "x": 71.98, + "y": 55.95 + }, + { + "x": 71.33, + "y": 56.12 + }, + { + "x": 72.07, + "y": 56.21 + }, + { + "x": 72.05, + "y": 56.55 + }, + { + "x": 72.28, + "y": 56.2 + }, + { + "x": 72.32, + "y": 56.58 + }, + { + "x": 73.04, + "y": 56.46 + }, + { + "x": 72.11, + "y": 56.79 + }, + { + "x": 72.76, + "y": 56.7 + }, + { + "x": 72.32, + "y": 57.03 + }, + { + "x": 72.79, + "y": 56.77 + }, + { + "x": 72.98, + "y": 57.39 + }, + { + "x": 73.31, + "y": 57.11 + }, + { + "x": 73.25, + "y": 57.81 + }, + { + "x": 73.6, + "y": 57.03 + }, + { + "x": 73.54, + "y": 58.1 + }, + { + "x": 73.69, + "y": 57.42 + }, + { + "x": 74.06, + "y": 58.18 + }, + { + "x": 73.99, + "y": 57.54 + }, + { + "x": 74.53, + "y": 57.4 + }, + { + "x": 74.16, + "y": 58.09 + }, + { + "x": 74.69, + "y": 57.76 + }, + { + "x": 75.15, + "y": 58.76 + }, + { + "x": 74.49, + "y": 58.65 + }, + { + "x": 74.9, + "y": 58.78 + }, + { + "x": 74.49, + "y": 58.98 + }, + { + "x": 75.1, + "y": 58.82 + }, + { + "x": 74.54, + "y": 59.35 + }, + { + "x": 75.45, + "y": 58.89 + }, + { + "x": 75.25, + "y": 59.44 + }, + { + "x": 75.72, + "y": 58.7 + }, + { + "x": 75.21, + "y": 59.72 + }, + { + "x": 75.5, + "y": 59.54 + }, + { + "x": 75.52, + "y": 59.93 + }, + { + "x": 75.94, + "y": 59.43 + }, + { + "x": 75.92, + "y": 60.07 + }, + { + "x": 76.54, + "y": 59.25 + }, + { + "x": 77.16, + "y": 60.04 + }, + { + "x": 76.46, + "y": 60.08 + }, + { + "x": 76.94, + "y": 60.63 + }, + { + "x": 75.92, + "y": 60.65 + }, + { + "x": 76.64, + "y": 61.23 + }, + { + "x": 75.79, + "y": 61.05 + }, + { + "x": 76.33, + "y": 61.45 + }, + { + "x": 75.94, + "y": 61.46 + }, + { + "x": 76.1, + "y": 62.05 + }, + { + "x": 75.45, + "y": 61.4 + }, + { + "x": 75.43, + "y": 63.31 + }, + { + "x": 75.24, + "y": 62.8 + }, + { + "x": 74.86, + "y": 62.94 + }, + { + "x": 74.89, + "y": 62.34 + }, + { + "x": 74.65, + "y": 62.96 + }, + { + "x": 74.38, + "y": 62.5 + }, + { + "x": 74.76, + "y": 62.25 + }, + { + "x": 74.21, + "y": 62.35 + }, + { + "x": 74.47, + "y": 61.79 + }, + { + "x": 73.93, + "y": 61.74 + }, + { + "x": 74.81, + "y": 60.62 + }, + { + "x": 73.62, + "y": 61.37 + }, + { + "x": 73.95, + "y": 60.54 + }, + { + "x": 73.43, + "y": 61.02 + }, + { + "x": 72.74, + "y": 60.05 + }, + { + "x": 72.21, + "y": 60.2 + }, + { + "x": 72.67, + "y": 60.71 + }, + { + "x": 72.03, + "y": 60.31 + }, + { + "x": 72.64, + "y": 61.44 + }, + { + "x": 71.37, + "y": 60.92 + }, + { + "x": 72, + "y": 61.14 + }, + { + "x": 71.99, + "y": 62.24 + }, + { + "x": 72.57, + "y": 61.95 + }, + { + "x": 73.01, + "y": 63.55 + }, + { + "x": 73.03, + "y": 63.05 + }, + { + "x": 73.7, + "y": 63.78 + }, + { + "x": 73.69, + "y": 63.34 + }, + { + "x": 73.77, + "y": 64.04 + }, + { + "x": 74.26, + "y": 64.11 + }, + { + "x": 73.81, + "y": 64.37 + }, + { + "x": 74.57, + "y": 64.85 + }, + { + "x": 74.67, + "y": 66.18 + }, + { + "x": 74.08, + "y": 65.23 + }, + { + "x": 74.6, + "y": 66.76 + }, + { + "x": 74.1, + "y": 66.6 + }, + { + "x": 74.18, + "y": 67.34 + }, + { + "x": 73.06, + "y": 65.98 + }, + { + "x": 73.13, + "y": 66.62 + }, + { + "x": 72.08, + "y": 65.31 + }, + { + "x": 72.25, + "y": 65.99 + }, + { + "x": 71.26, "y": 65.32 }, { - "x": 69.92, - "y": 63.77 + "x": 73.56, + "y": 67.88 }, { - "x": 69.44, - "y": 65.57 + "x": 73.57, + "y": 68.46 }, { - "x": 69.53, - "y": 65.32 + "x": 71.55, + "y": 67.84 + }, + { + "x": 70.96, + "y": 67.01 + }, + { + "x": 69.18, + "y": 66.32 + }, + { + "x": 68.85, + "y": 65.85 + }, + { + "x": 69.55, + "y": 65.59 + }, + { + "x": 68.45, + "y": 65.15 + }, + { + "x": 67.97, + "y": 63.73 + }, + { + "x": 67.37, + "y": 64.32 + }, + { + "x": 66.94, + "y": 63.3 + }, + { + "x": 66.91, + "y": 64.24 + }, + { + "x": 66.06, + "y": 63.81 + }, + { + "x": 66.11, + "y": 64.25 + }, + { + "x": 65.38, + "y": 64.57 + }, + { + "x": 64.36, + "y": 64.14 + }, + { + "x": 64.15, + "y": 63.65 + }, + { + "x": 64.84, + "y": 62.26 + }, + { + "x": 66.06, + "y": 62.7 + }, + { + "x": 66.38, + "y": 63.63 + }, + { + "x": 66.52, + "y": 62.94 + }, + { + "x": 65.94, + "y": 62.54 + }, + { + "x": 67.84, + "y": 62.29 + }, + { + "x": 67.07, + "y": 61 + }, + { + "x": 68.19, + "y": 59.9 + }, + { + "x": 68.24, + "y": 59.88 + } + ], + [ + { + "x": 77.3, + "y": 10.74 + }, + { + "x": 76.41, + "y": 12.47 + }, + { + "x": 75.14, + "y": 13.69 + }, + { + "x": 74.83, + "y": 13.52 + }, + { + "x": 74.79, + "y": 14.09 + }, + { + "x": 74.03, + "y": 13.89 + }, + { + "x": 73.66, + "y": 14.6 + }, + { + "x": 71.86, + "y": 14.94 + }, + { + "x": 71.02, + "y": 14.1 + }, + { + "x": 71.58, + "y": 15.18 + }, + { + "x": 73.08, + "y": 15.18 + }, + { + "x": 70.36, + "y": 16.82 + }, + { + "x": 70.77, + "y": 16.89 + }, + { + "x": 70.48, + "y": 17.26 + }, + { + "x": 73.75, + "y": 15.3 + }, + { + "x": 74.66, + "y": 15 + }, + { + "x": 74.72, + "y": 15.46 + }, + { + "x": 72.35, + "y": 18.04 + }, + { + "x": 70.97, + "y": 20.63 + }, + { + "x": 70.25, + "y": 20.81 + }, + { + "x": 69.86, + "y": 19.84 + }, + { + "x": 70.37, + "y": 21.56 + }, + { + "x": 69.17, + "y": 21.89 + }, + { + "x": 68.67, + "y": 21.4 + }, + { + "x": 69.04, + "y": 21.89 + }, + { + "x": 68.7, + "y": 22.14 + }, + { + "x": 70.1, + "y": 21.95 + }, + { + "x": 69.38, + "y": 22.78 + }, + { + "x": 69.79, + "y": 22.88 + }, + { + "x": 69.62, + "y": 23.33 + }, + { + "x": 68.79, + "y": 23.87 + }, + { + "x": 67.26, + "y": 22.87 + }, + { + "x": 66.79, + "y": 23.07 + }, + { + "x": 67.91, + "y": 23.39 + }, + { + "x": 67.96, + "y": 24.52 + }, + { + "x": 67.46, + "y": 24.29 + }, + { + "x": 67.22, + "y": 24.81 + }, + { + "x": 66.67, + "y": 24.5 + }, + { + "x": 66.65, + "y": 25.09 + }, + { + "x": 65.03, + "y": 24.36 + }, + { + "x": 65.97, + "y": 25.2 + }, + { + "x": 65.24, + "y": 25.18 + }, + { + "x": 65.05, + "y": 24.69 + }, + { + "x": 65.02, + "y": 25.27 + }, + { + "x": 64.33, + "y": 25.16 + }, + { + "x": 64.76, + "y": 25.61 + }, + { + "x": 67.08, + "y": 25.69 + }, + { + "x": 67.08, + "y": 26.44 + }, + { + "x": 66.09, + "y": 26.27 + }, + { + "x": 65.84, + "y": 25.78 + }, + { + "x": 64.18, + "y": 25.92 + }, + { + "x": 65.78, + "y": 26.3 + }, + { + "x": 63.69, + "y": 26.33 + }, + { + "x": 64.56, + "y": 26.46 + }, + { + "x": 64.2, + "y": 27.51 + }, + { + "x": 64.59, + "y": 26.73 + }, + { + "x": 66.07, + "y": 26.68 + }, + { + "x": 65.55, + "y": 27.21 + }, + { + "x": 66.73, + "y": 27.19 + }, + { + "x": 66.95, + "y": 28.22 + }, + { + "x": 65.38, + "y": 28.49 + }, + { + "x": 66.65, + "y": 29.19 + }, + { + "x": 66.19, + "y": 29.7 + }, + { + "x": 65.23, + "y": 29.62 + }, + { + "x": 66.2, + "y": 29.96 + }, + { + "x": 65.96, + "y": 30.6 + }, + { + "x": 64.17, + "y": 30.49 + }, + { + "x": 64.59, + "y": 31.86 + }, + { + "x": 63.85, + "y": 32.88 + }, + { + "x": 62.25, + "y": 32.82 + }, + { + "x": 61.37, + "y": 31.59 + }, + { + "x": 61.95, + "y": 32.73 + }, + { + "x": 61.2, + "y": 32.89 + }, + { + "x": 61.43, + "y": 33.39 + }, + { + "x": 62.01, + "y": 32.99 + }, + { + "x": 62.76, + "y": 33.27 + }, + { + "x": 62.56, + "y": 33.72 + }, + { + "x": 63.28, + "y": 33.16 + }, + { + "x": 63.64, + "y": 34.51 + }, + { + "x": 64.44, + "y": 34.09 + }, + { + "x": 64.55, + "y": 35.1 + }, + { + "x": 64.1, + "y": 35.76 + }, + { + "x": 63.78, + "y": 35.39 + }, + { + "x": 63.39, + "y": 36.29 + }, + { + "x": 62.03, + "y": 36.84 + }, + { + "x": 62.26, + "y": 35.91 + }, + { + "x": 61.93, + "y": 35.44 + }, + { + "x": 61.28, + "y": 35.59 + }, + { + "x": 61.49, + "y": 35.02 + }, + { + "x": 61.11, + "y": 35.2 + }, + { + "x": 60.76, + "y": 34.58 + }, + { + "x": 61.1, + "y": 35.97 + }, + { + "x": 60.48, + "y": 35.76 + }, + { + "x": 60.25, + "y": 34.78 + }, + { + "x": 60.34, + "y": 35.95 + }, + { + "x": 59.57, + "y": 35.11 + }, + { + "x": 59.63, + "y": 35.81 + }, + { + "x": 58.98, + "y": 35.58 + }, + { + "x": 59.48, + "y": 36.27 + }, + { + "x": 58.87, + "y": 36.35 + }, + { + "x": 57.97, + "y": 35.98 + }, + { + "x": 57.82, + "y": 35.18 + }, + { + "x": 57.71, + "y": 36.14 + }, + { + "x": 57.07, + "y": 35.25 + }, + { + "x": 57.02, + "y": 36.18 + }, + { + "x": 56.4, + "y": 35.96 + }, + { + "x": 56.35, + "y": 34.57 + }, + { + "x": 56.28, + "y": 35.94 + }, + { + "x": 56.19, + "y": 35.31 + }, + { + "x": 55.81, + "y": 35.88 + }, + { + "x": 55.61, + "y": 34.38 + }, + { + "x": 56.51, + "y": 33.51 + }, + { + "x": 57.8, + "y": 33.37 + }, + { + "x": 57.33, + "y": 33.25 + }, + { + "x": 57.61, + "y": 32.72 + }, + { + "x": 56.98, + "y": 32.76 + }, + { + "x": 56.56, + "y": 30.95 + }, + { + "x": 57.92, + "y": 31.04 + }, + { + "x": 58.42, + "y": 32.51 + }, + { + "x": 59.43, + "y": 32.94 + }, + { + "x": 59.35, + "y": 32.57 + }, + { + "x": 60.2, + "y": 32.78 + }, + { + "x": 59.92, + "y": 32.39 + }, + { + "x": 61.04, + "y": 30.29 + }, + { + "x": 60.04, + "y": 32.12 + }, + { + "x": 59.19, + "y": 32.16 + }, + { + "x": 59.45, + "y": 31.38 + }, + { + "x": 59.07, + "y": 31.88 + }, + { + "x": 58.73, + "y": 31.01 + }, + { + "x": 59.55, + "y": 30.82 + }, + { + "x": 58.51, + "y": 30.68 + }, + { + "x": 59.57, + "y": 30.14 + }, + { + "x": 59.14, + "y": 30.23 + }, + { + "x": 59, + "y": 29.78 + }, + { + "x": 59.77, + "y": 29.78 + }, + { + "x": 59.05, + "y": 29.65 + }, + { + "x": 59.32, + "y": 28.22 + }, + { + "x": 58.65, + "y": 30.05 + }, + { + "x": 58.04, + "y": 30.14 + }, + { + "x": 58.37, + "y": 29 + }, + { + "x": 58.04, + "y": 29.72 + }, + { + "x": 57.13, + "y": 29.98 + }, + { + "x": 57.54, + "y": 27.74 + }, + { + "x": 59, + "y": 26.92 + }, + { + "x": 61.06, + "y": 28.3 + }, + { + "x": 61.12, + "y": 27.59 + }, + { + "x": 60.36, + "y": 27.26 + }, + { + "x": 61.51, + "y": 27.23 + }, + { + "x": 61.72, + "y": 26.41 + }, + { + "x": 60.91, + "y": 27.07 + }, + { + "x": 59.22, + "y": 26.45 + }, + { + "x": 59.44, + "y": 26.01 + }, + { + "x": 60.28, + "y": 26.39 + }, + { + "x": 59.54, + "y": 25.83 + }, + { + "x": 59.01, + "y": 24.06 + }, + { + "x": 57.9, + "y": 23.45 + }, + { + "x": 57.96, + "y": 22.57 + }, + { + "x": 58.83, + "y": 22.74 + }, + { + "x": 57.85, + "y": 22.28 + }, + { + "x": 57.88, + "y": 21.03 + }, + { + "x": 59.95, + "y": 21.29 + }, + { + "x": 61.59, + "y": 24.16 + }, + { + "x": 62.91, + "y": 23.93 + }, + { + "x": 61.68, + "y": 23.64 + }, + { + "x": 61.78, + "y": 22.68 + }, + { + "x": 60.4, + "y": 20.97 + }, + { + "x": 64.34, + "y": 19.83 + }, + { + "x": 62.88, + "y": 19.61 + }, + { + "x": 65.51, + "y": 18.48 + }, + { + "x": 63.66, + "y": 18.37 + }, + { + "x": 64.04, + "y": 16.94 + }, + { + "x": 65.34, + "y": 15.57 + }, + { + "x": 64.23, + "y": 16.26 + }, + { + "x": 63.81, + "y": 17.22 + }, + { + "x": 63.23, + "y": 16.79 + }, + { + "x": 63.46, + "y": 17.98 + }, + { + "x": 62.18, + "y": 19.39 + }, + { + "x": 60.46, + "y": 19.93 + }, + { + "x": 61.5, + "y": 18.66 + }, + { + "x": 60.17, + "y": 19.21 + }, + { + "x": 60.35, + "y": 18.52 + }, + { + "x": 59.9, + "y": 18.92 + }, + { + "x": 59.91, + "y": 19.95 + }, + { + "x": 58.93, + "y": 20.14 + }, + { + "x": 58.37, + "y": 19.96 + }, + { + "x": 58.6, + "y": 19.57 + }, + { + "x": 58.22, + "y": 19.98 + }, + { + "x": 57.69, + "y": 19.67 + }, + { + "x": 58.42, + "y": 18.04 + }, + { + "x": 61.03, + "y": 16.86 + }, + { + "x": 58.43, + "y": 17.61 + }, + { + "x": 56.96, + "y": 19.48 + }, + { + "x": 55.64, + "y": 18.13 + }, + { + "x": 57.73, + "y": 17.75 + }, + { + "x": 59.22, + "y": 16.31 + }, + { + "x": 57.2, + "y": 17.44 + }, + { + "x": 55.34, + "y": 17.71 + }, + { + "x": 54.98, + "y": 16.82 + }, + { + "x": 56.02, + "y": 16.55 + }, + { + "x": 55.26, + "y": 16.07 + }, + { + "x": 56.05, + "y": 15.26 + }, + { + "x": 57.31, + "y": 15.29 + }, + { + "x": 56.47, + "y": 14.79 + }, + { + "x": 54.83, + "y": 15.93 + }, + { + "x": 54.57, + "y": 15.45 + }, + { + "x": 55.52, + "y": 14.58 + }, + { + "x": 54.95, + "y": 14.21 + }, + { + "x": 54.08, + "y": 15.11 + }, + { + "x": 53.9, + "y": 14.04 + }, + { + "x": 55.42, + "y": 13.02 + }, + { + "x": 55.71, + "y": 13.64 + }, + { + "x": 55.67, + "y": 12.94 + }, + { + "x": 56.68, + "y": 12.01 + }, + { + "x": 57.71, + "y": 13.18 + }, + { + "x": 57.4, + "y": 12.73 + }, + { + "x": 57.78, + "y": 12.28 + }, + { + "x": 58.72, + "y": 13.38 + }, + { + "x": 58.5, + "y": 12.56 + }, + { + "x": 59.18, + "y": 13.22 + }, + { + "x": 59.13, + "y": 12.64 + }, + { + "x": 59.33, + "y": 13.18 + }, + { + "x": 57.59, + "y": 11.44 + }, + { + "x": 58.72, + "y": 11.05 + }, + { + "x": 58.34, + "y": 10.09 + }, + { + "x": 59.25, + "y": 9.87 + }, + { + "x": 59.07, + "y": 10.19 + }, + { + "x": 60.23, + "y": 10.9 + }, + { + "x": 60.46, + "y": 12.21 + }, + { + "x": 61.41, + "y": 12.36 + }, + { + "x": 60.84, + "y": 12.03 + }, + { + "x": 60.58, + "y": 10.93 + }, + { + "x": 63.44, + "y": 13.59 + }, + { + "x": 62.95, + "y": 12.45 + }, + { + "x": 60.78, + "y": 10.45 + }, + { + "x": 60.94, + "y": 9.71 + }, + { + "x": 61.72, + "y": 9.75 + }, + { + "x": 61.04, + "y": 8.9 + }, + { + "x": 62.4, + "y": 9.51 + }, + { + "x": 61.72, + "y": 7.79 + }, + { + "x": 62.61, + "y": 8.06 + }, + { + "x": 62.97, + "y": 8.92 + }, + { + "x": 62.92, + "y": 8.47 + }, + { + "x": 63.96, + "y": 8.72 + }, + { + "x": 62.54, + "y": 7.49 + }, + { + "x": 63.35, + "y": 6.89 + }, + { + "x": 63.61, + "y": 7.52 + }, + { + "x": 63.91, + "y": 7.09 + }, + { + "x": 63.98, + "y": 7.69 + }, + { + "x": 64.49, + "y": 7.2 + }, + { + "x": 65.03, + "y": 7.56 + }, + { + "x": 65.99, + "y": 9.18 + }, + { + "x": 65.74, + "y": 10.05 + }, + { + "x": 66.36, + "y": 9.06 + }, + { + "x": 64.84, + "y": 6.8 + }, + { + "x": 65.04, + "y": 6.5 + }, + { + "x": 67.28, + "y": 6.72 + }, + { + "x": 68.51, + "y": 8.57 + }, + { + "x": 67.7, + "y": 7.19 + }, + { + "x": 68.22, + "y": 6.28 + }, + { + "x": 69.25, + "y": 6.08 + }, + { + "x": 69.28, + "y": 7.06 + }, + { + "x": 69.85, + "y": 7.45 + }, + { + "x": 69.34, + "y": 6.68 + }, + { + "x": 69.63, + "y": 6.11 + }, + { + "x": 70.73, + "y": 6 + }, + { + "x": 70.78, + "y": 6.8 + }, + { + "x": 71.22, + "y": 6.45 + }, + { + "x": 71.92, + "y": 7.15 + }, + { + "x": 73.32, + "y": 7.15 + }, + { + "x": 71.55, + "y": 9 + }, + { + "x": 73.04, + "y": 8.51 + }, + { + "x": 73.66, + "y": 7.71 + }, + { + "x": 74.19, + "y": 8.16 + }, + { + "x": 74.08, + "y": 7.53 + }, + { + "x": 74.54, + "y": 7.3 + }, + { + "x": 74.74, + "y": 8.21 + }, + { + "x": 74.97, + "y": 7.75 + }, + { + "x": 75.53, + "y": 7.86 + }, + { + "x": 75.19, + "y": 8.45 + }, + { + "x": 75.9, + "y": 9.35 + }, + { + "x": 75.56, + "y": 10.11 + }, + { + "x": 76.47, + "y": 9.59 + }, + { + "x": 77.29, + "y": 10.57 + }, + { + "x": 77.3, + "y": 10.74 + } + ], + [ + { + "x": 46.9, + "y": 53.53 + }, + { + "x": 46.57, + "y": 53.83 + }, + { + "x": 46.46, + "y": 53.3 + }, + { + "x": 46.28, + "y": 53.88 + }, + { + "x": 45.86, + "y": 53.28 + }, + { + "x": 45.55, + "y": 54.11 + }, + { + "x": 44.9, + "y": 53.78 + }, + { + "x": 45.13, + "y": 55.04 + }, + { + "x": 45.8, + "y": 54.2 + }, + { + "x": 46.21, + "y": 54.87 + }, + { + "x": 45.3, + "y": 55.71 + }, + { + "x": 43.62, + "y": 55.49 + }, + { + "x": 43.79, + "y": 55.1 + }, + { + "x": 42.66, + "y": 54.88 + }, + { + "x": 42.53, + "y": 54.2 + }, + { + "x": 41.96, + "y": 55.23 + }, + { + "x": 40.66, + "y": 55.86 + }, + { + "x": 37.41, + "y": 56.42 + }, + { + "x": 37.24, + "y": 54.91 + }, + { + "x": 35.35, + "y": 54.64 + }, + { + "x": 34.23, + "y": 53.12 + }, + { + "x": 36.47, + "y": 52.39 + }, + { + "x": 38.78, + "y": 52.35 + }, + { + "x": 36.87, + "y": 51.47 + }, + { + "x": 34.04, + "y": 51.66 + }, + { + "x": 33.51, + "y": 50.76 + }, + { + "x": 36.06, + "y": 49.56 + }, + { + "x": 33.62, + "y": 49.88 + }, + { + "x": 34.04, + "y": 49.21 + }, + { + "x": 33.13, + "y": 49.42 + }, + { + "x": 32.94, + "y": 49.01 + }, + { + "x": 33.73, + "y": 47.78 + }, + { + "x": 33.37, + "y": 47.2 + }, + { + "x": 34.29, + "y": 46.07 + }, + { + "x": 36.42, + "y": 44.84 + }, + { + "x": 36.89, + "y": 45.45 + }, + { + "x": 36.45, + "y": 46.98 + }, + { + "x": 37.12, + "y": 46.86 + }, + { + "x": 37.74, + "y": 45.85 + }, + { + "x": 38.99, + "y": 46.58 + }, + { + "x": 38.58, + "y": 47.89 + }, + { + "x": 39.38, + "y": 46.95 + }, + { + "x": 40.09, + "y": 47.31 + }, + { + "x": 39.7, + "y": 46.7 + }, + { + "x": 40.09, + "y": 46.59 + }, + { + "x": 39.34, + "y": 45.9 + }, + { + "x": 39.86, + "y": 45.87 + }, + { + "x": 40.98, + "y": 47.02 + }, + { + "x": 41.58, + "y": 49.36 + }, + { + "x": 42.02, + "y": 48.64 + }, + { + "x": 41.22, + "y": 45.51 + }, + { + "x": 41.38, + "y": 44.92 + }, + { + "x": 42.16, + "y": 45.39 + }, + { + "x": 42.35, + "y": 45.04 + }, + { + "x": 43.46, + "y": 46.4 + }, + { + "x": 44.23, + "y": 49.44 + }, + { + "x": 44.05, + "y": 50.64 + }, + { + "x": 44.83, + "y": 51.73 + }, + { + "x": 45.33, + "y": 51.97 + }, + { + "x": 45.2, + "y": 51.56 + }, + { + "x": 46.39, + "y": 52.85 + }, + { + "x": 46.78, + "y": 52.68 + }, + { + "x": 46.88, + "y": 53.39 + }, + { + "x": 46.9, + "y": 53.53 + } + ], + [ + { + "x": 72.65, + "y": 90.31 + }, + { + "x": 72.17, + "y": 89.74 + }, + { + "x": 72.17, + "y": 88.21 + }, + { + "x": 71.07, + "y": 87.78 + }, + { + "x": 69.81, + "y": 90.24 + }, + { + "x": 66.89, + "y": 90.5 + }, + { + "x": 70.07, + "y": 88.3 + }, + { + "x": 71.86, + "y": 86.43 + }, + { + "x": 74.45, + "y": 85.79 + }, + { + "x": 74.82, + "y": 86.69 + }, + { + "x": 72.9, + "y": 87.17 + }, + { + "x": 73.83, + "y": 87.6 + }, + { + "x": 74.46, + "y": 87.38 + }, + { + "x": 74.03, + "y": 88.2 + }, + { + "x": 74.47, + "y": 88.21 + }, + { + "x": 74.65, + "y": 89.16 + }, + { + "x": 76.03, + "y": 89.83 + }, + { + "x": 76.67, + "y": 89.53 + }, + { + "x": 77.39, + "y": 90.2 + }, + { + "x": 74.84, + "y": 90.97 + }, + { + "x": 73.95, + "y": 92.13 + }, + { + "x": 73.45, + "y": 91.84 + }, + { + "x": 73.66, + "y": 90.94 + }, + { + "x": 73.41, + "y": 91.11 + }, + { + "x": 74.71, + "y": 90.13 + }, + { + "x": 74.96, + "y": 90.52 + }, + { + "x": 75.57, + "y": 90.11 + }, + { + "x": 74.37, + "y": 90.14 + }, + { + "x": 74.87, + "y": 89.67 + }, + { + "x": 74.49, + "y": 89.31 + }, + { + "x": 74.49, + "y": 89.83 + }, + { + "x": 72.64, + "y": 90.3 + }, + { + "x": 72.65, + "y": 90.31 + } + ], + [ + { + "x": 35.85, + "y": 44.51 + }, + { + "x": 32.93, + "y": 46.8 + }, + { + "x": 32.78, + "y": 47.54 + }, + { + "x": 32.08, + "y": 47.75 + }, + { + "x": 31.88, + "y": 49.52 + }, + { + "x": 30.98, + "y": 49.7 + }, + { + "x": 30.14, + "y": 50.6 + }, + { + "x": 28.49, + "y": 48.48 + }, + { + "x": 27.79, + "y": 48.49 + }, + { + "x": 29.39, + "y": 43.81 + }, + { + "x": 28.64, + "y": 42.19 + }, + { + "x": 31.07, + "y": 41.6 + }, + { + "x": 32.65, + "y": 42.52 + }, + { + "x": 32.46, + "y": 43.07 + }, + { + "x": 32.93, + "y": 42.58 + }, + { + "x": 32.9, + "y": 43.19 + }, + { + "x": 33.25, + "y": 42.55 + }, + { + "x": 34.25, + "y": 42.52 + }, + { + "x": 35.84, + "y": 44.47 + }, + { + "x": 35.85, + "y": 44.51 + } + ], + [ + { + "x": 50.14, + "y": 22.22 + }, + { + "x": 50.08, + "y": 21.76 + }, + { + "x": 51.86, + "y": 22.46 + }, + { + "x": 51.53, + "y": 21.98 + }, + { + "x": 52.07, + "y": 21.58 + }, + { + "x": 51.08, + "y": 21.85 + }, + { + "x": 51.18, + "y": 21.29 + }, + { + "x": 50.64, + "y": 21.52 + }, + { + "x": 50.1, + "y": 20.87 + }, + { + "x": 51.05, + "y": 20.87 + }, + { + "x": 50.6, + "y": 19.76 + }, + { + "x": 52.31, + "y": 20.02 + }, + { + "x": 51.63, + "y": 19.38 + }, + { + "x": 52.05, + "y": 19.09 + }, + { + "x": 51, + "y": 18.71 + }, + { + "x": 51.01, + "y": 18.23 + }, + { + "x": 51.46, + "y": 17.47 + }, + { + "x": 51.81, + "y": 17.94 + }, + { + "x": 52.2, + "y": 17.67 + }, + { + "x": 51.92, + "y": 17.17 + }, + { + "x": 52.79, + "y": 17.3 + }, + { + "x": 52.75, + "y": 16.72 + }, + { + "x": 51.85, + "y": 16.48 + }, + { + "x": 52, + "y": 15.95 + }, + { + "x": 52.48, + "y": 16.27 + }, + { + "x": 52.72, + "y": 15.91 + }, + { + "x": 53.83, + "y": 16.99 + }, + { + "x": 54.65, + "y": 19.85 + }, + { + "x": 55.93, + "y": 20.3 + }, + { + "x": 55.77, + "y": 21.12 + }, + { + "x": 56.32, + "y": 21.97 + }, + { + "x": 56.62, + "y": 21.95 + }, + { + "x": 56.24, + "y": 20.63 + }, + { + "x": 56.96, + "y": 20.56 + }, + { + "x": 57.07, + "y": 21.57 + }, + { + "x": 56.69, + "y": 21.86 + }, + { + "x": 57.32, + "y": 22.1 + }, + { + "x": 57.13, + "y": 23.12 + }, + { + "x": 57.53, + "y": 22.81 + }, + { + "x": 57.19, + "y": 24.49 + }, + { + "x": 58.03, + "y": 23.93 + }, + { + "x": 58.21, + "y": 24.83 + }, + { + "x": 58.49, + "y": 24.06 + }, + { + "x": 59.08, + "y": 25.36 + }, + { + "x": 57.69, + "y": 26.77 + }, + { + "x": 57.51, + "y": 26.36 + }, + { + "x": 57, + "y": 28.02 + }, + { + "x": 56.91, + "y": 26.25 + }, + { + "x": 56.6, + "y": 26.63 + }, + { + "x": 56.8, + "y": 28.37 + }, + { + "x": 56.56, + "y": 28.71 + }, + { + "x": 56.12, + "y": 28.14 + }, + { + "x": 56.11, + "y": 29.83 + }, + { + "x": 55.2, + "y": 28.13 + }, + { + "x": 55.59, + "y": 29.87 + }, + { + "x": 55.1, + "y": 29.23 + }, + { + "x": 54.67, + "y": 29.19 + }, + { + "x": 54.99, + "y": 29.83 + }, + { + "x": 54.53, + "y": 29.91 + }, + { + "x": 53.21, + "y": 29.19 + }, + { + "x": 52.96, + "y": 28.58 + }, + { + "x": 53.95, + "y": 28.32 + }, + { + "x": 52.7, + "y": 28.2 + }, + { + "x": 52.29, + "y": 27.53 + }, + { + "x": 52.88, + "y": 27.53 + }, + { + "x": 51.92, + "y": 26.66 + }, + { + "x": 52.66, + "y": 25.92 + }, + { + "x": 54.93, + "y": 25.61 + }, + { + "x": 53.2, + "y": 25.62 + }, + { + "x": 54.35, + "y": 25.01 + }, + { + "x": 53.26, + "y": 25.11 + }, + { + "x": 53.49, + "y": 24.77 + }, + { + "x": 52.85, + "y": 24.61 + }, + { + "x": 52.2, + "y": 25.56 + }, + { + "x": 52.27, + "y": 24.98 + }, + { + "x": 51.78, + "y": 24.87 + }, + { + "x": 51.22, + "y": 25.47 + }, + { + "x": 50.82, + "y": 24.38 + }, + { + "x": 51.92, + "y": 23.39 + }, + { + "x": 50.73, + "y": 23.92 + }, + { + "x": 50.19, + "y": 22.18 + }, + { + "x": 50.14, + "y": 22.22 + } + ], + [ + { + "x": 63.18, + "y": 40.33 + }, + { + "x": 62.92, + "y": 40.85 + }, + { + "x": 62.54, + "y": 40.56 + }, + { + "x": 62.65, + "y": 41.54 + }, + { + "x": 61.48, + "y": 41.88 + }, + { + "x": 60.59, + "y": 41.58 + }, + { + "x": 60.18, + "y": 40.57 + }, + { + "x": 60.18, + "y": 41.54 + }, + { + "x": 59.59, + "y": 41.74 + }, + { + "x": 59.09, + "y": 41.72 + }, + { + "x": 59.02, + "y": 41.17 + }, + { + "x": 58.89, + "y": 41.78 + }, + { + "x": 58.62, + "y": 41.21 + }, + { + "x": 58.57, + "y": 41.77 + }, + { + "x": 58.13, + "y": 41.41 + }, + { + "x": 57.97, + "y": 41.8 + }, + { + "x": 57.65, + "y": 41.41 + }, + { + "x": 57.8, + "y": 41.84 + }, + { + "x": 56.34, + "y": 41.76 + }, + { + "x": 56.32, + "y": 40.59 + }, + { + "x": 55.64, + "y": 41.61 + }, + { + "x": 54.42, + "y": 41.17 + }, + { + "x": 54.6, + "y": 40.63 + }, + { + "x": 54.05, + "y": 41.34 + }, + { + "x": 53.29, + "y": 39.66 + }, + { + "x": 53.67, + "y": 38.3 + }, + { + "x": 52.87, + "y": 36.14 + }, + { + "x": 51.09, + "y": 36.49 + }, + { + "x": 51.54, + "y": 36.2 + }, + { + "x": 50.64, + "y": 35.85 + }, + { + "x": 50.93, + "y": 35.29 + }, + { + "x": 49.91, + "y": 34.93 + }, + { + "x": 50.38, + "y": 34.79 + }, + { + "x": 49.99, + "y": 34.03 + }, + { + "x": 50.8, + "y": 33.72 + }, + { + "x": 52.38, + "y": 34.25 + }, + { + "x": 52.78, + "y": 34.92 + }, + { + "x": 52.48, + "y": 35.99 + }, + { + "x": 52.85, + "y": 35.23 + }, + { + "x": 54.5, + "y": 35.17 + }, + { + "x": 54.83, + "y": 35.75 + }, + { + "x": 54.13, + "y": 35.78 + }, + { + "x": 55.82, + "y": 36.46 + }, + { + "x": 54.86, + "y": 36.69 + }, + { + "x": 55.13, + "y": 36.86 + }, + { + "x": 53.97, + "y": 36.4 + }, + { + "x": 55.06, + "y": 37.04 + }, + { + "x": 54.36, + "y": 37.14 + }, + { + "x": 54.34, + "y": 37.77 + }, + { + "x": 55.23, + "y": 37.2 + }, + { + "x": 55.38, + "y": 37.9 + }, + { + "x": 55.85, + "y": 37.99 + }, + { + "x": 55.39, + "y": 38.56 + }, + { + "x": 56.03, + "y": 39.02 + }, + { + "x": 56.18, + "y": 38.23 + }, + { + "x": 56.56, + "y": 38.89 + }, + { + "x": 56.92, + "y": 38.56 + }, + { + "x": 57.14, + "y": 38.94 + }, + { + "x": 57.3, + "y": 38.43 + }, + { + "x": 57.79, + "y": 39.2 + }, + { + "x": 58.63, + "y": 39.1 + }, + { + "x": 58.15, + "y": 38.78 + }, + { + "x": 59.41, + "y": 38.39 + }, + { + "x": 59.79, + "y": 37.79 + }, + { + "x": 60.49, + "y": 38.07 + }, + { + "x": 61.07, + "y": 37.74 + }, + { + "x": 63.16, + "y": 38.93 + }, + { + "x": 63.22, + "y": 39.62 + }, + { + "x": 62.51, + "y": 40.19 + }, + { + "x": 63.19, + "y": 40.32 + }, + { + "x": 63.18, + "y": 40.33 + } + ], + [ + { + "x": 43.44, + "y": 38.27 + }, + { + "x": 42.97, + "y": 40.14 + }, + { + "x": 42.04, + "y": 40.54 + }, + { + "x": 41.62, + "y": 40.01 + }, + { + "x": 41.13, + "y": 40.55 + }, + { + "x": 40.82, + "y": 40.1 + }, + { + "x": 38.06, + "y": 42.01 + }, + { + "x": 37.1, + "y": 41.92 + }, + { + "x": 36.54, + "y": 41.18 + }, + { + "x": 38.71, + "y": 40.29 + }, + { + "x": 39.08, + "y": 39.49 + }, + { + "x": 38.13, + "y": 39.95 + }, + { + "x": 37.87, + "y": 39.47 + }, + { + "x": 37.74, + "y": 39.98 + }, + { + "x": 36.95, + "y": 40.13 + }, + { + "x": 37.38, + "y": 39.04 + }, + { + "x": 36.81, + "y": 38.88 + }, + { + "x": 36.05, + "y": 40.41 + }, + { + "x": 35.9, + "y": 39.76 + }, + { + "x": 35.55, + "y": 40.39 + }, + { + "x": 35.14, + "y": 39.68 + }, + { + "x": 34.75, + "y": 39.94 + }, + { + "x": 34.04, + "y": 39.53 + }, + { + "x": 34.42, + "y": 38.86 + }, + { + "x": 35.3, + "y": 38.85 + }, + { + "x": 36.1, + "y": 38.2 + }, + { + "x": 34.39, + "y": 38.55 + }, + { + "x": 34.66, + "y": 37.91 + }, + { + "x": 36.23, + "y": 37.63 + }, + { + "x": 34.77, + "y": 37.5 + }, + { + "x": 35.21, + "y": 36.6 + }, + { + "x": 36.35, + "y": 36.73 + }, + { + "x": 35.39, + "y": 36.34 + }, + { + "x": 36.2, + "y": 35.58 + }, + { + "x": 36.74, + "y": 35.78 + }, + { + "x": 36.89, + "y": 36.65 + }, + { + "x": 37.63, + "y": 36.38 + }, + { + "x": 38.07, + "y": 36.71 + }, + { + "x": 38.6, + "y": 37.51 + }, + { + "x": 38.22, + "y": 37.84 + }, + { + "x": 38.81, + "y": 37.75 + }, + { + "x": 38.96, + "y": 38.74 + }, + { + "x": 40.75, + "y": 38.87 + }, + { + "x": 40.82, + "y": 38.22 + }, + { + "x": 39.88, + "y": 37.58 + }, + { + "x": 40.44, + "y": 36.89 + }, + { + "x": 39.62, + "y": 35.96 + }, + { + "x": 40.86, + "y": 34.44 + }, + { + "x": 41.39, + "y": 36.34 + }, + { + "x": 41.07, + "y": 37.13 + }, + { + "x": 41.72, + "y": 37.24 + }, + { + "x": 41.43, + "y": 37.92 + }, + { + "x": 42.05, + "y": 37.52 + }, + { + "x": 42.3, + "y": 38.35 + }, + { + "x": 42.72, + "y": 37.06 + }, + { + "x": 43.43, + "y": 38.21 + }, + { + "x": 43.44, + "y": 38.27 + } + ], + [ + { + "x": 83.77, + "y": 87.7 + }, + { + "x": 83.03, + "y": 88.72 + }, + { + "x": 83.06, + "y": 88.07 + }, + { + "x": 82.57, + "y": 88.49 + }, + { + "x": 82.66, + "y": 87.31 + }, + { + "x": 81.66, + "y": 88.45 + }, + { + "x": 81.2, + "y": 88.36 + }, + { + "x": 82.19, + "y": 87.54 + }, + { + "x": 81.1, + "y": 87.77 + }, + { + "x": 81.36, + "y": 87.21 + }, + { + "x": 80.6, + "y": 87.7 + }, + { + "x": 78.66, + "y": 87.6 + }, + { + "x": 79.45, + "y": 86.57 + }, + { + "x": 78.72, + "y": 86.55 + }, + { + "x": 79.38, + "y": 85.84 + }, + { + "x": 79.75, + "y": 86.05 + }, + { + "x": 79.5, + "y": 85.53 + }, + { + "x": 79.89, + "y": 85.48 + }, + { + "x": 80.68, + "y": 83.21 + }, + { + "x": 81.65, + "y": 82.95 + }, + { + "x": 81.12, + "y": 83.18 + }, + { + "x": 81.39, + "y": 83.55 + }, + { + "x": 80.54, + "y": 85.37 + }, + { + "x": 81.1, + "y": 84.65 + }, + { + "x": 81.6, + "y": 84.9 + }, + { + "x": 81.09, + "y": 85.51 + }, + { + "x": 81.85, + "y": 85.38 + }, + { + "x": 81.66, + "y": 85.96 + }, + { + "x": 82.36, + "y": 85.37 + }, + { + "x": 82.35, + "y": 85.7 + }, + { + "x": 83.11, + "y": 85.68 + }, + { + "x": 82.59, + "y": 86.72 + }, + { + "x": 83.5, + "y": 86.49 + }, + { + "x": 82.77, + "y": 87.33 + }, + { + "x": 83.06, + "y": 87.69 + }, + { + "x": 83.54, + "y": 86.97 + }, + { + "x": 83.28, + "y": 87.67 + }, + { + "x": 83.66, + "y": 87.39 + }, + { + "x": 83.76, + "y": 87.7 + }, + { + "x": 83.77, + "y": 87.7 + } + ], + [ + { + "x": 50.37, + "y": 47.23 + }, + { + "x": 49.95, + "y": 47.59 + }, + { + "x": 50.17, + "y": 48.84 + }, + { + "x": 49.33, + "y": 49.34 + }, + { + "x": 48.87, + "y": 48.64 + }, + { + "x": 48.93, + "y": 49.84 + }, + { + "x": 48.16, + "y": 49.99 + }, + { + "x": 47.19, + "y": 48.08 + }, + { + "x": 46.21, + "y": 47.64 + }, + { + "x": 45.47, + "y": 46.56 + }, + { + "x": 45.82, + "y": 45.63 + }, + { + "x": 46.76, + "y": 46.66 + }, + { + "x": 47.3, + "y": 46.44 + }, + { + "x": 47.29, + "y": 45.72 + }, + { + "x": 47.51, + "y": 46.15 + }, + { + "x": 47.14, + "y": 45.25 + }, + { + "x": 47.74, + "y": 45.31 + }, + { + "x": 46.32, + "y": 44.56 + }, + { + "x": 46.88, + "y": 44.26 + }, + { + "x": 47.23, + "y": 44.78 + }, + { + "x": 46.79, + "y": 43.71 + }, + { + "x": 47.55, + "y": 43.89 + }, + { + "x": 47.56, + "y": 43.31 + }, + { + "x": 48.18, + "y": 44.02 + }, + { + "x": 49.26, + "y": 43.39 + }, + { + "x": 49.71, + "y": 43.59 + }, + { + "x": 49.88, + "y": 44.15 + }, + { + "x": 49.34, + "y": 44.58 + }, + { + "x": 49.72, + "y": 44.91 + }, + { + "x": 48.75, + "y": 46.19 + }, + { + "x": 49.35, + "y": 45.76 + }, + { + "x": 49.71, + "y": 46.85 + }, + { + "x": 50.21, + "y": 46.5 + }, + { + "x": 50.37, + "y": 47.18 + }, + { + "x": 50.37, + "y": 47.23 + } + ], + [ + { + "x": 62.71, + "y": 65.31 + }, + { + "x": 61.99, + "y": 65.83 + }, + { + "x": 60.95, + "y": 65.45 + }, + { + "x": 60.49, + "y": 64.57 + }, + { + "x": 58.82, + "y": 66.41 + }, + { + "x": 58.48, + "y": 65.29 + }, + { + "x": 57.4, + "y": 65.66 + }, + { + "x": 58.12, + "y": 64.72 + }, + { + "x": 58.47, + "y": 61.54 + }, + { + "x": 58.9, + "y": 61.68 + }, + { + "x": 59.09, + "y": 62.74 + }, + { + "x": 59.35, + "y": 62.23 + }, + { + "x": 61.26, + "y": 63.71 + }, + { + "x": 61.63, + "y": 64.58 + }, + { + "x": 61.34, + "y": 64.91 + }, + { + "x": 62.17, + "y": 64.69 + }, + { + "x": 62.72, + "y": 65.29 + }, + { + "x": 62.71, + "y": 65.31 + } + ], + [ + { + "x": 54.98, + "y": 43.38 + }, + { + "x": 53.79, + "y": 46.26 + }, + { + "x": 53.38, + "y": 46.61 + }, + { + "x": 51.93, + "y": 46.43 + }, + { + "x": 52.55, + "y": 47.3 + }, + { + "x": 52.1, + "y": 48.44 + }, + { + "x": 51.27, + "y": 48.49 + }, + { + "x": 51.54, + "y": 48 + }, + { + "x": 50.87, + "y": 46.37 + }, + { + "x": 50.83, + "y": 44.02 + }, + { + "x": 51.67, + "y": 44.11 + }, + { + "x": 51.19, + "y": 43.14 + }, + { + "x": 52.7, + "y": 42.67 + }, + { + "x": 53.42, + "y": 43.33 + }, + { + "x": 54.95, + "y": 43.36 + }, + { + "x": 54.98, + "y": 43.38 + } + ], + [ + { + "x": 32.8, + "y": 36.62 + }, + { + "x": 32.66, + "y": 36.09 + }, + { + "x": 32.67, + "y": 37.33 + }, + { + "x": 31.98, + "y": 37.86 + }, + { + "x": 31.62, + "y": 36.61 + }, + { + "x": 31.28, + "y": 37.53 + }, + { + "x": 30.87, + "y": 37.11 + }, + { + "x": 30.28, + "y": 37.44 + }, + { + "x": 30.29, + "y": 36.7 + }, + { + "x": 29.95, + "y": 36.97 + }, + { + "x": 32.92, + "y": 32.86 + }, + { + "x": 34.54, + "y": 32.97 + }, + { + "x": 34.84, + "y": 32.63 + }, + { + "x": 34.45, + "y": 32.39 + }, + { + "x": 35.02, + "y": 32.03 + }, + { + "x": 35.8, + "y": 32.92 + }, + { + "x": 35.03, + "y": 33.51 + }, + { + "x": 35.54, + "y": 34.15 + }, + { + "x": 35.06, + "y": 34.21 + }, + { + "x": 35.42, + "y": 34.99 + }, + { + "x": 34.56, + "y": 35.47 + }, + { + "x": 34.3, + "y": 36.43 + }, + { + "x": 33.76, + "y": 35.94 + }, + { + "x": 33.98, + "y": 34.62 + }, + { + "x": 33.55, + "y": 34.75 + }, + { + "x": 32.98, + "y": 36.97 + }, + { + "x": 32.81, + "y": 36.66 + }, + { + "x": 32.8, + "y": 36.62 + } + ], + [ + { + "x": 49.53, + "y": 38.75 + }, + { + "x": 49.62, + "y": 39.12 + }, + { + "x": 49.3, + "y": 38.58 + }, + { + "x": 49.06, + "y": 38.85 + }, + { + "x": 49.42, + "y": 39.86 + }, + { + "x": 49.01, + "y": 39.64 + }, + { + "x": 49.11, + "y": 40.26 + }, + { + "x": 48.04, + "y": 40.34 + }, + { + "x": 48.09, + "y": 39.92 + }, + { + "x": 48, + "y": 40.33 + }, + { + "x": 47.31, + "y": 40.27 + }, + { + "x": 47.14, + "y": 39.7 + }, + { + "x": 47.57, + "y": 39.6 + }, + { + "x": 47.01, + "y": 39 + }, + { + "x": 48.41, + "y": 38.19 + }, + { + "x": 45.52, + "y": 38.79 + }, + { + "x": 45.6, + "y": 38.11 + }, + { + "x": 46.03, + "y": 38.18 + }, + { + "x": 45.83, + "y": 37.66 + }, + { + "x": 46.86, + "y": 37.84 + }, + { + "x": 46.52, + "y": 37.94 + }, + { + "x": 46.57, + "y": 37.19 + }, + { + "x": 46.15, + "y": 37.17 + }, + { + "x": 46.5, + "y": 36.45 + }, + { + "x": 45.96, + "y": 36.55 + }, + { + "x": 46.01, + "y": 35.93 + }, + { + "x": 46.55, + "y": 35.92 + }, + { + "x": 47.6, + "y": 37.65 + }, + { + "x": 47.99, + "y": 37.34 + }, + { + "x": 47.39, + "y": 36.82 + }, + { + "x": 48.01, + "y": 36.73 + }, + { + "x": 47.2, + "y": 36.51 + }, + { + "x": 47.68, + "y": 36.34 + }, + { + "x": 46.81, + "y": 35.62 + }, + { + "x": 47.84, + "y": 35.19 + }, + { + "x": 48.27, + "y": 35.96 + }, + { + "x": 48.76, + "y": 35.06 + }, + { + "x": 49.35, + "y": 35.69 + }, + { + "x": 49.14, + "y": 38.05 + }, + { + "x": 49.53, + "y": 38.72 + }, + { + "x": 49.53, + "y": 38.75 + } + ], + [ + { + "x": 43.28, + "y": 26.19 + }, + { + "x": 43.39, + "y": 25.27 + }, + { + "x": 44.72, + "y": 25.13 + }, + { + "x": 45.36, + "y": 25.66 + }, + { + "x": 45.58, + "y": 27.1 + }, + { + "x": 46.3, + "y": 26.28 + }, + { + "x": 46.68, + "y": 27.4 + }, + { + "x": 47.3, + "y": 27.31 + }, + { + "x": 47.9, + "y": 28.19 + }, + { + "x": 47.71, + "y": 29.3 + }, + { + "x": 48.37, + "y": 30.19 + }, + { + "x": 48.19, + "y": 31.02 + }, + { + "x": 47.1, + "y": 30.94 + }, + { + "x": 46.75, + "y": 29.68 + }, + { + "x": 45.58, + "y": 29.54 + }, + { + "x": 45.47, + "y": 29.02 + }, + { + "x": 44.15, + "y": 29.42 + }, + { + "x": 43.73, + "y": 28.47 + }, + { + "x": 44.86, + "y": 28.57 + }, + { + "x": 44.96, + "y": 28.12 + }, + { + "x": 44.47, + "y": 28.06 + }, + { + "x": 45.02, + "y": 27.61 + }, + { + "x": 44.36, + "y": 27.49 + }, + { + "x": 44.32, + "y": 26.62 + }, + { + "x": 43.74, + "y": 27.38 + }, + { + "x": 43.96, + "y": 26.48 + }, + { + "x": 43.28, + "y": 26.21 + }, + { + "x": 43.28, + "y": 26.19 + } + ], + [ + { + "x": 29.74, + "y": 86.6 + }, + { + "x": 28.38, + "y": 86.33 + }, + { + "x": 28.6, + "y": 85.73 + }, + { + "x": 27.99, + "y": 86.06 + }, + { + "x": 27.76, + "y": 85.5 + }, + { + "x": 27.25, + "y": 85.53 + }, + { + "x": 27.61, + "y": 85.21 + }, + { + "x": 26.24, + "y": 84.7 + }, + { + "x": 26.61, + "y": 84.11 + }, + { + "x": 26.12, + "y": 84.3 + }, + { + "x": 25.84, + "y": 83.91 + }, + { + "x": 28.11, + "y": 84.44 + }, + { + "x": 29.73, + "y": 86.58 + }, + { + "x": 29.74, + "y": 86.6 + } + ], + [ + { + "x": 62.16, + "y": 44.24 + }, + { + "x": 62.51, + "y": 43.79 + }, + { + "x": 64.81, + "y": 44.37 + }, + { + "x": 65.81, + "y": 46.26 + }, + { + "x": 63.18, + "y": 46.48 + }, + { + "x": 62.17, + "y": 44.28 + }, + { + "x": 62.16, + "y": 44.24 + } + ], + [ + { + "x": 51.22, + "y": 55.58 + }, + { + "x": 50.22, + "y": 56.45 + }, + { + "x": 47.87, + "y": 55.2 + }, + { + "x": 48.78, + "y": 54.62 + }, + { + "x": 48.67, + "y": 54.02 + }, + { + "x": 49.07, + "y": 54.35 + }, + { + "x": 49.15, + "y": 53.33 + }, + { + "x": 50.45, + "y": 54.61 + }, + { + "x": 50.5, + "y": 55.22 + }, + { + "x": 50.58, + "y": 54.79 + }, + { + "x": 50.75, + "y": 55.55 + }, + { + "x": 51.22, + "y": 55.57 + }, + { + "x": 51.22, + "y": 55.58 + } + ], + [ + { + "x": 52.58, + "y": 40.47 + }, + { + "x": 52.45, + "y": 41.32 + }, + { + "x": 50.99, + "y": 41.06 + }, + { + "x": 50.57, + "y": 40.24 + }, + { + "x": 50.15, + "y": 40.33 + }, + { + "x": 50.5, + "y": 39.09 + }, + { + "x": 51.85, + "y": 38.49 + }, + { + "x": 52.58, + "y": 40.4 + }, + { + "x": 52.58, + "y": 40.47 + } + ], + [ + { + "x": 49.92, + "y": 31.19 + }, + { + "x": 49.26, + "y": 30.29 + }, + { + "x": 49.96, + "y": 29.94 + }, + { + "x": 49.15, + "y": 29.63 + }, + { + "x": 48.8, + "y": 28.7 + }, + { + "x": 48.98, + "y": 27.33 + }, + { + "x": 51.52, + "y": 29.09 + }, + { + "x": 51.08, + "y": 29.58 + }, + { + "x": 51.34, + "y": 30.55 + }, + { + "x": 49.96, + "y": 31.21 + }, + { + "x": 49.92, + "y": 31.19 + } + ], + [ + { + "x": 66.64, + "y": 57.01 + }, + { + "x": 66.51, + "y": 58.49 + }, + { + "x": 65.12, + "y": 58.86 + }, + { + "x": 64.89, + "y": 57.96 + }, + { + "x": 65.38, + "y": 56.83 + }, + { + "x": 66.63, + "y": 57.01 + }, + { + "x": 66.64, + "y": 57.01 + } + ], + [ + { + "x": 40.22, + "y": 30.17 + }, + { + "x": 39.23, + "y": 30.98 + }, + { + "x": 39.84, + "y": 31.26 + }, + { + "x": 39.74, + "y": 32.23 + }, + { + "x": 38.31, + "y": 32.86 + }, + { + "x": 37.5, + "y": 32.19 + }, + { + "x": 37.44, + "y": 30.79 + }, + { + "x": 40.15, + "y": 30.09 + }, + { + "x": 40.22, + "y": 30.17 + } + ], + [ + { + "x": 43.99, + "y": 44.18 + }, + { + "x": 43.52, + "y": 46.25 + }, + { + "x": 42.18, + "y": 44.58 + }, + { + "x": 42.52, + "y": 43.96 + }, + { + "x": 43.88, + "y": 44.16 + }, + { + "x": 43.99, + "y": 44.18 } ] ] diff --git a/frontend/data/outlines/france.json b/frontend/data/outlines/france.json index d852e55..3090140 100644 --- a/frontend/data/outlines/france.json +++ b/frontend/data/outlines/france.json @@ -8,68 +8,1426 @@ "subregion": "Western Europe" }, "outline": { - "type": "MultiPolygon", - "bounds": { - "minLon": -61.79784094999991, - "maxLon": 55.854502800000034, - "minLat": -21.37078215899993, + "type": "Polygon", + "geoBounds": { + "minLon": -4.784901495999918, + "maxLon": 8.200305216000032, + "minLat": 42.32566050300004, "maxLat": 51.08754088371883 }, + "projectedBounds": { + "minX": -0.083512, + "maxX": 0.143122, + "minY": 0.816835, + "maxY": 1.040554 + }, + "projection": { + "padding": 6, + "scale": 388.290207, + "xOffset": 6, + "yOffset": 6.566187 + }, "rings": [ [ { - "x": 6.53, - "y": 67.59 + "x": 55.52, + "y": 6.57 }, { - "x": 6.68, - "y": 62.58 + "x": 56.1, + "y": 7.93 }, { - "x": 8.63, - "y": 64.78 + "x": 55.96, + "y": 9.17 }, { - "x": 6.53, - "y": 67.59 - } - ], - [ - { - "x": 54.67, - "y": 0 + "x": 57.31, + "y": 10.48 }, { - "x": 59.5, - "y": 2.94 + "x": 57.99, + "y": 10.77 }, { - "x": 57.59, - "y": 6.73 - }, - { - "x": 58.88, + "x": 58.56, "y": 10.11 }, { - "x": 54.65, - "y": 12.09 + "x": 59.63, + "y": 9.88 }, { - "x": 51.27, - "y": 11.08 + "x": 60.33, + "y": 10.77 }, { - "x": 51.58, - "y": 6.6 + "x": 60.59, + "y": 12.58 }, { - "x": 48.46, - "y": 3.63 + "x": 62.88, + "y": 13.12 }, { - "x": 54.67, - "y": 0 + "x": 63.48, + "y": 15.01 + }, + { + "x": 63.87, + "y": 14.5 + }, + { + "x": 65.56, + "y": 14.52 + }, + { + "x": 66.87, + "y": 15.43 + }, + { + "x": 66.39, + "y": 16.81 + }, + { + "x": 66.96, + "y": 17.53 + }, + { + "x": 66.43, + "y": 18.43 + }, + { + "x": 68.48, + "y": 18.88 + }, + { + "x": 69.91, + "y": 18.33 + }, + { + "x": 70.16, + "y": 17.28 + }, + { + "x": 71.06, + "y": 16.46 + }, + { + "x": 71.44, + "y": 16.69 + }, + { + "x": 70.85, + "y": 18.6 + }, + { + "x": 71.36, + "y": 19.08 + }, + { + "x": 71.29, + "y": 20.33 + }, + { + "x": 72.12, + "y": 20.3 + }, + { + "x": 73.46, + "y": 21.45 + }, + { + "x": 74.07, + "y": 21.41 + }, + { + "x": 75.4, + "y": 23.42 + }, + { + "x": 77.37, + "y": 22.89 + }, + { + "x": 78.82, + "y": 24.02 + }, + { + "x": 80.4, + "y": 23.42 + }, + { + "x": 81.82, + "y": 23.77 + }, + { + "x": 82.56, + "y": 24.19 + }, + { + "x": 83.93, + "y": 26.96 + }, + { + "x": 84.66, + "y": 27.07 + }, + { + "x": 84.74, + "y": 26.43 + }, + { + "x": 85.36, + "y": 26.47 + }, + { + "x": 86.15, + "y": 27.49 + }, + { + "x": 86.41, + "y": 27.13 + }, + { + "x": 87.72, + "y": 27.51 + }, + { + "x": 88.65, + "y": 26.85 + }, + { + "x": 90.17, + "y": 28.21 + }, + { + "x": 92.18, + "y": 28.24 + }, + { + "x": 94, + "y": 29.03 + }, + { + "x": 93.25, + "y": 30.58 + }, + { + "x": 91.36, + "y": 32.56 + }, + { + "x": 90.95, + "y": 35.36 + }, + { + "x": 89.83, + "y": 37.51 + }, + { + "x": 90.07, + "y": 39.12 + }, + { + "x": 89.33, + "y": 41.78 + }, + { + "x": 89.84, + "y": 43.02 + }, + { + "x": 88.43, + "y": 44.56 + }, + { + "x": 87.48, + "y": 44.7 + }, + { + "x": 87.09, + "y": 43.99 + }, + { + "x": 85.68, + "y": 43.98 + }, + { + "x": 84.96, + "y": 45.33 + }, + { + "x": 86.17, + "y": 45.47 + }, + { + "x": 83.6, + "y": 48.65 + }, + { + "x": 82.09, + "y": 49.41 + }, + { + "x": 82, + "y": 51.23 + }, + { + "x": 79.89, + "y": 52.98 + }, + { + "x": 79.46, + "y": 54.6 + }, + { + "x": 80, + "y": 55.08 + }, + { + "x": 79.73, + "y": 56.23 + }, + { + "x": 78.78, + "y": 56.75 + }, + { + "x": 78.81, + "y": 57.43 + }, + { + "x": 80.04, + "y": 57.24 + }, + { + "x": 80.99, + "y": 56.36 + }, + { + "x": 80.54, + "y": 55.62 + }, + { + "x": 80.91, + "y": 55.03 + }, + { + "x": 82.36, + "y": 54.31 + }, + { + "x": 84.42, + "y": 54.65 + }, + { + "x": 84.17, + "y": 55.32 + }, + { + "x": 84.7, + "y": 56.07 + }, + { + "x": 84.28, + "y": 57.22 + }, + { + "x": 84.98, + "y": 57.61 + }, + { + "x": 84.86, + "y": 58.22 + }, + { + "x": 85.29, + "y": 58.23 + }, + { + "x": 86.02, + "y": 59.43 + }, + { + "x": 84.52, + "y": 60.4 + }, + { + "x": 84.48, + "y": 61.45 + }, + { + "x": 85.62, + "y": 62.2 + }, + { + "x": 85.75, + "y": 63.45 + }, + { + "x": 86.95, + "y": 64.54 + }, + { + "x": 86.24, + "y": 66.32 + }, + { + "x": 83.17, + "y": 67.38 + }, + { + "x": 83.99, + "y": 68.25 + }, + { + "x": 84.14, + "y": 69.26 + }, + { + "x": 85.9, + "y": 70.02 + }, + { + "x": 86.24, + "y": 71.39 + }, + { + "x": 85.59, + "y": 71.4 + }, + { + "x": 84.75, + "y": 72.82 + }, + { + "x": 85.31, + "y": 73.75 + }, + { + "x": 84.98, + "y": 74.45 + }, + { + "x": 85.69, + "y": 75.52 + }, + { + "x": 88.17, + "y": 76.71 + }, + { + "x": 90.31, + "y": 76.21 + }, + { + "x": 90.54, + "y": 77.24 + }, + { + "x": 89.1, + "y": 79.14 + }, + { + "x": 89.27, + "y": 79.83 + }, + { + "x": 88.11, + "y": 80.82 + }, + { + "x": 86.89, + "y": 81.12 + }, + { + "x": 86.81, + "y": 82.06 + }, + { + "x": 85.61, + "y": 82.19 + }, + { + "x": 85.15, + "y": 83.24 + }, + { + "x": 84.04, + "y": 83.43 + }, + { + "x": 83.09, + "y": 84.72 + }, + { + "x": 83.79, + "y": 84.68 + }, + { + "x": 83.7, + "y": 85.35 + }, + { + "x": 81.81, + "y": 85.86 + }, + { + "x": 81.63, + "y": 86.38 + }, + { + "x": 80.4, + "y": 86.21 + }, + { + "x": 80.14, + "y": 86.91 + }, + { + "x": 78.58, + "y": 85.97 + }, + { + "x": 78.27, + "y": 86.1 + }, + { + "x": 78.76, + "y": 86.48 + }, + { + "x": 77.86, + "y": 86.72 + }, + { + "x": 76.88, + "y": 85.55 + }, + { + "x": 74.66, + "y": 85.21 + }, + { + "x": 74.31, + "y": 83.92 + }, + { + "x": 72.54, + "y": 84.1 + }, + { + "x": 72.49, + "y": 83.41 + }, + { + "x": 73.85, + "y": 82.75 + }, + { + "x": 72.51, + "y": 82.02 + }, + { + "x": 72.66, + "y": 83.23 + }, + { + "x": 71.42, + "y": 83.3 + }, + { + "x": 71.33, + "y": 84.04 + }, + { + "x": 70.24, + "y": 81.83 + }, + { + "x": 71.09, + "y": 84 + }, + { + "x": 69.55, + "y": 83.87 + }, + { + "x": 69.01, + "y": 82.98 + }, + { + "x": 66.77, + "y": 82.91 + }, + { + "x": 66.25, + "y": 82.08 + }, + { + "x": 65.22, + "y": 82.19 + }, + { + "x": 62.24, + "y": 84.61 + }, + { + "x": 60.91, + "y": 84.78 + }, + { + "x": 59.53, + "y": 86.23 + }, + { + "x": 59.02, + "y": 87.75 + }, + { + "x": 59.04, + "y": 90.65 + }, + { + "x": 59.98, + "y": 92.46 + }, + { + "x": 58.31, + "y": 92.11 + }, + { + "x": 56.66, + "y": 92.7 + }, + { + "x": 56.47, + "y": 93.31 + }, + { + "x": 55.47, + "y": 93.43 + }, + { + "x": 53.86, + "y": 92.49 + }, + { + "x": 51.95, + "y": 93.22 + }, + { + "x": 51.49, + "y": 92.41 + }, + { + "x": 50.03, + "y": 91.89 + }, + { + "x": 50.39, + "y": 91.25 + }, + { + "x": 50.1, + "y": 90.82 + }, + { + "x": 48.88, + "y": 90.46 + }, + { + "x": 48.11, + "y": 90.96 + }, + { + "x": 47.53, + "y": 89.91 + }, + { + "x": 46.23, + "y": 89.93 + }, + { + "x": 45.81, + "y": 89.33 + }, + { + "x": 43.34, + "y": 88.65 + }, + { + "x": 42.87, + "y": 88.71 + }, + { + "x": 42.79, + "y": 90.14 + }, + { + "x": 40.83, + "y": 89.83 + }, + { + "x": 40.29, + "y": 90.28 + }, + { + "x": 39.57, + "y": 89.75 + }, + { + "x": 38.16, + "y": 90.13 + }, + { + "x": 37.33, + "y": 89.11 + }, + { + "x": 36.24, + "y": 88.68 + }, + { + "x": 34.57, + "y": 89.32 + }, + { + "x": 33.28, + "y": 87.71 + }, + { + "x": 30.63, + "y": 87.17 + }, + { + "x": 29.66, + "y": 86.71 + }, + { + "x": 29.71, + "y": 86.21 + }, + { + "x": 29.17, + "y": 86.91 + }, + { + "x": 28.55, + "y": 86.8 + }, + { + "x": 28.92, + "y": 84.96 + }, + { + "x": 26.59, + "y": 84.52 + }, + { + "x": 26.27, + "y": 83.63 + }, + { + "x": 27.17, + "y": 83.5 + }, + { + "x": 28.42, + "y": 81.82 + }, + { + "x": 29.91, + "y": 72.61 + }, + { + "x": 30.39, + "y": 71.57 + }, + { + "x": 31.35, + "y": 71.53 + }, + { + "x": 30.48, + "y": 70.5 + }, + { + "x": 29.89, + "y": 71.93 + }, + { + "x": 31.07, + "y": 62.89 + }, + { + "x": 33.23, + "y": 65.24 + }, + { + "x": 33.57, + "y": 67.08 + }, + { + "x": 34.8, + "y": 69.38 + }, + { + "x": 34.39, + "y": 68.14 + }, + { + "x": 35.08, + "y": 68.39 + }, + { + "x": 33.98, + "y": 67.42 + }, + { + "x": 33.04, + "y": 63.78 + }, + { + "x": 29.97, + "y": 61.53 + }, + { + "x": 30.09, + "y": 60.73 + }, + { + "x": 30.54, + "y": 60.59 + }, + { + "x": 31.74, + "y": 61.46 + }, + { + "x": 30.62, + "y": 59.99 + }, + { + "x": 31.15, + "y": 59.64 + }, + { + "x": 30.9, + "y": 58.53 + }, + { + "x": 31.32, + "y": 58.33 + }, + { + "x": 30.22, + "y": 57 + }, + { + "x": 30.9, + "y": 55.74 + }, + { + "x": 30.45, + "y": 55.51 + }, + { + "x": 30.02, + "y": 55.92 + }, + { + "x": 26.3, + "y": 53.48 + }, + { + "x": 26.26, + "y": 53.86 + }, + { + "x": 25.48, + "y": 51.91 + }, + { + "x": 24.07, + "y": 50.65 + }, + { + "x": 24, + "y": 49.92 + }, + { + "x": 24.94, + "y": 48.51 + }, + { + "x": 24.67, + "y": 47.94 + }, + { + "x": 23.24, + "y": 47.44 + }, + { + "x": 23.75, + "y": 47.19 + }, + { + "x": 23.85, + "y": 46.07 + }, + { + "x": 25.36, + "y": 46.01 + }, + { + "x": 26.72, + "y": 46.76 + }, + { + "x": 24.8, + "y": 45.67 + }, + { + "x": 22.99, + "y": 46.41 + }, + { + "x": 21.2, + "y": 45.87 + }, + { + "x": 21.92, + "y": 45.8 + }, + { + "x": 21.1, + "y": 45.04 + }, + { + "x": 22.22, + "y": 44.63 + }, + { + "x": 21.52, + "y": 43.96 + }, + { + "x": 22.41, + "y": 43.81 + }, + { + "x": 20.59, + "y": 43.67 + }, + { + "x": 20.96, + "y": 43.33 + }, + { + "x": 19.25, + "y": 43.83 + }, + { + "x": 18.71, + "y": 43.28 + }, + { + "x": 19.85, + "y": 43.35 + }, + { + "x": 20.08, + "y": 42.43 + }, + { + "x": 20.07, + "y": 42.84 + }, + { + "x": 19.53, + "y": 42.43 + }, + { + "x": 18.64, + "y": 42.91 + }, + { + "x": 18.27, + "y": 42.22 + }, + { + "x": 18.5, + "y": 43.26 + }, + { + "x": 18.02, + "y": 42.79 + }, + { + "x": 17.26, + "y": 42.88 + }, + { + "x": 17.52, + "y": 44.09 + }, + { + "x": 17.2, + "y": 44.09 + }, + { + "x": 16.74, + "y": 42.47 + }, + { + "x": 17.3, + "y": 41.53 + }, + { + "x": 16.79, + "y": 41.39 + }, + { + "x": 17.02, + "y": 41.75 + }, + { + "x": 16.58, + "y": 42.3 + }, + { + "x": 15.67, + "y": 41.88 + }, + { + "x": 16.18, + "y": 41.95 + }, + { + "x": 15.67, + "y": 41.75 + }, + { + "x": 16.18, + "y": 40.98 + }, + { + "x": 15.07, + "y": 41.81 + }, + { + "x": 14.52, + "y": 41.05 + }, + { + "x": 12.32, + "y": 40.84 + }, + { + "x": 11.58, + "y": 39.84 + }, + { + "x": 11.26, + "y": 40.33 + }, + { + "x": 10.42, + "y": 39.6 + }, + { + "x": 10.57, + "y": 40.15 + }, + { + "x": 10.06, + "y": 40.1 + }, + { + "x": 10.06, + "y": 40.71 + }, + { + "x": 8.8, + "y": 40.78 + }, + { + "x": 8.97, + "y": 40.21 + }, + { + "x": 8.37, + "y": 39.07 + }, + { + "x": 6.38, + "y": 38.42 + }, + { + "x": 9.39, + "y": 37.66 + }, + { + "x": 8.75, + "y": 36.47 + }, + { + "x": 8.03, + "y": 36.36 + }, + { + "x": 7.54, + "y": 37.03 + }, + { + "x": 7.61, + "y": 36.26 + }, + { + "x": 7.07, + "y": 35.91 + }, + { + "x": 7.61, + "y": 35.3 + }, + { + "x": 7.83, + "y": 35.82 + }, + { + "x": 10.05, + "y": 35.7 + }, + { + "x": 9.12, + "y": 35.56 + }, + { + "x": 9.49, + "y": 35.14 + }, + { + "x": 8.24, + "y": 35.42 + }, + { + "x": 9.35, + "y": 34.44 + }, + { + "x": 6.54, + "y": 35.36 + }, + { + "x": 6.11, + "y": 35.32 + }, + { + "x": 6, + "y": 34.39 + }, + { + "x": 6.43, + "y": 33.04 + }, + { + "x": 7.41, + "y": 33.04 + }, + { + "x": 7.5, + "y": 32.41 + }, + { + "x": 8.99, + "y": 31.91 + }, + { + "x": 10.01, + "y": 32.2 + }, + { + "x": 10.14, + "y": 31.78 + }, + { + "x": 11.5, + "y": 31.35 + }, + { + "x": 11.63, + "y": 32.13 + }, + { + "x": 12.05, + "y": 31.92 + }, + { + "x": 12.32, + "y": 32.41 + }, + { + "x": 12.61, + "y": 31.35 + }, + { + "x": 14.13, + "y": 31.87 + }, + { + "x": 14.6, + "y": 30.23 + }, + { + "x": 15.4, + "y": 30.59 + }, + { + "x": 16.54, + "y": 29.92 + }, + { + "x": 16.6, + "y": 30.72 + }, + { + "x": 17.48, + "y": 29.93 + }, + { + "x": 17.25, + "y": 31.07 + }, + { + "x": 18.04, + "y": 30.44 + }, + { + "x": 17.81, + "y": 30.79 + }, + { + "x": 18.55, + "y": 31 + }, + { + "x": 20.25, + "y": 33.65 + }, + { + "x": 21.57, + "y": 32.2 + }, + { + "x": 22.73, + "y": 31.7 + }, + { + "x": 22.63, + "y": 32.41 + }, + { + "x": 23.17, + "y": 32.2 + }, + { + "x": 23.42, + "y": 32.9 + }, + { + "x": 24.52, + "y": 32.2 + }, + { + "x": 25.01, + "y": 33.6 + }, + { + "x": 25.19, + "y": 32.97 + }, + { + "x": 24.68, + "y": 32.27 + }, + { + "x": 25.24, + "y": 31.7 + }, + { + "x": 25.93, + "y": 31.56 + }, + { + "x": 25.82, + "y": 32.3 + }, + { + "x": 26.26, + "y": 32.55 + }, + { + "x": 29.23, + "y": 32.27 + }, + { + "x": 27.9, + "y": 31.21 + }, + { + "x": 27.56, + "y": 30.15 + }, + { + "x": 28.21, + "y": 28.25 + }, + { + "x": 27.63, + "y": 28.3 + }, + { + "x": 27.51, + "y": 26.37 + }, + { + "x": 27.93, + "y": 26.27 + }, + { + "x": 27.42, + "y": 26.33 + }, + { + "x": 26.91, + "y": 24.91 + }, + { + "x": 26.12, + "y": 24.62 + }, + { + "x": 25.65, + "y": 23.09 + }, + { + "x": 25.96, + "y": 22.16 + }, + { + "x": 25.24, + "y": 21.55 + }, + { + "x": 25.31, + "y": 21.07 + }, + { + "x": 27.54, + "y": 21.84 + }, + { + "x": 28.87, + "y": 21.2 + }, + { + "x": 29.87, + "y": 21.36 + }, + { + "x": 30.11, + "y": 22.11 + }, + { + "x": 29.57, + "y": 22.8 + }, + { + "x": 30.82, + "y": 25.02 + }, + { + "x": 31.16, + "y": 24.48 + }, + { + "x": 32.05, + "y": 24.53 + }, + { + "x": 35.64, + "y": 25.05 + }, + { + "x": 36.94, + "y": 25.7 + }, + { + "x": 41.21, + "y": 23.91 + }, + { + "x": 41.77, + "y": 23.48 + }, + { + "x": 40.73, + "y": 23.86 + }, + { + "x": 38.96, + "y": 23.25 + }, + { + "x": 39.69, + "y": 21.28 + }, + { + "x": 42.47, + "y": 19.67 + }, + { + "x": 46.7, + "y": 18.39 + }, + { + "x": 48.73, + "y": 15.9 + }, + { + "x": 49.76, + "y": 16.13 + }, + { + "x": 48.87, + "y": 15.23 + }, + { + "x": 49.34, + "y": 14.24 + }, + { + "x": 48.97, + "y": 13.88 + }, + { + "x": 49.34, + "y": 12.35 + }, + { + "x": 49.14, + "y": 8.92 + }, + { + "x": 51.45, + "y": 7.54 + }, + { + "x": 55.52, + "y": 6.57 } ] ] diff --git a/frontend/data/outlines/germany.json b/frontend/data/outlines/germany.json index b540ba1..ff7e40d 100644 --- a/frontend/data/outlines/germany.json +++ b/frontend/data/outlines/germany.json @@ -9,519 +9,1445 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { + "geoBounds": { "minLon": 5.852489868000106, "maxLon": 15.022059367000054, "minLat": 47.27112091100007, - "maxLat": 55.065334377000056 + "maxLat": 54.90590037000008 + }, + "projectedBounds": { + "minX": 0.102145, + "maxX": 0.262184, + "minY": 0.938588, + "maxY": 1.151375 + }, + "projection": { + "padding": 6, + "scale": 413.559313, + "xOffset": 16.907154, + "yOffset": 6 }, "rings": [ [ { - "x": 86.84, - "y": 80.82 + "x": 74.39, + "y": 77.86 }, { - "x": 85.76, - "y": 83.96 + "x": 74.29, + "y": 79.55 }, { - "x": 82.91, - "y": 83.29 + "x": 73.67, + "y": 80.54 }, { - "x": 82.37, - "y": 85.82 + "x": 71.78, + "y": 79.97 }, { - "x": 75.1, - "y": 89.19 + "x": 71.43, + "y": 82.12 }, { - "x": 78.73, - "y": 95.02 + "x": 68.73, + "y": 83.34 }, { - "x": 77.97, - "y": 97.5 + "x": 66.61, + "y": 84.97 }, { - "x": 69.66, - "y": 94.09 + "x": 68.43, + "y": 87.84 }, { - "x": 58.72, - "y": 98.42 + "x": 67.72, + "y": 89.17 }, { - "x": 49.91, - "y": 96.08 + "x": 68.64, + "y": 89.28 }, { - "x": 46.97, - "y": 100 + "x": 69.02, + "y": 89.85 }, { - "x": 44.64, - "y": 96.54 + "x": 68.51, + "y": 91.92 }, { - "x": 29.78, - "y": 93.21 + "x": 66.9, + "y": 90.97 }, { - "x": 27.68, - "y": 94.6 + "x": 67.15, + "y": 90.36 }, { - "x": 29.53, - "y": 95.92 + "x": 66.78, + "y": 89.77 }, { - "x": 18.91, - "y": 95.98 + "x": 64.86, + "y": 90.18 }, { - "x": 18.9, - "y": 88.98 + "x": 64.34, + "y": 89.51 }, { - "x": 25.6, - "y": 78.35 + "x": 63, + "y": 89.65 }, { - "x": 9.39, - "y": 75.78 + "x": 63.01, + "y": 89.08 }, { - "x": 5.37, - "y": 71.98 + "x": 62.55, + "y": 89.36 }, { - "x": 7.09, - "y": 67.61 + "x": 62.53, + "y": 90.44 }, { - "x": 2.66, - "y": 64.36 + "x": 58.54, + "y": 90.6 }, { - "x": 5.69, - "y": 60.94 + "x": 58.04, + "y": 91.41 }, { - "x": 0.06, - "y": 51.91 + "x": 57.04, + "y": 91.49 }, { - "x": 3.88, - "y": 47.18 + "x": 56.83, + "y": 92.15 }, { - "x": 0.82, - "y": 41.81 + "x": 55.77, + "y": 92.69 }, { - "x": 9.72, - "y": 40.5 + "x": 55.46, + "y": 92.32 }, { - "x": 9.02, - "y": 38.55 + "x": 53.91, + "y": 92.73 }, { - "x": 12.8, - "y": 36.37 + "x": 53.04, + "y": 91.23 }, { - "x": 12.22, - "y": 33.54 + "x": 51.06, + "y": 90.89 }, { - "x": 8.93, - "y": 32.38 + "x": 50.63, + "y": 91.26 }, { - "x": 12.72, - "y": 31.3 + "x": 49.94, + "y": 90.74 }, { - "x": 16.51, - "y": 22.61 + "x": 49.94, + "y": 92.67 }, { - "x": 12.77, - "y": 21.67 + "x": 49.05, + "y": 93.67 }, { - "x": 14.98, - "y": 17.95 + "x": 48, + "y": 94 }, { - "x": 23.76, - "y": 17.41 + "x": 48.35, + "y": 92.92 }, { - "x": 25.66, - "y": 21.23 + "x": 47.37, + "y": 93 }, { - "x": 26.37, - "y": 18.64 + "x": 47.43, + "y": 92.34 }, { - "x": 29.44, - "y": 19.52 + "x": 46.45, + "y": 91.12 }, { - "x": 28.92, - "y": 21.9 + "x": 45.64, + "y": 91.19 }, { - "x": 29.83, - "y": 15.33 + "x": 45.27, + "y": 90.61 + }, + { + "x": 44.05, + "y": 91.33 + }, + { + "x": 40.95, + "y": 89.74 + }, + { + "x": 38.77, + "y": 89.89 + }, + { + "x": 38.16, + "y": 89.2 + }, + { + "x": 37.58, + "y": 89.48 + }, + { + "x": 37.56, + "y": 88.8 + }, + { + "x": 37.06, + "y": 88.44 + }, + { + "x": 36.86, + "y": 88.8 }, { "x": 36.62, - "y": 15.31 + "y": 88.34 }, { - "x": 43.4, - "y": 19.52 + "x": 35.23, + "y": 89.5 }, { - "x": 33.41, - "y": 14.47 + "x": 35.72, + "y": 90.06 }, { - "x": 33.92, - "y": 9.59 + "x": 36.79, + "y": 89.89 }, { - "x": 29.96, - "y": 9.33 + "x": 36.55, + "y": 90.57 }, { - "x": 34.45, - "y": 7.17 + "x": 36.18, + "y": 90.26 }, { - "x": 30.63, - "y": 2.17 + "x": 34.96, + "y": 90.69 }, { - "x": 44.66, - "y": 3.67 + "x": 34.09, + "y": 90.26 }, { - "x": 45.52, - "y": 6.48 + "x": 32.71, + "y": 90.91 }, { - "x": 43.49, - "y": 7.57 + "x": 31.11, + "y": 90.54 }, { - "x": 46.8, - "y": 7.36 + "x": 30.12, + "y": 91.09 }, { - "x": 46.78, - "y": 9.51 + "x": 29.59, + "y": 90.87 }, { - "x": 57.61, - "y": 8.72 + "x": 29.95, + "y": 90.53 }, { - "x": 53.44, - "y": 13.03 + "x": 29.42, + "y": 90.66 }, { - "x": 54.91, - "y": 14.13 + "x": 28.88, + "y": 89.34 }, { - "x": 61.13, - "y": 14.87 + "x": 29.67, + "y": 86.5 }, { - "x": 63.66, - "y": 11.68 + "x": 29.42, + "y": 84.79 }, { - "x": 68.3, - "y": 12.41 + "x": 30.61, + "y": 82.5 }, { - "x": 72.86, - "y": 7.4 + "x": 31.04, + "y": 79.52 }, { - "x": 77.09, - "y": 8.11 + "x": 33.06, + "y": 77.41 }, { - "x": 71.06, - "y": 10.21 + "x": 33.85, + "y": 75.75 }, { - "x": 78.32, - "y": 8.1 + "x": 31.92, + "y": 74.92 }, { - "x": 83.02, - "y": 12.41 + "x": 29.77, + "y": 74.88 }, { - "x": 86.76, - "y": 12.33 + "x": 28.15, + "y": 73.44 }, { - "x": 86.86, - "y": 15.56 + "x": 27.17, + "y": 74.14 }, { - "x": 91.74, - "y": 16.86 + "x": 25.77, + "y": 73.73 }, { - "x": 93.67, - "y": 23.27 + "x": 25.5, + "y": 74.11 }, { - "x": 90.21, - "y": 28.41 + "x": 25.26, + "y": 73.3 }, { - "x": 95.89, - "y": 31.93 + "x": 24.65, + "y": 73.03 }, { - "x": 94.8, - "y": 34.43 + "x": 23.99, + "y": 72.99 }, { - "x": 97.16, - "y": 38.34 + "x": 23.9, + "y": 73.67 }, { - "x": 95.24, - "y": 41.84 + "x": 23.12, + "y": 73.55 }, { - "x": 99.27, - "y": 46.57 + "x": 21.67, + "y": 70.61 }, { - "x": 98.78, - "y": 52.25 + "x": 20.46, + "y": 70.27 }, { - "x": 96.9, - "y": 54.59 + "x": 20.5, + "y": 69.03 }, { - "x": 91.99, - "y": 51.69 + "x": 21.58, + "y": 67.41 }, { - "x": 92.63, - "y": 53.7 + "x": 21.6, + "y": 66.47 }, { - "x": 72.61, - "y": 60 + "x": 20.16, + "y": 66.03 }, { - "x": 70.32, - "y": 62.93 + "x": 18.67, + "y": 63.64 }, { - "x": 67.87, - "y": 60.94 + "x": 19.03, + "y": 61.78 }, { - "x": 72.76, - "y": 66.21 + "x": 20.68, + "y": 60.63 }, { - "x": 71.23, - "y": 68.29 + "x": 20.4, + "y": 58.76 }, { - "x": 74.06, - "y": 72.31 + "x": 19.2, + "y": 58.34 }, { - "x": 86.63, - "y": 80.64 + "x": 19.77, + "y": 57.24 }, { - "x": 86.84, - "y": 80.82 - } - ], - [ - { - "x": 91.14, - "y": 14.46 + "x": 19.12, + "y": 57.15 }, { - "x": 87.11, - "y": 15.59 + "x": 17.92, + "y": 55.76 }, { - "x": 89.41, - "y": 13.6 + "x": 17.75, + "y": 55.19 }, { - "x": 86.16, - "y": 11.7 + "x": 18.43, + "y": 53.9 }, { - "x": 91.14, - "y": 14.46 - } - ], - [ + "x": 18, + "y": 53.14 + }, { - "x": 13.97, - "y": 17.41 + "x": 17.07, + "y": 53.23 }, { - "x": 16.3, - "y": 17.22 + "x": 16.95, + "y": 52.61 }, { - "x": 14.41, - "y": 17.5 + "x": 19.03, + "y": 51.09 }, { - "x": 13.97, - "y": 17.41 - } - ], - [ + "x": 19.11, + "y": 50.78 + }, { - "x": 19.72, - "y": 16.72 + "x": 18.41, + "y": 50.87 }, { - "x": 21.38, - "y": 16.45 + "x": 18.38, + "y": 50.4 }, { - "x": 19.81, - "y": 16.77 + "x": 19.47, + "y": 48.37 }, { - "x": 19.72, - "y": 16.72 - } - ], - [ + "x": 19.37, + "y": 46.96 + }, { - "x": 58.92, - "y": 7.53 + "x": 18.6, + "y": 45.96 }, { - "x": 56.23, - "y": 7.84 + "x": 18.69, + "y": 45.39 }, { - "x": 58.75, - "y": 7.31 + "x": 17.53, + "y": 44.37 }, { - "x": 58.92, - "y": 7.53 - } - ], - [ + "x": 17.45, + "y": 43.5 + }, { - "x": 79.51, - "y": 5.99 + "x": 19.1, + "y": 43.09 }, { - "x": 78.62, - "y": 7.66 + "x": 18.89, + "y": 42.45 }, { - "x": 79.51, - "y": 6.26 + "x": 20.46, + "y": 43.33 }, { - "x": 79.51, - "y": 5.99 - } - ], - [ + "x": 20.7, + "y": 42.88 + }, { - "x": 85.56, - "y": 8.64 + "x": 23.34, + "y": 42.31 }, { - "x": 82.39, - "y": 10.74 + "x": 23.81, + "y": 41.48 }, { - "x": 79.21, - "y": 9.33 + "x": 22.88, + "y": 40.53 }, { - "x": 80.86, - "y": 8.72 + "x": 25.38, + "y": 38.53 }, { - "x": 79.51, - "y": 6.7 + "x": 25.54, + "y": 36.94 }, { - "x": 83.48, - "y": 7.4 + "x": 25, + "y": 35.92 }, { - "x": 80.71, - "y": 6.42 + "x": 23.13, + "y": 35.8 }, { - "x": 82.21, - "y": 4.84 + "x": 22.82, + "y": 34.85 }, { - "x": 85.34, - "y": 8.53 + "x": 23.34, + "y": 34.64 }, { - "x": 85.56, - "y": 8.64 - } - ], - [ + "x": 23.29, + "y": 33.75 + }, { - "x": 27.35, - "y": 1.5 + "x": 25.32, + "y": 33.85 }, { - "x": 30.56, - "y": 2.2 + "x": 25.64, + "y": 31.49 }, { "x": 26.52, - "y": 4.14 + "y": 29.79 }, { - "x": 28.47, - "y": 0.19 + "x": 26.59, + "y": 26.44 }, { - "x": 27.25, - "y": 1.26 + "x": 27.03, + "y": 25.54 }, { - "x": 27.35, - "y": 1.5 + "x": 27.84, + "y": 25.74 + }, + { + "x": 25.73, + "y": 25.32 + }, + { + "x": 25.36, + "y": 24.85 + }, + { + "x": 25.56, + "y": 23.2 + }, + { + "x": 26.21, + "y": 22.9 + }, + { + "x": 25.82, + "y": 22.3 + }, + { + "x": 26.82, + "y": 21.33 + }, + { + "x": 32.63, + "y": 20.82 + }, + { + "x": 33.62, + "y": 22.71 + }, + { + "x": 32.83, + "y": 23.33 + }, + { + "x": 32.96, + "y": 23.73 + }, + { + "x": 33.99, + "y": 24.49 + }, + { + "x": 34.68, + "y": 23.66 + }, + { + "x": 34.51, + "y": 22.99 + }, + { + "x": 34.08, + "y": 23.05 + }, + { + "x": 34.36, + "y": 21.98 + }, + { + "x": 36.39, + "y": 22.82 + }, + { + "x": 35.94, + "y": 23.52 + }, + { + "x": 36.05, + "y": 25.07 + }, + { + "x": 36, + "y": 23.66 + }, + { + "x": 36.49, + "y": 22.78 + }, + { + "x": 35.92, + "y": 20.91 + }, + { + "x": 36.65, + "y": 18.84 + }, + { + "x": 37.26, + "y": 18.58 + }, + { + "x": 38.62, + "y": 19.32 + }, + { + "x": 41.15, + "y": 18.82 + }, + { + "x": 41.67, + "y": 18.94 + }, + { + "x": 43.83, + "y": 22.24 + }, + { + "x": 45.63, + "y": 22.82 + }, + { + "x": 43.6, + "y": 21.72 + }, + { + "x": 42.48, + "y": 19.32 + }, + { + "x": 39.02, + "y": 18.02 + }, + { + "x": 38.42, + "y": 16.8 + }, + { + "x": 39.61, + "y": 16.88 + }, + { + "x": 39.76, + "y": 16.04 + }, + { + "x": 39.29, + "y": 15.4 + }, + { + "x": 38.62, + "y": 15.71 + }, + { + "x": 38.27, + "y": 15.03 + }, + { + "x": 38.47, + "y": 14.1 + }, + { + "x": 39.36, + "y": 13.33 + }, + { + "x": 37.31, + "y": 13.93 + }, + { + "x": 36.74, + "y": 13.08 + }, + { + "x": 37.43, + "y": 12.83 + }, + { + "x": 36.99, + "y": 12.74 + }, + { + "x": 37.09, + "y": 12.23 + }, + { + "x": 38.8, + "y": 12.09 + }, + { + "x": 39.71, + "y": 10.99 + }, + { + "x": 38.75, + "y": 9.74 + }, + { + "x": 38.37, + "y": 9.85 + }, + { + "x": 38.22, + "y": 8.73 + }, + { + "x": 37.38, + "y": 8.14 + }, + { + "x": 37.18, + "y": 6.12 + }, + { + "x": 38.93, + "y": 6.1 + }, + { + "x": 41.03, + "y": 6.7 + }, + { + "x": 41.39, + "y": 7.31 + }, + { + "x": 42.88, + "y": 7.2 + }, + { + "x": 43.81, + "y": 6.5 + }, + { + "x": 43.84, + "y": 6.95 + }, + { + "x": 45.57, + "y": 7.87 + }, + { + "x": 46.46, + "y": 7.58 + }, + { + "x": 46.98, + "y": 8.56 + }, + { + "x": 46.33, + "y": 8.9 + }, + { + "x": 47.13, + "y": 8.99 + }, + { + "x": 47.04, + "y": 10.32 + }, + { + "x": 45.69, + "y": 11.38 + }, + { + "x": 47.88, + "y": 11.17 + }, + { + "x": 48.32, + "y": 11.55 + }, + { + "x": 47.87, + "y": 13.25 + }, + { + "x": 49.14, + "y": 11.77 + }, + { + "x": 52.12, + "y": 13.42 + }, + { + "x": 53.59, + "y": 12.57 + }, + { + "x": 55.04, + "y": 12.49 + }, + { + "x": 54.54, + "y": 12.83 + }, + { + "x": 54.54, + "y": 14.98 + }, + { + "x": 52.28, + "y": 16.63 + }, + { + "x": 53.25, + "y": 17.69 + }, + { + "x": 55.33, + "y": 17.03 + }, + { + "x": 55.82, + "y": 17.92 + }, + { + "x": 56.47, + "y": 17.72 + }, + { + "x": 57.37, + "y": 18.4 + }, + { + "x": 57.81, + "y": 16.8 + }, + { + "x": 59.04, + "y": 15.34 + }, + { + "x": 61.92, + "y": 14.86 + }, + { + "x": 62.11, + "y": 16.04 + }, + { + "x": 62.07, + "y": 15 + }, + { + "x": 63.75, + "y": 13.5 + }, + { + "x": 65.13, + "y": 11.22 + }, + { + "x": 65.55, + "y": 11.67 + }, + { + "x": 67.93, + "y": 11.9 + }, + { + "x": 64.44, + "y": 12.47 + }, + { + "x": 63.94, + "y": 13.93 + }, + { + "x": 64.59, + "y": 14.1 + }, + { + "x": 64.24, + "y": 13.93 + }, + { + "x": 64.73, + "y": 13.16 + }, + { + "x": 66.28, + "y": 12.14 + }, + { + "x": 66.22, + "y": 12.66 + }, + { + "x": 66.96, + "y": 12.41 + }, + { + "x": 67.21, + "y": 12.86 + }, + { + "x": 68.74, + "y": 11.89 + }, + { + "x": 69.33, + "y": 13.8 + }, + { + "x": 70.58, + "y": 14.36 + }, + { + "x": 70.82, + "y": 15.2 + }, + { + "x": 71.41, + "y": 15.11 + }, + { + "x": 71.85, + "y": 16.04 + }, + { + "x": 73.64, + "y": 15.11 + }, + { + "x": 74.33, + "y": 15.96 + }, + { + "x": 73.88, + "y": 16.8 + }, + { + "x": 75.05, + "y": 18.06 + }, + { + "x": 74.4, + "y": 19.05 + }, + { + "x": 75.99, + "y": 20.24 + }, + { + "x": 77.62, + "y": 20.29 + }, + { + "x": 77.25, + "y": 20.82 + }, + { + "x": 77.62, + "y": 20.92 + }, + { + "x": 78.9, + "y": 26.35 + }, + { + "x": 78.19, + "y": 28.8 + }, + { + "x": 76.76, + "y": 29.86 + }, + { + "x": 76.61, + "y": 31.17 + }, + { + "x": 80.37, + "y": 34.43 + }, + { + "x": 79.65, + "y": 36.74 + }, + { + "x": 79.93, + "y": 37.82 + }, + { + "x": 80.86, + "y": 38.47 + }, + { + "x": 80.67, + "y": 39.82 + }, + { + "x": 81.21, + "y": 40.34 + }, + { + "x": 79.94, + "y": 43.53 + }, + { + "x": 81, + "y": 45.23 + }, + { + "x": 80.84, + "y": 46.72 + }, + { + "x": 82.61, + "y": 47.82 + }, + { + "x": 83.09, + "y": 50.11 + }, + { + "x": 82.29, + "y": 52.92 + }, + { + "x": 81.04, + "y": 55 + }, + { + "x": 80.14, + "y": 54.6 + }, + { + "x": 80.26, + "y": 53.74 + }, + { + "x": 79.69, + "y": 53.84 + }, + { + "x": 79.86, + "y": 53.12 + }, + { + "x": 79.2, + "y": 52.41 + }, + { + "x": 77.79, + "y": 52.41 + }, + { + "x": 77.44, + "y": 53.04 + }, + { + "x": 78.47, + "y": 53.74 + }, + { + "x": 78.22, + "y": 54.21 + }, + { + "x": 75.42, + "y": 55.1 + }, + { + "x": 74.52, + "y": 56 + }, + { + "x": 72.51, + "y": 56.19 + }, + { + "x": 71.73, + "y": 57.44 + }, + { + "x": 71.16, + "y": 57.08 + }, + { + "x": 70.7, + "y": 57.68 + }, + { + "x": 70.17, + "y": 57.61 + }, + { + "x": 69.65, + "y": 58.57 + }, + { + "x": 68.57, + "y": 58.62 + }, + { + "x": 68.16, + "y": 59.63 + }, + { + "x": 67.18, + "y": 59.19 + }, + { + "x": 64.96, + "y": 59.8 + }, + { + "x": 63.71, + "y": 61.27 + }, + { + "x": 63.45, + "y": 62.38 + }, + { + "x": 63.01, + "y": 61.3 + }, + { + "x": 61.83, + "y": 60.63 + }, + { + "x": 63.06, + "y": 63.68 + }, + { + "x": 64.54, + "y": 64.4 + }, + { + "x": 65.06, + "y": 65.25 + }, + { + "x": 64.05, + "y": 67.06 + }, + { + "x": 64.86, + "y": 67.88 + }, + { + "x": 65.92, + "y": 70.55 + }, + { + "x": 66.89, + "y": 71.63 + }, + { + "x": 68.5, + "y": 72.04 + }, + { + "x": 69.79, + "y": 74 + }, + { + "x": 70.66, + "y": 74.27 + }, + { + "x": 71.81, + "y": 75.9 + }, + { + "x": 72.89, + "y": 75.89 + }, + { + "x": 74.24, + "y": 77.72 + }, + { + "x": 74.39, + "y": 77.86 + } + ], + [ + { + "x": 73.54, + "y": 12.41 + }, + { + "x": 74.03, + "y": 12.99 + }, + { + "x": 73.72, + "y": 13.82 + }, + { + "x": 73.2, + "y": 13.59 + }, + { + "x": 73.64, + "y": 13.16 + }, + { + "x": 72.95, + "y": 13.33 + }, + { + "x": 73.29, + "y": 12.89 + }, + { + "x": 71.98, + "y": 13.08 + }, + { + "x": 71.09, + "y": 13.85 + }, + { + "x": 71.44, + "y": 14.44 + }, + { + "x": 70.75, + "y": 14.15 + }, + { + "x": 70.92, + "y": 13.75 + }, + { + "x": 70.43, + "y": 14.09 + }, + { + "x": 69.58, + "y": 13.67 + }, + { + "x": 69.57, + "y": 12.59 + }, + { + "x": 70.42, + "y": 12.49 + }, + { + "x": 69.63, + "y": 11.98 + }, + { + "x": 70.47, + "y": 11.29 + }, + { + "x": 69.53, + "y": 10.54 + }, + { + "x": 70.37, + "y": 10.4 + }, + { + "x": 70.65, + "y": 10.83 + }, + { + "x": 71.16, + "y": 10.01 + }, + { + "x": 71.02, + "y": 10.78 + }, + { + "x": 71.22, + "y": 10.27 + }, + { + "x": 71.61, + "y": 11.16 + }, + { + "x": 72.26, + "y": 10.87 + }, + { + "x": 72.26, + "y": 10.19 + }, + { + "x": 71.68, + "y": 10.36 + }, + { + "x": 71.16, + "y": 9.67 + }, + { + "x": 70.33, + "y": 10.27 + }, + { + "x": 70.62, + "y": 9.3 + }, + { + "x": 70.16, + "y": 9.16 + }, + { + "x": 71.52, + "y": 8.72 + }, + { + "x": 71.56, + "y": 10.01 + }, + { + "x": 73.12, + "y": 10 + }, + { + "x": 73.39, + "y": 10.57 + }, + { + "x": 72.65, + "y": 11.42 + }, + { + "x": 73.39, + "y": 12.3 + }, + { + "x": 73.54, + "y": 12.41 + } + ], + [ + { + "x": 77.23, + "y": 18 + }, + { + "x": 77.17, + "y": 18.74 + }, + { + "x": 74.56, + "y": 19.08 + }, + { + "x": 75.22, + "y": 18.48 + }, + { + "x": 75.03, + "y": 17.3 + }, + { + "x": 75.52, + "y": 17.38 + }, + { + "x": 75.42, + "y": 17.97 + }, + { + "x": 76.06, + "y": 17.97 + }, + { + "x": 76.09, + "y": 17.19 + }, + { + "x": 75.33, + "y": 16.43 + }, + { + "x": 74.93, + "y": 17.12 + }, + { + "x": 74.73, + "y": 16.63 + }, + { + "x": 74.09, + "y": 16.97 + }, + { + "x": 74.38, + "y": 16 + }, + { + "x": 74, + "y": 15.22 + }, + { + "x": 74.38, + "y": 15.11 + }, + { + "x": 77.23, + "y": 18 } ] ] diff --git a/frontend/data/outlines/india.json b/frontend/data/outlines/india.json index a5cacc3..c468336 100644 --- a/frontend/data/outlines/india.json +++ b/frontend/data/outlines/india.json @@ -9,311 +9,1351 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { + "geoBounds": { "minLon": 68.14340254000007, "maxLon": 97.36225305200003, - "minLat": 6.74555084800005, + "minLat": 8.075995184000078, "maxLat": 35.49540557900012 }, + "projectedBounds": { + "minX": 1.189327, + "maxX": 1.699292, + "minY": 0.141422, + "maxY": 0.663424 + }, + "projection": { + "padding": 6, + "scale": 168.5816, + "xOffset": 7.01463, + "yOffset": 6 + }, "rings": [ [ { - "x": 33.05, - "y": 0 + "x": 35.43, + "y": 6 }, { - "x": 39.26, - "y": 9.5 + "x": 36.15, + "y": 6.01 }, { - "x": 35.05, - "y": 10.25 + "x": 36.02, + "y": 6.82 }, { - "x": 36.28, - "y": 14.56 + "x": 36.89, + "y": 9.13 }, { - "x": 44.01, - "y": 18.37 + "x": 38.81, + "y": 10.11 }, { - "x": 40.7, - "y": 23.16 + "x": 38.89, + "y": 10.58 + }, + { + "x": 38.16, + "y": 11.07 + }, + { + "x": 38.37, + "y": 13.14 + }, + { + "x": 39.18, + "y": 13.84 + }, + { + "x": 40.3, + "y": 14 + }, + { + "x": 39.94, + "y": 14.9 + }, + { + "x": 40.76, + "y": 15.71 + }, + { + "x": 40.26, + "y": 16.51 + }, + { + "x": 39.9, + "y": 16.31 + }, + { + "x": 38.79, + "y": 17.17 + }, + { + "x": 38.11, + "y": 16.15 + }, + { + "x": 37.15, + "y": 16.47 + }, + { + "x": 37.36, + "y": 17.57 + }, + { + "x": 38.21, + "y": 18.5 + }, + { + "x": 38.21, + "y": 20.76 + }, + { + "x": 38.73, + "y": 20.9 + }, + { + "x": 39.34, + "y": 20.31 + }, + { + "x": 40.14, + "y": 21.74 + }, + { + "x": 41.46, + "y": 21.98 + }, + { + "x": 42.56, + "y": 22.73 + }, + { + "x": 42.43, + "y": 23.33 + }, + { + "x": 44.77, + "y": 24.37 + }, + { + "x": 42.99, + "y": 26.06 + }, + { + "x": 42.01, + "y": 29.17 + }, + { + "x": 45.34, + "y": 30.76 + }, + { + "x": 45.71, + "y": 31.54 + }, + { + "x": 47.36, + "y": 32.46 + }, + { + "x": 47.87, + "y": 32.26 + }, + { + "x": 48.97, + "y": 33.04 + }, + { + "x": 49.78, + "y": 32.98 }, { "x": 50, - "y": 27.83 + "y": 33.65 }, { - "x": 67.98, - "y": 31.74 + "x": 51.56, + "y": 34.19 }, { - "x": 70.05, - "y": 25.7 + "x": 51.87, + "y": 33.73 }, { - "x": 71.71, - "y": 30.17 + "x": 53.24, + "y": 34.14 }, { - "x": 81.23, - "y": 30.23 + "x": 53.96, + "y": 33.57 }, { - "x": 80.16, - "y": 26.59 + "x": 55.45, + "y": 34.26 }, { - "x": 83.62, - "y": 26.6 + "x": 55.52, + "y": 35.16 }, { - "x": 90.65, - "y": 21.48 + "x": 57.19, + "y": 36.08 }, { - "x": 96.54, - "y": 21.64 + "x": 58.37, + "y": 35.76 }, { - "x": 96.37, - "y": 24.61 + "x": 59.05, + "y": 36.71 }, { - "x": 100, - "y": 26.09 + "x": 60.39, + "y": 36.56 }, { - "x": 99.17, - "y": 29.25 + "x": 61.65, + "y": 37.21 }, { - "x": 92.34, - "y": 30.9 - }, - { - "x": 88.94, - "y": 40.48 - }, - { - "x": 86.13, - "y": 39.76 - }, - { - "x": 84.65, - "y": 47.09 - }, - { - "x": 82.54, - "y": 41.01 - }, - { - "x": 80.23, - "y": 43.66 - }, - { - "x": 78.69, - "y": 41.27 - }, - { - "x": 83.22, + "x": 62.62, "y": 36.67 }, { - "x": 74.18, - "y": 35.51 + "x": 63.42, + "y": 37.44 }, { - "x": 73.62, - "y": 32.25 + "x": 65.57, + "y": 37.24 }, { - "x": 69.23, - "y": 30.9 + "x": 65.94, + "y": 36.13 }, { - "x": 68.26, - "y": 33.62 + "x": 65.35, + "y": 34.94 }, { - "x": 71.33, - "y": 35.51 + "x": 65.73, + "y": 32.21 }, { - "x": 68.03, - "y": 37.74 + "x": 67.19, + "y": 31.61 }, { - "x": 70.48, - "y": 38.99 + "x": 67.95, + "y": 32.44 }, { - "x": 71.66, - "y": 48.27 + "x": 67.62, + "y": 33.52 }, { - "x": 70.22, + "x": 68.06, + "y": 34.24 + }, + { + "x": 67.59, + "y": 34.79 + }, + { + "x": 68.67, + "y": 35.87 + }, + { + "x": 70.79, + "y": 36.29 + }, + { + "x": 72.35, + "y": 35.63 + }, + { + "x": 73.43, + "y": 36.05 + }, + { + "x": 77.31, + "y": 35.76 + }, + { + "x": 77.28, + "y": 33.81 + }, + { + "x": 76.2, + "y": 33.7 + }, + { + "x": 75.93, + "y": 32.46 + }, + { + "x": 77.07, + "y": 32.88 + }, + { + "x": 78.9, + "y": 32.47 + }, + { + "x": 79.37, + "y": 32.01 + }, + { + "x": 79.2, + "y": 31.52 + }, + { + "x": 80.76, + "y": 30.83 + }, + { + "x": 81.08, + "y": 29.95 + }, + { + "x": 82.88, + "y": 29.68 + }, + { + "x": 84.86, + "y": 27.55 + }, + { + "x": 87.12, + "y": 28.5 + }, + { + "x": 88.23, + "y": 27.47 + }, + { + "x": 90.01, + "y": 27.7 + }, + { + "x": 89.55, + "y": 28.82 + }, + { + "x": 90.32, + "y": 28.64 + }, + { + "x": 90.74, + "y": 29.59 + }, + { + "x": 89.87, + "y": 30.56 + }, + { + "x": 92.26, + "y": 30.74 + }, + { + "x": 92.99, + "y": 31.98 + }, + { + "x": 91.51, + "y": 33.3 + }, + { + "x": 92.27, + "y": 35 + }, + { + "x": 91.05, + "y": 34.09 + }, + { + "x": 89.4, + "y": 34.43 + }, + { + "x": 86.4, + "y": 36.56 + }, + { + "x": 86.48, + "y": 38.41 + }, + { + "x": 84.88, + "y": 40.55 + }, + { + "x": 84.72, + "y": 41.17 + }, + { + "x": 85.18, + "y": 41.75 + }, + { + "x": 83.48, + "y": 45.53 + }, + { + "x": 81.06, + "y": 44.86 + }, + { + "x": 81.25, + "y": 47.86 + }, + { + "x": 80.56, + "y": 48.17 + }, + { + "x": 80.66, + "y": 50.63 + }, + { + "x": 79.79, + "y": 51.59 + }, + { + "x": 79.22, + "y": 50.97 + }, + { + "x": 78.9, + "y": 51.53 + }, + { + "x": 77.97, + "y": 46.01 + }, + { + "x": 76.98, + "y": 45.96 + }, + { + "x": 76.61, + "y": 47.99 + }, + { + "x": 75.99, + "y": 48.45 + }, + { + "x": 75.43, + "y": 47.43 + }, + { + "x": 75.19, + "y": 47.95 + }, + { + "x": 74.67, + "y": 46.26 + }, + { + "x": 75.33, + "y": 44.74 + }, + { + "x": 76.85, + "y": 44.56 + }, + { + "x": 76.91, + "y": 43.98 + }, + { + "x": 77.52, + "y": 43.76 + }, + { + "x": 77.86, + "y": 42.18 + }, + { + "x": 78.33, + "y": 42.36 + }, + { + "x": 78.56, + "y": 41.98 + }, + { + "x": 77.31, + "y": 41.24 + }, + { + "x": 72.5, + "y": 41.35 + }, + { + "x": 70.79, + "y": 40.91 + }, + { + "x": 70.82, + "y": 38.64 + }, + { + "x": 70.3, + "y": 37.84 + }, + { + "x": 69.97, + "y": 38.7 + }, + { + "x": 69.37, + "y": 38.58 + }, + { + "x": 68.54, + "y": 37.34 + }, + { + "x": 68.06, + "y": 37.31 + }, + { + "x": 68.44, + "y": 37.8 + }, + { + "x": 67.39, + "y": 37.71 + }, + { + "x": 66.53, + "y": 36.56 + }, + { + "x": 66.37, + "y": 37.05 + }, + { + "x": 66.9, + "y": 37.42 + }, + { + "x": 65.92, + "y": 38.11 + }, + { + "x": 65.7, + "y": 39.12 + }, + { + "x": 68.34, + "y": 40.91 + }, + { + "x": 68.16, + "y": 41.29 + }, + { + "x": 66.74, + "y": 41.22 + }, + { + "x": 66.39, + "y": 42.24 + }, + { + "x": 65.78, + "y": 42.1 + }, + { + "x": 65.5, + "y": 42.98 + }, + { + "x": 67.61, + "y": 44.14 + }, + { + "x": 67.03, "y": 46.23 }, { - "x": 68.81, - "y": 48.48 + "x": 67.7, + "y": 46.71 }, { - "x": 67.64, + "x": 67.49, + "y": 47.47 + }, + { + "x": 68.26, + "y": 47.63 + }, + { + "x": 67.91, + "y": 48.35 + }, + { + "x": 68.61, + "y": 50.98 + }, + { + "x": 68.56, + "y": 51.65 + }, + { + "x": 68.1, + "y": 51.56 + }, + { + "x": 68.62, + "y": 52.67 + }, + { + "x": 67.97, + "y": 52.2 + }, + { + "x": 67.52, + "y": 52.79 + }, + { + "x": 67.38, + "y": 50.81 + }, + { + "x": 67.12, + "y": 52.86 + }, + { + "x": 66.9, + "y": 51.61 + }, + { + "x": 66.82, + "y": 52.59 + }, + { + "x": 66.41, + "y": 52.35 + }, + { + "x": 66.35, + "y": 52.69 + }, + { + "x": 66.21, + "y": 52.1 + }, + { + "x": 66.17, + "y": 52.86 + }, + { + "x": 66.04, + "y": 50.98 + }, + { + "x": 65.16, + "y": 50.11 + }, + { + "x": 65.92, + "y": 51.17 + }, + { + "x": 64.95, + "y": 52.32 + }, + { + "x": 62.25, + "y": 53.59 + }, + { + "x": 62.14, + "y": 55.31 + }, + { + "x": 62.62, + "y": 55.57 + }, + { + "x": 60.81, + "y": 57.76 + }, + { + "x": 60, + "y": 57.31 + }, + { + "x": 60.65, + "y": 57.87 + }, + { + "x": 58.03, + "y": 58.81 + }, + { + "x": 58.29, + "y": 58.15 + }, + { + "x": 57.4, + "y": 58.45 + }, + { + "x": 56.98, + "y": 59.39 + }, + { + "x": 57.34, + "y": 58.84 + }, + { + "x": 58.31, + "y": 58.73 + }, + { + "x": 55.84, + "y": 60.42 + }, + { + "x": 53.9, + "y": 63.15 + }, + { + "x": 48.87, + "y": 66.73 + }, + { + "x": 48.69, + "y": 68.36 + }, + { + "x": 47.09, + "y": 69.15 + }, + { + "x": 45.78, + "y": 69.01 + }, + { + "x": 44.88, + "y": 70.82 + }, + { + "x": 44.54, + "y": 70.05 + }, + { + "x": 44.28, + "y": 71.01 + }, + { + "x": 43.87, + "y": 70.42 + }, + { + "x": 42.72, + "y": 71.06 + }, + { + "x": 42.06, + "y": 72.91 + }, + { + "x": 42.48, + "y": 74.54 + }, + { + "x": 42.04, + "y": 75.61 + }, + { + "x": 42.82, + "y": 77.93 + }, + { + "x": 42.32, + "y": 77.05 + }, + { + "x": 42.06, + "y": 77.39 + }, + { + "x": 42.86, + "y": 77.96 + }, + { + "x": 42.88, + "y": 78.66 + }, + { + "x": 41.27, + "y": 82.97 + }, + { + "x": 41.37, + "y": 84.13 + }, + { + "x": 40.95, + "y": 84.39 + }, + { + "x": 41.41, + "y": 84.25 + }, + { + "x": 41.48, + "y": 87.39 + }, + { + "x": 39.8, + "y": 87.51 + }, + { + "x": 38.7, + "y": 89.84 + }, + { + "x": 40.29, + "y": 90.78 + }, + { + "x": 38.93, + "y": 90.42 + }, + { + "x": 37.23, + "y": 90.95 + }, + { + "x": 36.55, + "y": 91.62 + }, + { + "x": 36.2, + "y": 93.12 + }, + { + "x": 34.58, + "y": 94 + }, + { + "x": 32.96, + "y": 93.02 + }, + { + "x": 31.73, + "y": 91.51 + }, + { + "x": 32.1, + "y": 91.23 + }, + { + "x": 31.68, + "y": 91.41 + }, + { + "x": 30.87, + "y": 88.38 + }, + { + "x": 31.18, + "y": 89.7 + }, + { + "x": 31.61, + "y": 89.66 + }, + { + "x": 30.84, + "y": 87.55 + }, + { + "x": 26.68, + "y": 79.79 + }, + { + "x": 27.02, + "y": 79.63 + }, + { + "x": 26.65, + "y": 79.68 + }, + { + "x": 26.41, + "y": 77.28 + }, + { + "x": 25.51, + "y": 74.79 + }, + { + "x": 24.53, + "y": 73.82 + }, + { + "x": 24.94, + "y": 73.57 + }, + { + "x": 23.99, + "y": 72.95 + }, + { + "x": 23.61, + "y": 71.95 + }, + { + "x": 24.15, + "y": 72.05 + }, + { + "x": 23.47, + "y": 71.45 + }, + { + "x": 23.77, + "y": 71.18 + }, + { + "x": 23.42, + "y": 71.28 + }, + { + "x": 22.62, + "y": 69.93 + }, + { + "x": 21.89, + "y": 65.26 + }, + { + "x": 21.09, + "y": 63.29 + }, + { + "x": 21.51, + "y": 63.14 + }, + { + "x": 20.98, + "y": 62.66 + }, + { + "x": 21.35, + "y": 62.53 + }, + { + "x": 20.87, + "y": 61.76 + }, + { + "x": 21.09, + "y": 61.42 + }, + { + "x": 21.29, + "y": 61.72 + }, + { + "x": 21.23, + "y": 60.38 + }, + { + "x": 20.63, + "y": 61.04 + }, + { + "x": 20.67, + "y": 59.91 + }, + { + "x": 21.45, + "y": 60.21 + }, + { + "x": 20.61, + "y": 59.7 + }, + { + "x": 20.95, + "y": 59.22 + }, + { + "x": 20.49, + "y": 59.21 + }, + { + "x": 20.27, + "y": 58.26 + }, + { + "x": 21.15, + "y": 55.38 + }, + { + "x": 20.74, + "y": 54.21 + }, + { + "x": 20.17, + "y": 54.29 + }, + { + "x": 20.52, + "y": 53.99 + }, + { + "x": 20.02, + "y": 53.4 + }, + { + "x": 21.69, + "y": 52.23 + }, + { + "x": 19.98, + "y": 52.52 + }, + { + "x": 20.52, + "y": 51.48 + }, + { + "x": 19.84, + "y": 51.53 + }, + { + "x": 20.06, + "y": 50.84 + }, + { + "x": 21.06, + "y": 50.6 + }, + { + "x": 18.8, + "y": 50.58 + }, + { + "x": 19.27, + "y": 51.21 + }, + { + "x": 18.34, + "y": 52.05 + }, + { + "x": 19.24, + "y": 52.64 + }, + { + "x": 18.63, + "y": 54.02 + }, + { + "x": 14.66, + "y": 55.51 + }, + { + "x": 12.64, + "y": 54.14 + }, + { + "x": 9.37, + "y": 50.52 + }, + { + "x": 9.75, + "y": 49.93 + }, + { + "x": 10.16, + "y": 50.59 + }, + { + "x": 13, + "y": 49.67 + }, + { + "x": 13.96, + "y": 47.94 + }, + { + "x": 13.61, + "y": 48.47 + }, + { + "x": 12.86, + "y": 48.29 + }, + { + "x": 11.26, + "y": 49.04 + }, + { + "x": 9.14, + "y": 48.21 + }, + { + "x": 7.84, + "y": 46.85 + }, + { + "x": 7.8, + "y": 46.28 + }, + { + "x": 9.01, "y": 45.46 }, { - "x": 62.57, - "y": 53.9 + "x": 7.01, + "y": 46.31 }, { - "x": 58.61, - "y": 54.66 + "x": 7.4, + "y": 46.14 }, { - "x": 48.48, - "y": 65.79 + "x": 7.07, + "y": 45.84 }, { - "x": 41.54, - "y": 68.85 + "x": 7.37, + "y": 45.27 }, { - "x": 40.09, - "y": 87.66 + "x": 8.72, + "y": 45.18 }, { - "x": 36.86, - "y": 90.51 + "x": 8.79, + "y": 44 }, { - "x": 38.71, - "y": 91.61 + "x": 12.4, + "y": 44.53 }, { - "x": 35.14, - "y": 91.81 + "x": 14.01, + "y": 43.69 }, { - "x": 32.06, - "y": 95.37 + "x": 14.7, + "y": 44.32 }, { - "x": 28.75, - "y": 92.46 + "x": 15.66, + "y": 43.74 }, { - "x": 18.16, - "y": 67.61 + "x": 14.4, + "y": 39.64 }, { - "x": 15.42, - "y": 54.45 + "x": 13.21, + "y": 39.53 }, { - "x": 16.34, - "y": 46 + "x": 12.67, + "y": 38.64 }, { - "x": 13.71, - "y": 45.97 + "x": 12.94, + "y": 36.83 }, { - "x": 13.56, - "y": 49.71 + "x": 11.02, + "y": 36.16 }, { - "x": 8.89, - "y": 51.4 + "x": 11.11, + "y": 34.87 }, { - "x": 2.74, - "y": 45.91 + "x": 13.48, + "y": 31.93 }, { - "x": 8.08, - "y": 43.1 + "x": 14.05, + "y": 31.91 }, { - "x": 4.94, - "y": 44.29 + "x": 14.92, + "y": 32.96 }, { - "x": 0.98, - "y": 41.94 + "x": 17.99, + "y": 32.1 }, { - "x": 2.32, - "y": 40.41 + "x": 19.41, + "y": 29.4 }, { - "x": 0, - "y": 41.33 + "x": 21.1, + "y": 28.46 }, { - "x": 2.07, - "y": 38.83 + "x": 22.39, + "y": 25.49 }, { - "x": 10.03, - "y": 38.59 + "x": 24.08, + "y": 24.6 }, { - "x": 4.76, - "y": 29.11 + "x": 23.81, + "y": 23.97 }, { - "x": 7.52, - "y": 26.03 + "x": 26.19, + "y": 21.54 }, { - "x": 12.77, - "y": 26.21 + "x": 25.74, + "y": 21.22 }, { - "x": 24.7, - "y": 11.25 + "x": 25.87, + "y": 18.97 }, { - "x": 20.05, - "y": 8.06 + "x": 28.25, + "y": 17.46 }, { - "x": 19.77, - "y": 2.97 + "x": 27.26, + "y": 16.75 }, { - "x": 26.13, - "y": 3.45 + "x": 26.27, + "y": 16.73 }, { - "x": 31.76, - "y": 0.67 + "x": 26.26, + "y": 15.48 }, { - "x": 33.05, - "y": 0 + "x": 25.22, + "y": 15.67 + }, + { + "x": 25.16, + "y": 14.9 + }, + { + "x": 24.25, + "y": 14.26 + }, + { + "x": 24.71, + "y": 13.14 + }, + { + "x": 24.16, + "y": 12.25 + }, + { + "x": 25.05, + "y": 11.49 + }, + { + "x": 23.93, + "y": 11.16 + }, + { + "x": 24.22, + "y": 10.58 + }, + { + "x": 23.58, + "y": 10.04 + }, + { + "x": 24.01, + "y": 9.07 + }, + { + "x": 25.27, + "y": 8.6 + }, + { + "x": 29.53, + "y": 9.55 + }, + { + "x": 30.2, + "y": 8.94 + }, + { + "x": 32.05, + "y": 8.69 + }, + { + "x": 34.32, + "y": 6.69 + }, + { + "x": 35.43, + "y": 6 } ], [ { - "x": 85.25, - "y": 77.26 + "x": 80.31, + "y": 78.4 }, { - "x": 84.1, - "y": 83.48 + "x": 79.79, + "y": 79.49 }, { - "x": 85.19, - "y": 77.18 + "x": 80.12, + "y": 80.71 }, { - "x": 85.25, - "y": 77.26 + "x": 79.7, + "y": 80.97 + }, + { + "x": 79.32, + "y": 83.79 + }, + { + "x": 78.75, + "y": 82.7 + }, + { + "x": 79.54, + "y": 81.65 + }, + { + "x": 79.38, + "y": 79.84 + }, + { + "x": 80.18, + "y": 77.51 + }, + { + "x": 80.26, + "y": 78.33 + }, + { + "x": 80.31, + "y": 78.4 } ] ] diff --git a/frontend/data/outlines/italy.json b/frontend/data/outlines/italy.json index ee287b2..48a588e 100644 --- a/frontend/data/outlines/italy.json +++ b/frontend/data/outlines/italy.json @@ -9,355 +9,1149 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { + "geoBounds": { "minLon": 6.6027283120000675, "maxLon": 18.517425977000073, - "minLat": 35.48924388200004, + "minLat": 36.65493398600006, "maxLat": 47.08521494500006 }, + "projectedBounds": { + "minX": 0.115239, + "maxX": 0.32319, + "minY": 0.688464, + "maxY": 0.933814 + }, + "projection": { + "padding": 6, + "scale": 358.671066, + "xOffset": 12.70705, + "yOffset": 6 + }, "rings": [ [ { - "x": 3.52, - "y": 10 + "x": 15.33, + "y": 16.55 }, { - "x": 10.42, - "y": 10.06 + "x": 16.16, + "y": 16.99 }, { - "x": 15.08, - "y": 5.46 + "x": 18.58, + "y": 16.02 }, { - "x": 20.14, - "y": 10.9 + "x": 20.4, + "y": 16.65 }, { - "x": 22.49, - "y": 5.07 + "x": 22.15, + "y": 14.73 }, { - "x": 29.15, - "y": 7.46 + "x": 22, + "y": 13.42 }, { - "x": 28.79, - "y": 4.76 + "x": 23.95, + "y": 11.79 }, { - "x": 32.24, - "y": 4.72 + "x": 24.2, + "y": 13.75 }, { - "x": 32.32, - "y": 1.9 + "x": 25.22, + "y": 14.77 }, { - "x": 46.82, - "y": 0 + "x": 26.52, + "y": 15.07 }, { - "x": 48.7, - "y": 3.41 + "x": 26.26, + "y": 16.03 }, { - "x": 59.58, - "y": 4.88 + "x": 26.91, + "y": 16.35 }, { - "x": 56.76, - "y": 6.86 + "x": 27.09, + "y": 17.44 }, { - "x": 60.81, - "y": 12.94 + "x": 27.73, + "y": 17.49 }, { - "x": 54.69, - "y": 11.33 + "x": 28.11, + "y": 16.79 }, { - "x": 46.6, - "y": 15.28 + "x": 27.59, + "y": 16.2 }, { - "x": 49.78, - "y": 18.24 + "x": 27.73, + "y": 15.52 }, { - "x": 47.53, - "y": 19.48 + "x": 29.12, + "y": 13.79 }, { - "x": 48.39, - "y": 24.44 + "x": 29.48, + "y": 11.37 }, { - "x": 58.86, - "y": 30.4 + "x": 30.43, + "y": 11.37 }, { - "x": 62.72, - "y": 38.69 + "x": 30.48, + "y": 12.43 }, { - "x": 68.3, - "y": 43.12 + "x": 31.07, + "y": 13.18 }, { - "x": 80.05, - "y": 44.54 + "x": 33.46, + "y": 12.52 }, { - "x": 78.54, - "y": 48.51 + "x": 34.45, + "y": 13.89 }, { - "x": 95.72, - "y": 55.49 + "x": 34.97, + "y": 13.51 }, { - "x": 99.99, - "y": 59.9 + "x": 34.55, + "y": 12.9 }, { - "x": 98.92, - "y": 62.68 + "x": 34.86, + "y": 12.23 }, { - "x": 94.51, - "y": 58.64 + "x": 34.14, + "y": 11.84 }, { - "x": 87.06, - "y": 56.85 + "x": 34.18, + "y": 11.05 }, { - "x": 82.98, - "y": 63.04 + "x": 34.52, + "y": 10.4 }, { - "x": 88.6, - "y": 66.22 + "x": 35.34, + "y": 10.19 }, { - "x": 88.71, + "x": 35.44, + "y": 10.67 + }, + { + "x": 36.75, + "y": 11.01 + }, + { + "x": 36.85, + "y": 10.23 + }, + { + "x": 36.28, + "y": 9.78 + }, + { + "x": 36.81, + "y": 8.03 + }, + { + "x": 40.21, + "y": 8.9 + }, + { + "x": 41.33, + "y": 7.11 + }, + { + "x": 43.19, + "y": 6.72 + }, + { + "x": 44.91, + "y": 7.04 + }, + { + "x": 47.62, + "y": 6 + }, + { + "x": 47.29, + "y": 7.62 + }, + { + "x": 48.16, + "y": 7.99 + }, + { + "x": 48.18, + "y": 8.72 + }, + { + "x": 49.03, + "y": 9.62 + }, + { + "x": 57.14, + "y": 11.17 + }, + { + "x": 56.99, + "y": 11.79 + }, + { + "x": 55.04, + "y": 13.25 + }, + { + "x": 55.32, + "y": 14 + }, + { + "x": 56.74, + "y": 14.25 + }, + { + "x": 55.64, + "y": 15.82 + }, + { + "x": 56.55, + "y": 16.01 + }, + { + "x": 56.3, + "y": 17.4 + }, + { + "x": 57.63, + "y": 18.18 + }, + { + "x": 58.35, + "y": 19.17 + }, + { + "x": 58.06, + "y": 19.61 + }, + { + "x": 57.21, + "y": 19.53 + }, + { + "x": 57.81, + "y": 19.34 + }, + { + "x": 56.35, + "y": 17.77 + }, + { + "x": 55.27, + "y": 18.79 + }, + { + "x": 55.07, + "y": 18.17 + }, + { + "x": 53.5, + "y": 17.93 + }, + { + "x": 53.29, + "y": 19.09 + }, + { + "x": 49.15, + "y": 20.92 + }, + { + "x": 50.14, + "y": 19.89 + }, + { + "x": 48.98, + "y": 20.01 + }, + { + "x": 49.15, + "y": 20.38 + }, + { + "x": 48.43, + "y": 20.46 + }, + { + "x": 47.85, + "y": 22 + }, + { + "x": 47.46, + "y": 22.03 + }, + { + "x": 47.94, + "y": 23 + }, + { + "x": 48.42, + "y": 22.76 + }, + { + "x": 48.35, + "y": 24.02 + }, + { + "x": 48.8, + "y": 24.71 + }, + { + "x": 48.8, + "y": 24.23 + }, + { + "x": 49.84, + "y": 25.07 + }, + { + "x": 49.28, + "y": 26.4 + }, + { + "x": 49.04, + "y": 25.77 + }, + { + "x": 49.1, + "y": 26.55 + }, + { + "x": 48.16, + "y": 26.34 + }, + { + "x": 48.8, + "y": 31.4 + }, + { + "x": 50.82, + "y": 33.67 + }, + { + "x": 56.61, + "y": 37.4 + }, + { + "x": 59.49, + "y": 45.64 + }, + { + "x": 62.52, + "y": 48.8 + }, + { + "x": 63.45, + "y": 49.23 + }, + { + "x": 63.65, + "y": 49.99 + }, + { + "x": 66.31, + "y": 51.32 + }, + { + "x": 72.41, + "y": 51.38 + }, + { + "x": 72.69, + "y": 52.56 + }, + { + "x": 70.91, + "y": 53.94 + }, + { + "x": 71.29, + "y": 55.24 + }, + { + "x": 78.15, + "y": 58.39 + }, + { + "x": 80.77, + "y": 60.47 + }, + { + "x": 84.1, + "y": 61.96 + }, + { + "x": 84.29, + "y": 62.73 + }, + { + "x": 85.55, + "y": 63.55 + }, + { + "x": 87.28, + "y": 66.16 + }, + { + "x": 86.39, + "y": 68.93 + }, + { + "x": 84.5, + "y": 68.02 + }, + { + "x": 83.2, + "y": 64.96 + }, + { + "x": 81, + "y": 64.81 + }, + { + "x": 79.13, + "y": 63.97 + }, + { + "x": 79.22, + "y": 63.41 + }, + { + "x": 79.82, + "y": 63.21 + }, + { + "x": 77.64, + "y": 63.26 + }, + { + "x": 75.32, + "y": 66.61 + }, + { + "x": 75.49, + "y": 67.57 + }, + { + "x": 74.6, + "y": 69.13 + }, + { + "x": 74.95, "y": 70.06 }, { - "x": 83.79, - "y": 71.47 + "x": 76.43, + "y": 70.46 }, { - "x": 79.52, - "y": 78.87 + "x": 78.79, + "y": 72.13 }, { - "x": 76.22, - "y": 78.75 + "x": 78.51, + "y": 73.24 }, { - "x": 77.5, - "y": 72.75 + "x": 78.87, + "y": 75.73 }, { - "x": 80.72, - "y": 70.59 + "x": 78.45, + "y": 76.22 }, { - "x": 75.72, - "y": 60.43 + "x": 76.78, + "y": 76.07 }, { - "x": 72.67, - "y": 60.85 + "x": 75.2, + "y": 77.04 }, { - "x": 68.65, - "y": 55.32 + "x": 75.1, + "y": 79.99 }, { - "x": 64.96, - "y": 56.18 + "x": 72.59, + "y": 82.27 }, { - "x": 65.95, - "y": 54.68 + "x": 72.02, + "y": 83.89 }, { - "x": 62.49, - "y": 54.29 + "x": 69.56, + "y": 83.78 }, { - "x": 59.75, - "y": 50.3 + "x": 69.24, + "y": 81.66 }, { - "x": 54.07, - "y": 50.51 + "x": 70.36, + "y": 81.02 }, { - "x": 42.43, - "y": 41.44 + "x": 71.02, + "y": 79.29 }, { - "x": 37.8, - "y": 40.48 + "x": 70.51, + "y": 78.23 }, { - "x": 32.71, - "y": 35.74 + "x": 72.49, + "y": 77.57 }, { - "x": 29.27, - "y": 26.39 + "x": 72.92, + "y": 76.57 }, { - "x": 18.13, - "y": 22.88 + "x": 72.05, + "y": 74.8 }, { - "x": 7.55, - "y": 28.4 + "x": 71.51, + "y": 71.87 }, { - "x": 8.84, - "y": 25.09 + "x": 70.7, + "y": 70.85 }, { - "x": 3.11, - "y": 24.45 + "x": 70.12, + "y": 68.19 }, { - "x": 3.38, - "y": 19.47 + "x": 69.18, + "y": 66.66 }, { - "x": 0, - "y": 17.09 + "x": 67.84, + "y": 67.35 }, { - "x": 4.24, - "y": 15.75 + "x": 66.91, + "y": 67.06 }, { - "x": 1.5, - "y": 11.28 + "x": 66.07, + "y": 65.91 }, { - "x": 3.4, - "y": 10.04 + "x": 64.72, + "y": 65.32 }, { - "x": 3.52, - "y": 10 + "x": 65.26, + "y": 64.04 + }, + { + "x": 63.91, + "y": 61.8 + }, + { + "x": 61.16, + "y": 62.62 + }, + { + "x": 61.9, + "y": 61.18 + }, + { + "x": 60.86, + "y": 60.4 + }, + { + "x": 59.31, + "y": 60.81 + }, + { + "x": 59.15, + "y": 59.71 + }, + { + "x": 57.27, + "y": 56.97 + }, + { + "x": 56.16, + "y": 57.35 + }, + { + "x": 54.54, + "y": 56.61 + }, + { + "x": 53.03, + "y": 57.18 + }, + { + "x": 52.09, + "y": 55.74 + }, + { + "x": 50.47, + "y": 55.34 + }, + { + "x": 47.99, + "y": 52.92 + }, + { + "x": 46.62, + "y": 50.77 + }, + { + "x": 45.41, + "y": 50.42 + }, + { + "x": 44.35, + "y": 48.35 + }, + { + "x": 42.59, + "y": 47.27 + }, + { + "x": 40.9, + "y": 47.4 + }, + { + "x": 41.41, + "y": 46.65 + }, + { + "x": 41.23, + "y": 45.93 + }, + { + "x": 39.88, + "y": 44.41 + }, + { + "x": 38.55, + "y": 43.89 + }, + { + "x": 38.75, + "y": 42.92 + }, + { + "x": 37.1, + "y": 42.73 + }, + { + "x": 37.28, + "y": 40.1 + }, + { + "x": 35.96, + "y": 37.98 + }, + { + "x": 35.55, + "y": 34.92 + }, + { + "x": 34.54, + "y": 33.37 + }, + { + "x": 33, + "y": 32.64 + }, + { + "x": 32.92, + "y": 33.22 + }, + { + "x": 29.16, + "y": 30.5 + }, + { + "x": 29.03, + "y": 30.92 + }, + { + "x": 28.35, + "y": 30.32 + }, + { + "x": 26.23, + "y": 29.81 + }, + { + "x": 24.37, + "y": 30.93 + }, + { + "x": 21.88, + "y": 34.48 + }, + { + "x": 19.8, + "y": 35.34 + }, + { + "x": 18.34, + "y": 35.39 + }, + { + "x": 18.19, + "y": 34.75 + }, + { + "x": 19.51, + "y": 33 + }, + { + "x": 19.3, + "y": 32.05 + }, + { + "x": 17.33, + "y": 32.51 + }, + { + "x": 15.03, + "y": 31.41 + }, + { + "x": 14.17, + "y": 28.92 + }, + { + "x": 14.94, + "y": 27.61 + }, + { + "x": 15.54, + "y": 27.59 + }, + { + "x": 15.24, + "y": 26.38 + }, + { + "x": 13.6, + "y": 25.62 + }, + { + "x": 13.46, + "y": 24.69 + }, + { + "x": 12.71, + "y": 23.89 + }, + { + "x": 13.54, + "y": 23.41 + }, + { + "x": 14.22, + "y": 23.66 + }, + { + "x": 15.87, + "y": 22.51 + }, + { + "x": 16.2, + "y": 21.16 + }, + { + "x": 15.09, + "y": 20.26 + }, + { + "x": 14.96, + "y": 19.1 + }, + { + "x": 14.04, + "y": 18.6 + }, + { + "x": 13.83, + "y": 17.88 + }, + { + "x": 15.24, + "y": 16.59 + }, + { + "x": 15.33, + "y": 16.55 } ], [ { - "x": 74.92, - "y": 75.74 + "x": 68.58, + "y": 81 }, { - "x": 71.25, - "y": 82.85 + "x": 69.33, + "y": 81.29 }, { - "x": 73.27, - "y": 86.87 + "x": 66.61, + "y": 85.3 }, { - "x": 71.27, - "y": 89.95 + "x": 65.85, + "y": 87.55 }, { - "x": 48.88, - "y": 80.1 + "x": 65.92, + "y": 88.71 }, { - "x": 51.44, - "y": 76.69 + "x": 66.85, + "y": 89.28 }, { - "x": 60.33, - "y": 78.58 + "x": 66.42, + "y": 89.67 }, { - "x": 74.78, - "y": 75.78 + "x": 67.35, + "y": 91.21 }, { - "x": 74.92, - "y": 75.74 + "x": 66.27, + "y": 91.9 + }, + { + "x": 65.86, + "y": 94 + }, + { + "x": 62.06, + "y": 92.92 + }, + { + "x": 60.76, + "y": 90.96 + }, + { + "x": 57.24, + "y": 89.96 + }, + { + "x": 53.84, + "y": 87.47 + }, + { + "x": 52.92, + "y": 87.42 + }, + { + "x": 52.39, + "y": 86.83 + }, + { + "x": 50.62, + "y": 86.86 + }, + { + "x": 49.17, + "y": 85.02 + }, + { + "x": 49.58, + "y": 83.24 + }, + { + "x": 50.9, + "y": 82.53 + }, + { + "x": 51.07, + "y": 81.88 + }, + { + "x": 52.14, + "y": 83.19 + }, + { + "x": 53.14, + "y": 82.75 + }, + { + "x": 53.39, + "y": 81.9 + }, + { + "x": 54.75, + "y": 81.66 + }, + { + "x": 55.2, + "y": 82.59 + }, + { + "x": 55.97, + "y": 82.53 + }, + { + "x": 57.7, + "y": 83.62 + }, + { + "x": 59.14, + "y": 83.02 + }, + { + "x": 62.22, + "y": 83.06 + }, + { + "x": 64.69, + "y": 81.92 + }, + { + "x": 65.82, + "y": 82.39 + }, + { + "x": 66.76, + "y": 81.3 + }, + { + "x": 67.1, + "y": 81.76 + }, + { + "x": 68.48, + "y": 81.04 + }, + { + "x": 68.58, + "y": 81 } ], [ { - "x": 26.77, - "y": 56.3 + "x": 32.67, + "y": 62.73 }, { - "x": 24.87, - "y": 68.44 + "x": 32.78, + "y": 63.44 }, { - "x": 20.24, - "y": 67.45 + "x": 31.63, + "y": 65.14 }, { - "x": 20.34, - "y": 69.76 + "x": 32.3, + "y": 66.61 }, { - "x": 17.11, - "y": 70.89 + "x": 31.26, + "y": 74.21 }, { - "x": 14.86, - "y": 67.81 + "x": 30.96, + "y": 74.57 }, { - "x": 16.39, - "y": 62.37 + "x": 29.54, + "y": 73.63 }, { - "x": 13.35, - "y": 52.79 + "x": 28.75, + "y": 73.9 }, { - "x": 16.1, - "y": 53.97 + "x": 27.8, + "y": 73.28 }, { - "x": 22.06, - "y": 50.21 + "x": 28.21, + "y": 73.6 }, { - "x": 26.72, - "y": 56.21 + "x": 27.87, + "y": 75.45 }, { - "x": 26.77, - "y": 56.3 - } - ], - [ - { - "x": 32.23, - "y": 36.56 + "x": 26.8, + "y": 76.39 }, { - "x": 29.41, - "y": 37.32 + "x": 25.94, + "y": 75.95 }, { - "x": 32.19, - "y": 36.48 + "x": 25.47, + "y": 76.5 }, { - "x": 32.23, - "y": 36.56 + "x": 24.96, + "y": 74.95 + }, + { + "x": 23.79, + "y": 73.62 + }, + { + "x": 24.16, + "y": 72.98 + }, + { + "x": 23.8, + "y": 72.35 + }, + { + "x": 24.35, + "y": 70.75 + }, + { + "x": 24.23, + "y": 69.28 + }, + { + "x": 25, + "y": 69.74 + }, + { + "x": 24.61, + "y": 69.57 + }, + { + "x": 24.93, + "y": 68.5 + }, + { + "x": 23.92, + "y": 68.01 + }, + { + "x": 23.82, + "y": 67.02 + }, + { + "x": 24.52, + "y": 66.44 + }, + { + "x": 23.83, + "y": 63.46 + }, + { + "x": 23.28, + "y": 62.41 + }, + { + "x": 22.41, + "y": 62.56 + }, + { + "x": 22.66, + "y": 59.37 + }, + { + "x": 23.4, + "y": 60.3 + }, + { + "x": 24.71, + "y": 60.5 + }, + { + "x": 26.6, + "y": 59.5 + }, + { + "x": 29.16, + "y": 56.88 + }, + { + "x": 29.46, + "y": 57.45 + }, + { + "x": 30.36, + "y": 57.56 + }, + { + "x": 30.49, + "y": 58.3 + }, + { + "x": 30.65, + "y": 57.85 + }, + { + "x": 31.22, + "y": 58.02 + }, + { + "x": 30.92, + "y": 58.93 + }, + { + "x": 31.86, + "y": 59.04 + }, + { + "x": 30.87, + "y": 59.67 + }, + { + "x": 31.73, + "y": 59.72 + }, + { + "x": 32.25, + "y": 60.35 + }, + { + "x": 31.83, + "y": 60.72 + }, + { + "x": 32.64, + "y": 62.64 + }, + { + "x": 32.67, + "y": 62.73 } ] ] diff --git a/frontend/data/outlines/japan.json b/frontend/data/outlines/japan.json index 0d7b211..0b7406d 100644 --- a/frontend/data/outlines/japan.json +++ b/frontend/data/outlines/japan.json @@ -9,403 +9,1471 @@ }, "outline": { "type": "MultiPolygon", - "bounds": { - "minLon": 122.93816165500004, - "maxLon": 153.98560631600003, - "minLat": 24.212103583000044, + "geoBounds": { + "minLon": 123.66822350400003, + "maxLon": 145.82496178500003, + "minLat": 24.256984768000052, "maxLat": 45.520412502000056 }, + "projectedBounds": { + "minX": 2.158418, + "maxX": 2.545126, + "minY": 0.436609, + "maxY": 0.894278 + }, + "projection": { + "padding": 6, + "scale": 192.278999, + "xOffset": 12.822083, + "yOffset": 6 + }, "rings": [ [ { - "x": 28.09, - "y": 61.21 + "x": 45.56, + "y": 54.69 }, { - "x": 24.86, - "y": 68.13 + "x": 45.08, + "y": 55.19 }, { - "x": 25.25, - "y": 64.81 + "x": 44.97, + "y": 54.77 }, { - "x": 24.63, - "y": 67.41 + "x": 44.76, + "y": 55.36 }, { - "x": 23.13, - "y": 66.23 + "x": 44.4, + "y": 55.44 }, { - "x": 24.7, - "y": 59.71 + "x": 44.45, + "y": 54.91 }, { - "x": 23.52, - "y": 57.87 + "x": 42.99, + "y": 55.69 }, { - "x": 21.91, - "y": 60.78 + "x": 42.52, + "y": 55.06 }, { - "x": 21.39, - "y": 57.02 + "x": 41.94, + "y": 55.08 }, { - "x": 25.99, - "y": 54.22 + "x": 40.97, + "y": 57.4 }, { - "x": 29.45, - "y": 59.02 + "x": 41.12, + "y": 57.01 }, { - "x": 28.15, - "y": 61.23 + "x": 39.92, + "y": 56.27 }, { - "x": 28.09, - "y": 61.21 - } - ], - [ - { - "x": 37.85, - "y": 54.87 + "x": 38.29, + "y": 56.8 }, { - "x": 36.2, - "y": 57.65 + "x": 37.55, + "y": 56.3 }, { - "x": 33.35, - "y": 57.05 + "x": 37.02, + "y": 56.75 }, { - "x": 32.42, - "y": 60.11 + "x": 37.29, + "y": 54.76 }, { - "x": 29.22, - "y": 57.12 + "x": 38.82, + "y": 54.78 }, { - "x": 35.46, - "y": 52.3 + "x": 39.43, + "y": 53.82 }, { - "x": 37.85, - "y": 54.84 + "x": 40.31, + "y": 53.59 }, { - "x": 37.85, - "y": 54.87 - } - ], - [ - { - "x": 33.77, - "y": 51.98 + "x": 42.93, + "y": 51.21 }, { - "x": 30.3, + "x": 42.91, + "y": 50.61 + }, + { + "x": 44.44, + "y": 49.95 + }, + { + "x": 45.48, + "y": 50.56 + }, + { + "x": 49.3, + "y": 49.66 + }, + { + "x": 50.61, + "y": 49.79 + }, + { + "x": 51.61, + "y": 49.24 + }, + { + "x": 51.88, + "y": 49.66 + }, + { + "x": 51.48, + "y": 50.18 + }, + { + "x": 51.92, + "y": 50.59 + }, + { + "x": 52.4, + "y": 49.94 + }, + { + "x": 52.63, + "y": 50.4 + }, + { + "x": 53.65, + "y": 50.23 + }, + { + "x": 53.57, + "y": 49.78 + }, + { + "x": 54.14, + "y": 49.83 + }, + { + "x": 54.27, + "y": 49.27 + }, + { + "x": 54.44, + "y": 49.7 + }, + { + "x": 54.08, + "y": 48.3 + }, + { + "x": 56.52, + "y": 45.26 + }, + { + "x": 56.47, + "y": 43.39 + }, + { + "x": 57.03, + "y": 42.44 + }, + { + "x": 58.74, + "y": 41.99 + }, + { + "x": 58.33, + "y": 42.9 + }, + { + "x": 57.33, + "y": 43.19 + }, + { + "x": 57.1, + "y": 43.8 + }, + { + "x": 57.72, + "y": 43.71 + }, + { + "x": 57.58, + "y": 44.82 + }, + { + "x": 58.56, + "y": 45.15 + }, + { + "x": 59.06, + "y": 44.41 + }, + { + "x": 62.77, + "y": 42.53 + }, + { + "x": 63.8, + "y": 40.63 + }, + { + "x": 65.7, + "y": 39.25 + }, + { + "x": 66.87, + "y": 36.4 + }, + { + "x": 67.83, + "y": 32.45 + }, + { + "x": 67.52, + "y": 31.78 + }, + { + "x": 66.82, + "y": 31.88 + }, + { + "x": 66.63, + "y": 31.23 + }, + { + "x": 67.03, + "y": 31.43 + }, + { + "x": 67.56, + "y": 30.71 + }, + { + "x": 67.71, + "y": 29.7 + }, + { + "x": 67.16, + "y": 28.58 + }, + { + "x": 68.54, + "y": 27.68 + }, + { + "x": 69, + "y": 26.73 + }, + { + "x": 68.46, + "y": 26.3 + }, + { + "x": 68.76, + "y": 25.69 + }, + { + "x": 69.75, + "y": 25.98 + }, + { + "x": 69.99, + "y": 27.5 + }, + { + "x": 70.61, + "y": 26.8 + }, + { + "x": 71.41, + "y": 27.41 + }, + { + "x": 71.92, + "y": 26.15 + }, + { + "x": 71.68, + "y": 25.67 + }, + { + "x": 70.2, + "y": 26.2 + }, + { + "x": 70.67, + "y": 24.44 + }, + { + "x": 71.91, + "y": 25.27 + }, + { + "x": 72.53, + "y": 24.93 + }, + { + "x": 72.45, + "y": 28.31 + }, + { + "x": 73.77, + "y": 30.16 + }, + { + "x": 74.58, + "y": 33.22 + }, + { + "x": 74.18, + "y": 33.61 + }, + { + "x": 74.54, + "y": 33.59 + }, + { + "x": 74.02, + "y": 34.18 + }, + { + "x": 74.05, + "y": 35.19 + }, + { + "x": 73.17, + "y": 35.62 + }, + { + "x": 73.25, + "y": 36.25 + }, + { + "x": 72.96, + "y": 36.12 + }, + { + "x": 72.54, + "y": 37.07 + }, + { + "x": 72.75, + "y": 38.75 + }, + { + "x": 72.01, + "y": 38.15 + }, + { + "x": 71.25, + "y": 38.36 + }, + { + "x": 70.87, + "y": 39.17 + }, + { + "x": 71.01, + "y": 43.56 + }, + { + "x": 69.52, + "y": 47.13 + }, + { + "x": 70.58, + "y": 49.46 + }, + { + "x": 69.25, + "y": 50.1 + }, + { + "x": 68.9, + "y": 51.7 + }, + { + "x": 68.08, + "y": 51.92 + }, + { + "x": 67.38, + "y": 52.8 + }, + { + "x": 66.81, + "y": 52.6 + }, + { + "x": 67.19, "y": 52.43 }, { - "x": 29.37, - "y": 55.11 + "x": 66.89, + "y": 51.12 }, { - "x": 25.58, - "y": 54.36 + "x": 67.97, + "y": 50.09 }, { - "x": 32.7, - "y": 46.55 + "x": 66.84, + "y": 49.74 }, { - "x": 42.29, - "y": 46.27 + "x": 66.92, + "y": 50.31 }, { - "x": 44.59, - "y": 38.23 + "x": 66.43, + "y": 50.56 }, { - "x": 46.42, - "y": 37.61 + "x": 66.57, + "y": 51.85 }, { - "x": 46.25, - "y": 41.13 + "x": 66.1, + "y": 51.16 }, { - "x": 50.29, - "y": 38.21 + "x": 64.89, + "y": 51.34 }, { - "x": 54.94, - "y": 29.06 + "x": 64.75, + "y": 52.95 }, { - "x": 54.5, - "y": 23.05 + "x": 63.72, + "y": 54.08 }, { - "x": 56.06, - "y": 19.97 + "x": 63.47, + "y": 52.51 }, { - "x": 58.58, - "y": 21.81 + "x": 63.96, + "y": 52.3 }, { - "x": 57.85, - "y": 18.75 + "x": 63.61, + "y": 51.92 }, { - "x": 59.66, - "y": 19.2 + "x": 62.78, + "y": 52.03 }, { - "x": 61.58, - "y": 28.41 + "x": 61.7, + "y": 54.08 }, { - "x": 58.07, - "y": 34.49 + "x": 59.4, + "y": 53.74 }, { - "x": 56.17, - "y": 48.54 + "x": 57.62, + "y": 54.15 }, { - "x": 54.17, - "y": 49.58 + "x": 58.71, + "y": 53.54 }, { - "x": 54.2, - "y": 46.31 + "x": 57.62, + "y": 53.31 }, { - "x": 51.2, - "y": 51.27 + "x": 57.49, + "y": 52.73 }, { - "x": 51.1, - "y": 48.8 + "x": 57.47, + "y": 53.67 }, { - "x": 49.26, - "y": 51.27 + "x": 57.08, + "y": 53.49 }, { - "x": 45.34, - "y": 51.35 + "x": 56.99, + "y": 52.1 }, { - "x": 44.74, - "y": 49 + "x": 55.95, + "y": 53.73 }, { - "x": 44.96, - "y": 52.81 + "x": 57.28, + "y": 54.73 }, { - "x": 41.3, - "y": 56.72 + "x": 57.21, + "y": 55.41 }, { - "x": 39.04, - "y": 54.63 + "x": 56.58, + "y": 55.14 }, { - "x": 40.18, - "y": 50.82 + "x": 55.34, + "y": 55.75 }, { - "x": 33.74, - "y": 51.95 + "x": 53.4, + "y": 58.78 }, { - "x": 33.77, - "y": 51.98 + "x": 51.05, + "y": 56.98 + }, + { + "x": 51.49, + "y": 55.89 + }, + { + "x": 51.06, + "y": 55.41 + }, + { + "x": 52.1, + "y": 54.53 + }, + { + "x": 52.24, + "y": 53.68 + }, + { + "x": 51, + "y": 53.96 + }, + { + "x": 49.12, + "y": 53.3 + }, + { + "x": 47.28, + "y": 54.11 + }, + { + "x": 47.65, + "y": 54.13 + }, + { + "x": 47.28, + "y": 54.66 + }, + { + "x": 46.57, + "y": 54.35 + }, + { + "x": 45.53, + "y": 54.66 + }, + { + "x": 45.56, + "y": 54.69 } ], [ { - "x": 73.53, - "y": 10.01 + "x": 86.98, + "y": 16.03 }, { - "x": 67.47, - "y": 12.56 + "x": 86.19, + "y": 17.04 }, { - "x": 65.39, - "y": 16.86 + "x": 84.87, + "y": 17.22 }, { - "x": 56.57, - "y": 13.8 + "x": 84.41, + "y": 17.88 }, { - "x": 58.82, - "y": 17.46 + "x": 83.73, + "y": 17.6 }, { - "x": 55.08, - "y": 19.14 + "x": 83.54, + "y": 18.16 }, { - "x": 54.45, - "y": 13.58 + "x": 82.14, + "y": 17.8 }, { - "x": 56.11, - "y": 10.3 + "x": 80.67, + "y": 18.53 }, { - "x": 59.54, - "y": 10.34 + "x": 78.87, + "y": 20.92 }, { - "x": 60.32, - "y": 0.33 + "x": 78.51, + "y": 22.69 }, { - "x": 66.96, - "y": 6.6 + "x": 73.73, + "y": 19.64 }, { - "x": 70.22, - "y": 7.54 + "x": 72.42, + "y": 19.8 }, { - "x": 72.16, - "y": 5.51 + "x": 70.91, + "y": 21.01 }, { - "x": 71.89, - "y": 10.29 + "x": 70.09, + "y": 19.81 }, { - "x": 73.52, - "y": 10.01 + "x": 69.31, + "y": 19.74 }, { - "x": 73.53, - "y": 10.01 + "x": 68.61, + "y": 21.19 + }, + { + "x": 70.23, + "y": 21.9 + }, + { + "x": 71.66, + "y": 23.27 + }, + { + "x": 71.01, + "y": 23.66 + }, + { + "x": 69.85, + "y": 23.14 + }, + { + "x": 69.08, + "y": 24.48 + }, + { + "x": 68.33, + "y": 25.06 + }, + { + "x": 67.72, + "y": 24.79 + }, + { + "x": 68.12, + "y": 22.44 + }, + { + "x": 66.88, + "y": 21.14 + }, + { + "x": 67.1, + "y": 19.52 + }, + { + "x": 68.25, + "y": 18.68 + }, + { + "x": 68.65, + "y": 18.87 + }, + { + "x": 69.38, + "y": 17.83 + }, + { + "x": 68.74, + "y": 16.66 + }, + { + "x": 69.22, + "y": 16.09 + }, + { + "x": 71.55, + "y": 17.17 + }, + { + "x": 72.41, + "y": 16.35 + }, + { + "x": 72.12, + "y": 14.52 + }, + { + "x": 73.14, + "y": 13.48 + }, + { + "x": 73.66, + "y": 10.18 + }, + { + "x": 72.92, + "y": 7.5 + }, + { + "x": 73.22, + "y": 6.34 + }, + { + "x": 73.75, + "y": 6.47 + }, + { + "x": 74.16, + "y": 6 + }, + { + "x": 77.64, + "y": 10.44 + }, + { + "x": 80.3, + "y": 12.3 + }, + { + "x": 80.14, + "y": 12.66 + }, + { + "x": 81.45, + "y": 12.58 + }, + { + "x": 81.57, + "y": 13.09 + }, + { + "x": 81.87, + "y": 12.63 + }, + { + "x": 82.38, + "y": 13.42 + }, + { + "x": 83.7, + "y": 13.55 + }, + { + "x": 85.56, + "y": 11.57 + }, + { + "x": 84.65, + "y": 14.24 + }, + { + "x": 85.73, + "y": 16.41 + }, + { + "x": 85.28, + "y": 16.31 + }, + { + "x": 86.14, + "y": 16.76 + }, + { + "x": 86.98, + "y": 16.03 } ], [ { - "x": 17.39, - "y": 87.87 + "x": 39.64, + "y": 62.61 }, { - "x": 15.18, - "y": 91.21 + "x": 38.56, + "y": 66.97 }, { - "x": 17.37, - "y": 87.79 + "x": 37.67, + "y": 66.67 }, { - "x": 17.39, - "y": 87.87 + "x": 37.87, + "y": 67.34 + }, + { + "x": 36.28, + "y": 68.42 + }, + { + "x": 36.74, + "y": 67.08 + }, + { + "x": 36.05, + "y": 66.13 + }, + { + "x": 36.62, + "y": 66.22 + }, + { + "x": 36.68, + "y": 65.64 + }, + { + "x": 36.23, + "y": 65.63 + }, + { + "x": 35.85, + "y": 66.42 + }, + { + "x": 36.29, + "y": 67.37 + }, + { + "x": 36.04, + "y": 67.83 + }, + { + "x": 34.82, + "y": 67.47 + }, + { + "x": 34.47, + "y": 66.83 + }, + { + "x": 34.84, + "y": 66.94 + }, + { + "x": 35.19, + "y": 66.23 + }, + { + "x": 34.65, + "y": 65.33 + }, + { + "x": 34.67, + "y": 64.13 + }, + { + "x": 35.79, + "y": 63.16 + }, + { + "x": 36.31, + "y": 61.92 + }, + { + "x": 35.57, + "y": 62.03 + }, + { + "x": 36.13, + "y": 61.4 + }, + { + "x": 34.88, + "y": 59.77 + }, + { + "x": 34.42, + "y": 61.02 + }, + { + "x": 35.21, + "y": 61.09 + }, + { + "x": 35.28, + "y": 61.77 + }, + { + "x": 34.63, + "y": 62.15 + }, + { + "x": 34.77, + "y": 61.51 + }, + { + "x": 34.39, + "y": 61.34 + }, + { + "x": 33.2, + "y": 62.24 + }, + { + "x": 33.6, + "y": 61.62 + }, + { + "x": 32.86, + "y": 60.81 + }, + { + "x": 33, + "y": 60.14 + }, + { + "x": 33.38, + "y": 61.02 + }, + { + "x": 34.08, + "y": 61.14 + }, + { + "x": 33.89, + "y": 60.46 + }, + { + "x": 32.57, + "y": 59.62 + }, + { + "x": 32.66, + "y": 59.03 + }, + { + "x": 33.57, + "y": 59.4 + }, + { + "x": 33.58, + "y": 58.3 + }, + { + "x": 34.13, + "y": 58.73 + }, + { + "x": 34.77, + "y": 57.85 + }, + { + "x": 35.38, + "y": 58.09 + }, + { + "x": 35.04, + "y": 57.78 + }, + { + "x": 35.71, + "y": 57.08 + }, + { + "x": 37.45, + "y": 56.63 + }, + { + "x": 37.77, + "y": 58.01 + }, + { + "x": 39.67, + "y": 57.84 + }, + { + "x": 39.9, + "y": 58.58 + }, + { + "x": 39.14, + "y": 59.43 + }, + { + "x": 40.46, + "y": 59.45 + }, + { + "x": 40.14, + "y": 60.01 + }, + { + "x": 41.06, + "y": 60.75 + }, + { + "x": 39.71, + "y": 62.62 + }, + { + "x": 39.64, + "y": 62.61 } ], [ { - "x": 21.8, - "y": 80.05 + "x": 49.81, + "y": 57.19 }, { - "x": 19.99, - "y": 81.05 + "x": 48.54, + "y": 58.22 }, { - "x": 21.77, - "y": 79.9 + "x": 48.09, + "y": 59.57 }, { - "x": 21.8, - "y": 80.05 - } - ], - [ - { - "x": 26.13, - "y": 68.89 + "x": 46.62, + "y": 58.36 }, { - "x": 25.55, - "y": 71.22 + "x": 45.12, + "y": 59.06 }, { - "x": 26.11, - "y": 68.91 + "x": 44.14, + "y": 60.57 }, { - "x": 26.13, - "y": 68.89 - } - ], - [ - { - "x": 23.26, - "y": 60.89 + "x": 44.15, + "y": 61.67 }, { - "x": 22.73, - "y": 62.56 + "x": 42.89, + "y": 61.51 }, { - "x": 23.2, + "x": 43.16, "y": 60.88 }, { - "x": 23.26, - "y": 60.89 + "x": 42.47, + "y": 60.95 + }, + { + "x": 42.07, + "y": 60.44 + }, + { + "x": 42.43, + "y": 59.99 + }, + { + "x": 42.11, + "y": 59.7 + }, + { + "x": 42.62, + "y": 59.61 + }, + { + "x": 42.05, + "y": 59.24 + }, + { + "x": 42.2, + "y": 58.74 + }, + { + "x": 40.82, + "y": 59.12 + }, + { + "x": 43.05, + "y": 57.65 + }, + { + "x": 43.79, + "y": 56 + }, + { + "x": 44.56, + "y": 56.77 + }, + { + "x": 45.85, + "y": 56.64 + }, + { + "x": 46.29, + "y": 56.18 + }, + { + "x": 46.01, + "y": 55.44 + }, + { + "x": 47.28, + "y": 54.97 + }, + { + "x": 49.67, + "y": 55.53 + }, + { + "x": 49.81, + "y": 57.16 + }, + { + "x": 49.81, + "y": 57.19 } ], [ { - "x": 38.86, - "y": 51.21 + "x": 28.49, + "y": 84.55 }, { - "x": 37.98, - "y": 53.17 + "x": 26.86, + "y": 85.89 }, { - "x": 38.79, - "y": 51.24 + "x": 27.09, + "y": 86.38 }, { - "x": 38.86, - "y": 51.21 + "x": 26.19, + "y": 87.22 + }, + { + "x": 26.43, + "y": 85.93 + }, + { + "x": 27.23, + "y": 85.43 + }, + { + "x": 26.95, + "y": 84.94 + }, + { + "x": 27.55, + "y": 85.12 + }, + { + "x": 28.22, + "y": 84.22 + }, + { + "x": 28.47, + "y": 84.49 + }, + { + "x": 28.49, + "y": 84.55 } ], [ { - "x": 20.98, - "y": 51.16 + "x": 62.46, + "y": 39.6 }, { - "x": 20.63, - "y": 52.66 + "x": 62.85, + "y": 39.58 }, { - "x": 21.01, - "y": 51.15 + "x": 62.6, + "y": 40.29 }, { - "x": 20.98, - "y": 51.16 + "x": 61.67, + "y": 40.74 + }, + { + "x": 62.07, + "y": 40.04 + }, + { + "x": 61.73, + "y": 39.59 + }, + { + "x": 62.64, + "y": 38.52 + }, + { + "x": 62.43, + "y": 39.67 + }, + { + "x": 62.46, + "y": 39.6 + } + ], + [ + { + "x": 33.09, + "y": 78.25 + }, + { + "x": 31.98, + "y": 79.55 + }, + { + "x": 31.2, + "y": 79.05 + }, + { + "x": 33.06, + "y": 78.12 + }, + { + "x": 33.09, + "y": 78.25 + } + ], + [ + { + "x": 50.86, + "y": 54.02 + }, + { + "x": 50.71, + "y": 55.4 + }, + { + "x": 49.94, + "y": 55.72 + }, + { + "x": 49.7, + "y": 55.33 + }, + { + "x": 50.79, + "y": 54.05 + }, + { + "x": 50.86, + "y": 54.02 + } + ], + [ + { + "x": 34.61, + "y": 62.33 + }, + { + "x": 34.75, + "y": 63.16 + }, + { + "x": 34.06, + "y": 63.74 + }, + { + "x": 34.08, + "y": 62.38 + }, + { + "x": 34.54, + "y": 62.33 + }, + { + "x": 34.61, + "y": 62.33 + } + ], + [ + { + "x": 36.33, + "y": 70.88 + }, + { + "x": 35.54, + "y": 71.4 + }, + { + "x": 35.33, + "y": 70.8 + }, + { + "x": 36.21, + "y": 70.77 + }, + { + "x": 36.33, + "y": 70.88 + } + ], + [ + { + "x": 32.23, + "y": 53.98 + }, + { + "x": 31.8, + "y": 55.26 + }, + { + "x": 31.48, + "y": 55.05 + }, + { + "x": 31.8, + "y": 53.86 + }, + { + "x": 32.27, + "y": 53.65 + }, + { + "x": 32.27, + "y": 53.97 + }, + { + "x": 32.23, + "y": 53.98 + } + ], + [ + { + "x": 37.6, + "y": 69.06 + }, + { + "x": 36.99, + "y": 71 + }, + { + "x": 37.58, + "y": 69.07 + }, + { + "x": 37.6, + "y": 69.06 + } + ], + [ + { + "x": 30.31, + "y": 61.82 + }, + { + "x": 29.95, + "y": 62.23 + }, + { + "x": 29.37, + "y": 62.06 + }, + { + "x": 29.58, + "y": 61.39 + }, + { + "x": 30.07, + "y": 61.32 + }, + { + "x": 30.23, + "y": 61.76 + }, + { + "x": 30.31, + "y": 61.82 + } + ], + [ + { + "x": 31.76, + "y": 55.36 + }, + { + "x": 31.29, + "y": 56.06 + }, + { + "x": 31.41, + "y": 55.16 + }, + { + "x": 31.73, + "y": 55.33 + }, + { + "x": 31.76, + "y": 55.36 + } + ], + [ + { + "x": 45.37, + "y": 47.16 + }, + { + "x": 45.23, + "y": 47.65 + }, + { + "x": 44.79, + "y": 47.45 + }, + { + "x": 45.12, + "y": 46.88 + }, + { + "x": 45.36, + "y": 47.14 + }, + { + "x": 45.37, + "y": 47.16 + } + ], + [ + { + "x": 13.31, + "y": 93.5 + }, + { + "x": 13.72, + "y": 93.59 + }, + { + "x": 13.51, + "y": 94 + }, + { + "x": 12.87, + "y": 93.9 + }, + { + "x": 13.24, + "y": 93.44 + }, + { + "x": 13.31, + "y": 93.5 } ] ] diff --git a/frontend/data/outlines/norway.json b/frontend/data/outlines/norway.json index 68a7706..49f6ccc 100644 --- a/frontend/data/outlines/norway.json +++ b/frontend/data/outlines/norway.json @@ -8,414 +8,3150 @@ "subregion": "Northern Europe" }, "outline": { - "type": "MultiPolygon", - "bounds": { - "minLon": -9.11742102799991, - "maxLon": 33.64039147200009, - "minLat": -54.46249765399995, - "maxLat": 80.77008698100008 + "type": "Polygon", + "geoBounds": { + "minLon": 4.926768425000091, + "maxLon": 31.076996290000068, + "minLat": 57.99315013200004, + "maxLat": 71.12710195500006 + }, + "projectedBounds": { + "minX": 0.085988, + "maxX": 0.542396, + "minY": 1.248935, + "maxY": 1.794548 + }, + "projection": { + "padding": 6, + "scale": 161.286536, + "xOffset": 13.193801, + "yOffset": 6 }, "rings": [ [ { - "x": 69.56, - "y": 8.68 + "x": 57.38, + "y": 23.29 }, { - "x": 49.79, - "y": 12.7 + "x": 55.91, + "y": 23.4 }, { - "x": 51.47, - "y": 14.36 + "x": 56.63, + "y": 25.11 }, { - "x": 48.48, - "y": 16.18 + "x": 55.52, + "y": 27.14 }, { - "x": 36.8, - "y": 16.79 + "x": 56.32, + "y": 27.63 }, { - "x": 33.44, - "y": 15.72 + "x": 55.54, + "y": 28.6 }, { - "x": 37.94, - "y": 14.98 + "x": 52.92, + "y": 27.42 }, { - "x": 32.85, - "y": 14.77 + "x": 51.81, + "y": 27.45 }, { - "x": 63.79, - "y": 8.36 + "x": 51.22, + "y": 26.89 }, { - "x": 94, - "y": 7.75 + "x": 50.45, + "y": 27.23 }, { - "x": 69.77, - "y": 8.63 + "x": 50.53, + "y": 29.76 }, { - "x": 69.56, - "y": 8.68 - } - ], - [ - { - "x": 42.7, - "y": 12.72 + "x": 49.77, + "y": 31.46 }, { - "x": 40.68, - "y": 12.8 + "x": 48.08, + "y": 30.47 + }, + { + "x": 46.57, + "y": 32.03 + }, + { + "x": 46.02, + "y": 34.05 + }, + { + "x": 44.72, + "y": 35.54 + }, + { + "x": 45.6, + "y": 37.17 + }, + { + "x": 45.53, + "y": 38.24 + }, + { + "x": 42.75, + "y": 42.24 + }, + { + "x": 42.91, + "y": 43.76 + }, + { + "x": 41.7, + "y": 44.61 + }, + { + "x": 40.26, + "y": 44.81 + }, + { + "x": 40.56, + "y": 47.04 + }, + { + "x": 40.18, + "y": 50.33 + }, + { + "x": 37.73, + "y": 55.22 + }, + { + "x": 39.01, + "y": 55.99 + }, + { + "x": 39.15, + "y": 57.92 + }, + { + "x": 38.63, + "y": 58.94 + }, + { + "x": 35.87, + "y": 58.63 + }, + { + "x": 33.58, + "y": 61.57 + }, + { + "x": 33.72, + "y": 62.35 + }, + { + "x": 33.08, + "y": 63.51 + }, + { + "x": 33.73, + "y": 65.31 + }, + { + "x": 33.36, + "y": 67.86 + }, + { + "x": 33.99, + "y": 69.69 + }, + { + "x": 33.56, + "y": 73.05 + }, + { + "x": 35.61, + "y": 75.27 + }, + { + "x": 35.09, + "y": 77.04 + }, + { + "x": 33.82, + "y": 77.3 + }, + { + "x": 34.81, + "y": 80.65 + }, + { + "x": 34.47, + "y": 82.57 + }, + { + "x": 33.51, + "y": 83.6 + }, + { + "x": 32.68, + "y": 83.75 + }, + { + "x": 32.82, + "y": 84.63 + }, + { + "x": 32.19, + "y": 85.23 + }, + { + "x": 32.57, + "y": 87.21 + }, + { + "x": 32.16, + "y": 89.01 + }, + { + "x": 31.56, + "y": 89.14 + }, + { + "x": 30.79, + "y": 87.5 + }, + { + "x": 30.38, + "y": 87.87 + }, + { + "x": 29.55, + "y": 87.39 + }, + { + "x": 29.05, + "y": 84.56 + }, + { + "x": 29.32, + "y": 83.83 + }, + { + "x": 29.5, + "y": 84.5 + }, + { + "x": 29.41, + "y": 83.52 + }, + { + "x": 28.81, + "y": 83.87 + }, + { + "x": 29, + "y": 85.63 + }, + { + "x": 28.11, + "y": 84.58 + }, + { + "x": 28.92, + "y": 86.91 + }, + { + "x": 28.49, + "y": 87.09 + }, + { + "x": 28.34, + "y": 88.25 + }, + { + "x": 28.11, + "y": 87.95 + }, + { + "x": 28.06, + "y": 88.49 + }, + { + "x": 27.04, + "y": 88.82 + }, + { + "x": 26.18, + "y": 87.92 + }, + { + "x": 26.6, + "y": 88.81 + }, + { + "x": 25.5, + "y": 89.22 + }, + { + "x": 25.81, + "y": 89.71 + }, + { + "x": 24.86, + "y": 89.98 + }, + { + "x": 25.2, + "y": 90.4 + }, + { + "x": 24.42, + "y": 90.71 + }, + { + "x": 24.46, + "y": 91.22 + }, + { + "x": 22.41, + "y": 93.31 + }, + { + "x": 21.99, + "y": 93.36 + }, + { + "x": 21.86, + "y": 92.78 + }, + { + "x": 21.61, + "y": 93.53 + }, + { + "x": 19.05, + "y": 94 + }, + { + "x": 19.45, + "y": 93.43 + }, + { + "x": 18.75, + "y": 93.69 + }, + { + "x": 18.48, + "y": 93.43 + }, + { + "x": 19, + "y": 93.21 + }, + { + "x": 18.4, + "y": 92.99 + }, + { + "x": 18.27, + "y": 93.33 + }, + { + "x": 18.25, + "y": 92.95 + }, + { + "x": 18.42, + "y": 93.62 + }, + { + "x": 17.96, + "y": 93.6 + }, + { + "x": 17.71, + "y": 93.32 + }, + { + "x": 18.6, + "y": 92.52 + }, + { + "x": 18.13, + "y": 92.78 + }, + { + "x": 18.15, + "y": 92.22 + }, + { + "x": 17.8, + "y": 92.67 + }, + { + "x": 16.24, + "y": 91.91 + }, + { + "x": 14.75, + "y": 89.91 + }, + { + "x": 14.95, + "y": 88.36 + }, + { + "x": 15.41, + "y": 89.3 + }, + { + "x": 15.8, + "y": 88.77 + }, + { + "x": 16.86, + "y": 89.45 + }, + { + "x": 16.4, + "y": 89.2 + }, + { + "x": 16.57, + "y": 88.78 + }, + { + "x": 17.98, + "y": 88.29 + }, + { + "x": 16.31, + "y": 89.09 + }, + { + "x": 15.86, + "y": 88.21 + }, + { + "x": 17.51, + "y": 86.82 + }, + { + "x": 16.65, + "y": 87.11 + }, + { + "x": 16.88, + "y": 86.82 + }, + { + "x": 16.33, + "y": 86.47 + }, + { + "x": 17.75, + "y": 85.49 + }, + { + "x": 16.88, + "y": 85.68 + }, + { + "x": 17.02, + "y": 84.99 + }, + { + "x": 16, + "y": 86.62 + }, + { + "x": 15.89, + "y": 86.12 + }, + { + "x": 16.65, + "y": 85.95 + }, + { + "x": 15.67, + "y": 85.6 + }, + { + "x": 15.22, + "y": 86.33 + }, + { + "x": 15.82, + "y": 86.65 + }, + { + "x": 15.12, + "y": 86.97 + }, + { + "x": 15.05, + "y": 86.29 + }, + { + "x": 14.82, + "y": 87.05 + }, + { + "x": 13.91, + "y": 85.76 + }, + { + "x": 14.78, + "y": 84.5 + }, + { + "x": 14.57, + "y": 85.8 + }, + { + "x": 14.99, + "y": 84.84 + }, + { + "x": 15.52, + "y": 85.21 + }, + { + "x": 15.69, + "y": 84.55 + }, + { + "x": 17.04, + "y": 83.93 + }, + { + "x": 16.11, + "y": 84.38 + }, + { + "x": 16.13, + "y": 83.81 + }, + { + "x": 15.74, + "y": 84.31 + }, + { + "x": 15.22, + "y": 83.85 + }, + { + "x": 17.03, + "y": 82.34 + }, + { + "x": 16.51, + "y": 82.42 + }, + { + "x": 16.78, + "y": 81.33 + }, + { + "x": 18.02, + "y": 80.67 + }, + { + "x": 17.69, + "y": 82.57 + }, + { + "x": 18.06, + "y": 80.86 + }, + { + "x": 19.33, + "y": 80.16 + }, + { + "x": 18.75, + "y": 80.16 + }, + { + "x": 19, + "y": 79.68 + }, + { + "x": 18.06, + "y": 80.57 + }, + { + "x": 18.17, + "y": 80.08 + }, + { + "x": 17.05, + "y": 80.83 + }, + { + "x": 16.71, + "y": 80.36 + }, + { + "x": 16.61, + "y": 81.59 + }, + { + "x": 16.2, + "y": 81.53 + }, + { + "x": 15.48, + "y": 83.06 + }, + { + "x": 15.63, + "y": 81.84 + }, + { + "x": 14.93, + "y": 82.11 + }, + { + "x": 15.47, + "y": 80.81 + }, + { + "x": 14.55, + "y": 82.29 + }, + { + "x": 13.8, + "y": 81.04 + }, + { + "x": 14.26, + "y": 80.03 + }, + { + "x": 15.24, + "y": 80.59 + }, + { + "x": 15.51, + "y": 78.94 + }, + { + "x": 15.3, + "y": 78.71 + }, + { + "x": 14.03, + "y": 79.77 + }, + { + "x": 13.19, + "y": 78.47 + }, + { + "x": 14.62, + "y": 79.45 + }, + { + "x": 14.06, + "y": 78.61 + }, + { + "x": 14.91, + "y": 78.03 + }, + { + "x": 13.77, + "y": 78.4 + }, + { + "x": 13.42, + "y": 77.12 + }, + { + "x": 13.78, + "y": 76.87 + }, + { + "x": 14.66, + "y": 77.34 + }, + { + "x": 14.88, + "y": 76.87 + }, + { + "x": 16.49, + "y": 76.6 + }, + { + "x": 17.22, + "y": 77.25 + }, + { + "x": 17.91, + "y": 76.29 + }, + { + "x": 18.91, + "y": 76.8 + }, + { + "x": 18.67, + "y": 77.68 + }, + { + "x": 19.17, + "y": 77.52 + }, + { + "x": 19.33, + "y": 78.11 + }, + { + "x": 19.03, + "y": 76.77 + }, + { + "x": 20.26, + "y": 76.72 + }, + { + "x": 20.23, + "y": 76.23 + }, + { + "x": 20.99, + "y": 75.96 + }, + { + "x": 20.12, + "y": 76.16 + }, + { + "x": 19.91, + "y": 75.64 + }, + { + "x": 20.64, + "y": 74.47 + }, + { + "x": 19.77, + "y": 75 + }, + { + "x": 19.89, + "y": 76.36 + }, + { + "x": 18.9, + "y": 76.66 + }, + { + "x": 19.04, + "y": 76.24 + }, + { + "x": 17.79, + "y": 76 + }, + { + "x": 18.19, + "y": 74.96 + }, + { + "x": 17.44, + "y": 76.64 + }, + { + "x": 16.25, + "y": 76.44 + }, + { + "x": 16.32, + "y": 76.12 + }, + { + "x": 13.95, + "y": 76.7 + }, + { + "x": 13.52, + "y": 76.36 + }, + { + "x": 14.1, + "y": 76.24 + }, + { + "x": 13.34, + "y": 75.71 + }, + { + "x": 13.97, + "y": 75.31 + }, + { + "x": 14.3, + "y": 75.84 + }, + { + "x": 14.12, + "y": 75.28 + }, + { + "x": 15.18, + "y": 75.2 + }, + { + "x": 13.56, + "y": 75.42 + }, + { + "x": 13.71, + "y": 74.79 + }, + { + "x": 13.25, + "y": 74.88 + }, + { + "x": 15.66, + "y": 74.63 + }, + { + "x": 13.9, + "y": 74.33 + }, + { + "x": 14.41, + "y": 74.03 + }, + { + "x": 13.81, + "y": 73.82 + }, + { + "x": 14.6, + "y": 73.86 + }, + { + "x": 13.31, + "y": 73.58 + }, + { + "x": 13.37, + "y": 72.92 + }, + { + "x": 13.87, + "y": 73.05 + }, + { + "x": 13.62, + "y": 72.76 + }, + { + "x": 14.51, + "y": 71.94 + }, + { + "x": 15.35, + "y": 72.13 + }, + { + "x": 15.14, + "y": 72.52 + }, + { + "x": 16.05, + "y": 72.34 + }, + { + "x": 15.93, + "y": 72.97 + }, + { + "x": 16.19, + "y": 72.4 + }, + { + "x": 16.72, + "y": 72.81 + }, + { + "x": 16.38, + "y": 72.4 + }, + { + "x": 17.55, + "y": 72.58 + }, + { + "x": 18.52, + "y": 72.15 + }, + { + "x": 17.56, + "y": 72.46 + }, + { + "x": 15.45, + "y": 72.07 + }, + { + "x": 16.11, + "y": 71.91 + }, + { + "x": 13.84, + "y": 72.03 + }, + { + "x": 13.79, + "y": 71.58 + }, + { + "x": 14.53, + "y": 71.29 + }, + { + "x": 13.62, + "y": 70.3 + }, + { + "x": 13.91, + "y": 70.13 + }, + { + "x": 14.7, + "y": 71.37 + }, + { + "x": 15.07, + "y": 71 + }, + { + "x": 14.5, + "y": 70.67 + }, + { + "x": 14.68, + "y": 70.26 + }, + { + "x": 15.51, + "y": 70.88 + }, + { + "x": 15.28, + "y": 70.39 + }, + { + "x": 15.95, + "y": 70.26 + }, + { + "x": 15.78, + "y": 71.29 + }, + { + "x": 16.09, + "y": 70.57 + }, + { + "x": 17.25, + "y": 71.04 + }, + { + "x": 16.01, + "y": 70.05 + }, + { + "x": 16.4, + "y": 70.18 + }, + { + "x": 16.15, + "y": 69.73 + }, + { + "x": 17.09, + "y": 69.17 + }, + { + "x": 17.71, + "y": 70.76 + }, + { + "x": 17.34, + "y": 69.08 + }, + { + "x": 17.8, + "y": 69.27 + }, + { + "x": 18.21, + "y": 68.68 + }, + { + "x": 19, + "y": 69.77 + }, + { + "x": 18.91, + "y": 70.8 + }, + { + "x": 19.56, + "y": 70.8 + }, + { + "x": 18.97, + "y": 70.73 + }, + { + "x": 19.11, + "y": 69.81 + }, + { + "x": 20.08, + "y": 69.77 + }, + { + "x": 18.91, + "y": 69.45 + }, + { + "x": 18.44, + "y": 68.52 + }, + { + "x": 16.9, + "y": 68.69 + }, + { + "x": 18.11, + "y": 68.43 + }, + { + "x": 16.96, + "y": 68.22 + }, + { + "x": 16.96, + "y": 67.82 + }, + { + "x": 17.94, + "y": 68.02 + }, + { + "x": 18.34, + "y": 67.44 + }, + { + "x": 18.8, + "y": 67.93 + }, + { + "x": 18.71, + "y": 67.51 + }, + { + "x": 19.29, + "y": 67.47 + }, + { + "x": 19.39, + "y": 68.18 + }, + { + "x": 19.47, + "y": 67.6 + }, + { + "x": 20.56, + "y": 68.37 + }, + { + "x": 21.22, + "y": 67.93 + }, + { + "x": 20.27, + "y": 67.88 + }, + { + "x": 20.5, + "y": 67.32 + }, + { + "x": 22.26, + "y": 67.21 + }, + { + "x": 22.05, + "y": 66.67 + }, + { + "x": 20.04, + "y": 67.18 + }, + { + "x": 20.75, + "y": 66.57 + }, + { + "x": 18.95, + "y": 67.01 + }, + { + "x": 19.06, + "y": 66.46 + }, + { + "x": 19.64, + "y": 66.46 + }, + { + "x": 18.72, + "y": 65.8 + }, + { + "x": 19.7, + "y": 65.22 + }, + { + "x": 20.44, + "y": 65.87 + }, + { + "x": 21.77, + "y": 65.46 + }, + { + "x": 23.38, + "y": 67.43 + }, + { + "x": 22.21, + "y": 65.56 + }, + { + "x": 21.5, + "y": 65.25 + }, + { + "x": 22.09, + "y": 64.63 + }, + { + "x": 22.77, + "y": 66.05 + }, + { + "x": 23.82, + "y": 66.41 + }, + { + "x": 23.02, + "y": 65.57 + }, + { + "x": 23.73, + "y": 65.44 + }, + { + "x": 22.9, + "y": 65.48 + }, + { + "x": 23.17, + "y": 65.19 + }, + { + "x": 22.52, + "y": 65.16 + }, + { + "x": 22.31, + "y": 64.6 + }, + { + "x": 23.65, + "y": 64.63 + }, + { + "x": 23.47, + "y": 64.23 + }, + { + "x": 24.5, + "y": 63.99 + }, + { + "x": 23.57, + "y": 64.05 + }, + { + "x": 23.19, + "y": 63.48 + }, + { + "x": 24, + "y": 63.14 + }, + { + "x": 23.74, + "y": 62.68 + }, + { + "x": 24.33, + "y": 62.83 + }, + { + "x": 24.71, + "y": 62.4 + }, + { + "x": 24.92, + "y": 63.48 + }, + { + "x": 26, + "y": 62.79 + }, + { + "x": 25.27, + "y": 62.99 + }, + { + "x": 25.17, + "y": 62.6 + }, + { + "x": 26.02, + "y": 62.3 + }, + { + "x": 25.12, + "y": 62.14 + }, + { + "x": 26.27, + "y": 61.93 + }, + { + "x": 26.04, + "y": 61.62 + }, + { + "x": 26.63, + "y": 61.27 + }, + { + "x": 27.36, + "y": 62.64 + }, + { + "x": 27.01, + "y": 63.26 + }, + { + "x": 27.51, + "y": 63.06 + }, + { + "x": 28.2, + "y": 63.65 + }, + { + "x": 27.74, + "y": 62.57 + }, + { + "x": 29.72, + "y": 62.71 + }, + { + "x": 30.07, + "y": 61.54 + }, + { + "x": 29.32, + "y": 61.88 + }, + { + "x": 29.54, + "y": 61.47 + }, + { + "x": 31.58, + "y": 60.35 + }, + { + "x": 31.46, + "y": 59.97 + }, + { + "x": 30.56, + "y": 59.91 + }, + { + "x": 31.66, + "y": 58.96 + }, + { + "x": 31.01, + "y": 58.76 + }, + { + "x": 31.31, + "y": 58.25 + }, + { + "x": 29.09, + "y": 60.23 + }, + { + "x": 30.11, + "y": 59.66 + }, + { + "x": 30.5, + "y": 60.06 + }, + { + "x": 28.65, + "y": 61.69 + }, + { + "x": 27.24, + "y": 62.09 + }, + { + "x": 26.91, + "y": 60.97 + }, + { + "x": 27.56, + "y": 60.39 + }, + { + "x": 26.19, + "y": 61.14 + }, + { + "x": 26.85, + "y": 60.49 + }, + { + "x": 26.2, + "y": 60.45 + }, + { + "x": 26.89, + "y": 59.75 + }, + { + "x": 28.03, + "y": 59.4 + }, + { + "x": 27.31, + "y": 59.53 + }, + { + "x": 27.84, + "y": 59.09 + }, + { + "x": 27.3, + "y": 59.27 + }, + { + "x": 27.47, + "y": 58.3 + }, + { + "x": 28.02, + "y": 58.35 + }, + { + "x": 27.95, + "y": 57.72 + }, + { + "x": 28.53, + "y": 57.81 + }, + { + "x": 28.2, + "y": 57.42 + }, + { + "x": 29.3, + "y": 56.7 + }, + { + "x": 28.83, + "y": 56.26 + }, + { + "x": 29.83, + "y": 56.62 + }, + { + "x": 29.32, + "y": 56.08 + }, + { + "x": 30.17, + "y": 55.85 + }, + { + "x": 30.21, + "y": 55.09 + }, + { + "x": 30.75, + "y": 56.12 + }, + { + "x": 31.25, + "y": 56.21 + }, + { + "x": 30.99, + "y": 56.9 + }, + { + "x": 31.44, + "y": 56.08 + }, + { + "x": 32.14, + "y": 55.89 + }, + { + "x": 31.52, + "y": 55.99 + }, + { + "x": 31.71, + "y": 55.45 + }, + { + "x": 32.48, + "y": 55.13 + }, + { + "x": 32.01, + "y": 54.92 + }, + { + "x": 31.74, + "y": 55.29 + }, + { + "x": 31.41, + "y": 54.41 + }, + { + "x": 32.66, + "y": 53.83 + }, + { + "x": 32.1, + "y": 53.64 + }, + { + "x": 32.45, + "y": 53.2 + }, + { + "x": 33.74, + "y": 52.87 + }, + { + "x": 32.86, + "y": 52.8 + }, + { + "x": 31.02, + "y": 54.23 + }, + { + "x": 31.5, + "y": 53.69 + }, + { + "x": 31, + "y": 53.54 + }, + { + "x": 32.25, + "y": 53.05 + }, + { + "x": 31.04, + "y": 53.33 + }, + { + "x": 33.04, + "y": 52.01 + }, + { + "x": 33.65, + "y": 52.5 + }, + { + "x": 35.73, + "y": 50.37 + }, + { + "x": 34.52, + "y": 51.5 + }, + { + "x": 34.1, + "y": 50.95 + }, + { + "x": 35.11, + "y": 50.76 + }, + { + "x": 33.8, + "y": 50.9 + }, + { + "x": 34.49, + "y": 49.99 + }, + { + "x": 35.05, + "y": 50.26 + }, + { + "x": 34.45, + "y": 49.47 + }, + { + "x": 35.11, + "y": 49.98 + }, + { + "x": 34.88, + "y": 49.56 + }, + { + "x": 35.3, + "y": 49.38 + }, + { + "x": 34.82, + "y": 49.38 + }, + { + "x": 34.72, + "y": 48.49 + }, + { + "x": 34.55, + "y": 49.02 + }, + { + "x": 34.61, + "y": 48.54 + }, + { + "x": 34.34, + "y": 48.91 + }, + { + "x": 34.1, + "y": 48.39 + }, + { + "x": 34.5, + "y": 47.51 + }, + { + "x": 35.32, + "y": 48.16 + }, + { + "x": 34.67, + "y": 47.37 + }, + { + "x": 35.12, + "y": 47.13 + }, + { + "x": 34.96, + "y": 46.29 + }, + { + "x": 35.49, + "y": 45.91 + }, + { + "x": 36.42, + "y": 46.67 + }, + { + "x": 35.71, + "y": 45.72 + }, + { + "x": 36.03, + "y": 45.1 + }, + { + "x": 34.99, + "y": 45.24 + }, + { + "x": 37.4, + "y": 44.01 + }, + { + "x": 37.43, + "y": 44.91 + }, + { + "x": 38.23, + "y": 44.66 + }, + { + "x": 37.72, + "y": 44.14 + }, + { + "x": 38.7, + "y": 44 + }, + { + "x": 39.14, + "y": 43.35 + }, + { + "x": 36.03, + "y": 44.43 + }, + { + "x": 37.42, + "y": 43.52 + }, + { + "x": 36.79, + "y": 43.07 + }, + { + "x": 36.56, + "y": 43.61 + }, + { + "x": 36.02, + "y": 43.45 + }, + { + "x": 36.38, + "y": 42.41 + }, + { + "x": 35.84, + "y": 42.02 + }, + { + "x": 36.94, + "y": 42.5 + }, + { + "x": 36.65, + "y": 42.02 + }, + { + "x": 37.81, + "y": 42.07 + }, + { + "x": 37.21, + "y": 41.73 + }, + { + "x": 37.96, + "y": 41.44 + }, + { + "x": 36.59, + "y": 41.84 + }, + { + "x": 37.06, + "y": 41.3 + }, + { + "x": 36.46, + "y": 41 + }, + { + "x": 37.46, + "y": 41.2 + }, + { + "x": 36.55, + "y": 40.66 + }, + { + "x": 37.87, + "y": 40.83 + }, + { + "x": 38.43, + "y": 40.51 + }, + { + "x": 37.54, + "y": 40.66 + }, + { + "x": 38.04, + "y": 40.32 + }, + { + "x": 37.45, + "y": 40.03 + }, + { + "x": 38.72, + "y": 40.12 + }, + { + "x": 37.45, + "y": 39.18 + }, + { + "x": 38.49, + "y": 38.66 + }, + { + "x": 38.62, + "y": 39.14 + }, + { + "x": 38.9, + "y": 38.18 + }, + { + "x": 39.16, + "y": 38.82 + }, + { + "x": 39.5, + "y": 38.18 + }, + { + "x": 40.33, + "y": 38.49 + }, + { + "x": 39.49, + "y": 38.01 + }, + { + "x": 39.76, + "y": 37.46 + }, + { + "x": 39.93, + "y": 37.83 + }, + { + "x": 40.64, + "y": 37.46 + }, + { + "x": 40.83, + "y": 37.76 + }, + { + "x": 40.18, + "y": 37.31 + }, + { + "x": 40.43, + "y": 37.14 + }, + { + "x": 41.49, + "y": 37.07 + }, + { + "x": 41.53, + "y": 37.9 + }, + { + "x": 41.82, + "y": 37.07 + }, + { + "x": 42.96, + "y": 38.11 + }, + { + "x": 42.61, + "y": 37.16 + }, + { + "x": 43.63, + "y": 37.36 + }, + { + "x": 41.73, + "y": 36.82 + }, + { + "x": 42.01, + "y": 36.36 + }, + { + "x": 40.63, + "y": 37.05 + }, + { + "x": 40.65, + "y": 36.6 + }, + { + "x": 39.66, + "y": 36.87 + }, + { + "x": 40.49, + "y": 35.56 + }, + { + "x": 41.06, + "y": 35.87 + }, + { + "x": 41.69, + "y": 35.37 + }, + { + "x": 40.78, + "y": 35.06 + }, + { + "x": 41.72, + "y": 34.41 + }, + { + "x": 42, + "y": 34.71 + }, + { + "x": 41.57, + "y": 34.51 + }, + { + "x": 41.58, + "y": 35.07 + }, + { + "x": 41.07, + "y": 35.16 + }, + { + "x": 42.04, + "y": 34.82 + }, + { + "x": 41.94, + "y": 35.56 + }, + { + "x": 42.76, + "y": 35.1 + }, + { + "x": 43.4, + "y": 36.62 + }, + { + "x": 43.04, + "y": 35.22 + }, + { + "x": 44.08, + "y": 34.56 + }, + { + "x": 42.22, + "y": 34.76 + }, + { + "x": 42.33, + "y": 34.29 + }, + { + "x": 42.86, + "y": 34.41 + }, + { + "x": 42.69, + "y": 34.01 + }, + { + "x": 42.05, + "y": 34.1 + }, + { + "x": 42.4, + "y": 33.35 + }, + { + "x": 43.4, + "y": 33.64 + }, + { + "x": 42.69, + "y": 33.24 + }, + { + "x": 43.23, + "y": 33.14 + }, + { + "x": 43.9, + "y": 33.54 + }, + { + "x": 43.5, + "y": 32.78 + }, + { + "x": 42.71, + "y": 32.78 + }, + { + "x": 42.77, + "y": 32.3 + }, + { + "x": 41.09, + "y": 33.92 + }, + { + "x": 40.97, + "y": 33.28 + }, + { + "x": 41.88, + "y": 33.19 + }, + { + "x": 40.91, + "y": 32.64 + }, + { + "x": 41.84, + "y": 32.37 + }, + { + "x": 41.13, + "y": 32.42 + }, + { + "x": 41.55, + "y": 32.04 + }, + { + "x": 42.11, + "y": 32.52 + }, + { + "x": 43.06, + "y": 31.86 + }, + { + "x": 43.05, + "y": 32.36 + }, + { + "x": 43.67, + "y": 31.62 + }, + { + "x": 43.97, + "y": 32.01 + }, + { + "x": 44.54, + "y": 31.19 + }, + { + "x": 44.08, + "y": 30.76 + }, + { + "x": 43.09, + "y": 30.7 }, { "x": 42.67, - "y": 12.72 + "y": 31.3 }, { - "x": 42.7, - "y": 12.72 - } - ], - [ - { - "x": 59.98, - "y": 8.91 + "x": 42.34, + "y": 30.98 }, { - "x": 56.37, - "y": 9.24 + "x": 43.36, + "y": 29.98 }, { - "x": 59.99, - "y": 8.9 + "x": 43.32, + "y": 30.86 }, { - "x": 59.98, - "y": 8.91 - } - ], - [ - { - "x": 54.99, - "y": 8.95 + "x": 43.93, + "y": 30.53 }, { - "x": 57.33, - "y": 8.9 + "x": 44.41, + "y": 29.37 + }, + { + "x": 44.48, + "y": 31.03 + }, + { + "x": 45.73, + "y": 32.77 + }, + { + "x": 44.95, + "y": 31.24 + }, + { + "x": 45.68, + "y": 32.01 + }, + { + "x": 45.46, + "y": 30.81 + }, + { + "x": 46.3, + "y": 30.72 + }, + { + "x": 45.18, + "y": 30.57 + }, + { + "x": 45.53, + "y": 29.85 + }, + { + "x": 46.03, + "y": 30 + }, + { + "x": 45.64, + "y": 29.53 + }, + { + "x": 44.85, + "y": 29.72 + }, + { + "x": 45.37, + "y": 29.45 + }, + { + "x": 44.79, + "y": 28.89 + }, + { + "x": 46.63, + "y": 30.26 + }, + { + "x": 44.98, + "y": 28.6 + }, + { + "x": 46.32, + "y": 28.19 + }, + { + "x": 46.75, + "y": 28.81 + }, + { + "x": 47.54, + "y": 28.43 + }, + { + "x": 48.12, + "y": 30 + }, + { + "x": 48.36, + "y": 29.48 + }, + { + "x": 47.88, + "y": 28.18 + }, + { + "x": 48.8, + "y": 28.54 + }, + { + "x": 48.21, + "y": 28.12 + }, + { + "x": 49.63, + "y": 28.28 + }, + { + "x": 48.5, + "y": 27.86 + }, + { + "x": 48.72, + "y": 27.23 + }, + { + "x": 47.31, + "y": 27.97 + }, + { + "x": 47.18, + "y": 27.4 + }, + { + "x": 45.87, + "y": 27.93 + }, + { + "x": 45.67, + "y": 27.38 + }, + { + "x": 46.11, + "y": 27.2 + }, + { + "x": 46.05, + "y": 26.46 + }, + { + "x": 47.07, + "y": 25.88 + }, + { + "x": 47.54, + "y": 26.43 + }, + { + "x": 47.88, + "y": 25.73 + }, + { + "x": 49.09, + "y": 26.22 + }, + { + "x": 47.84, + "y": 25.48 + }, + { + "x": 48.48, + "y": 25.02 + }, + { + "x": 49.38, + "y": 25.54 + }, + { + "x": 48.5, + "y": 24.9 + }, + { + "x": 49.5, + "y": 24.41 + }, + { + "x": 49.21, + "y": 24.09 + }, + { + "x": 48.38, + "y": 24.36 + }, + { + "x": 49.03, + "y": 22.66 + }, + { + "x": 50.42, + "y": 22.36 + }, + { + "x": 49.96, + "y": 21.72 + }, + { + "x": 50.43, + "y": 19.94 + }, + { + "x": 50.84, + "y": 19.71 + }, + { + "x": 51.37, + "y": 20.55 + }, + { + "x": 51.41, + "y": 21.72 + }, + { + "x": 51.58, + "y": 20.69 + }, + { + "x": 51.94, + "y": 21.49 + }, + { + "x": 52.06, + "y": 21.01 + }, + { + "x": 52.85, + "y": 21.31 + }, + { + "x": 51.27, + "y": 19.97 + }, + { + "x": 51.33, + "y": 19.47 + }, + { + "x": 52.4, + "y": 19.18 + }, + { + "x": 52.85, + "y": 20.43 + }, + { + "x": 53.88, + "y": 21.03 + }, + { + "x": 53.31, + "y": 21.57 + }, + { + "x": 54.24, + "y": 21.77 + }, + { + "x": 53.8, + "y": 20.57 + }, + { + "x": 53.25, + "y": 20.59 + }, + { + "x": 52.81, + "y": 19.89 + }, + { + "x": 53.46, + "y": 19.06 + }, + { + "x": 52.86, + "y": 19.33 + }, + { + "x": 52.65, + "y": 18.67 + }, + { + "x": 53.51, + "y": 17.36 }, { "x": 55.02, - "y": 8.95 + "y": 17.14 }, { - "x": 54.99, - "y": 8.95 - } - ], - [ - { - "x": 63.59, - "y": 8.38 + "x": 54.3, + "y": 20.4 }, { - "x": 60.55, - "y": 8.64 + "x": 54.75, + "y": 20.05 }, { - "x": 63.53, - "y": 8.38 + "x": 54.9, + "y": 18.7 }, { - "x": 63.59, - "y": 8.38 - } - ], - [ - { - "x": 65.76, - "y": 8.09 + "x": 55.94, + "y": 18.92 }, { - "x": 63.41, - "y": 8.27 + "x": 55.22, + "y": 18.58 }, { - "x": 65.73, - "y": 8.09 + "x": 55.13, + "y": 17.89 }, { - "x": 65.76, - "y": 8.09 - } - ], - [ - { - "x": 67.21, - "y": 7.95 + "x": 56.45, + "y": 15.78 }, { - "x": 65.13, - "y": 8 + "x": 56.82, + "y": 16.55 }, { - "x": 67.18, - "y": 7.96 + "x": 56.7, + "y": 18.81 }, { - "x": 67.21, - "y": 7.95 - } - ], - [ - { - "x": 76.65, - "y": 7.59 + "x": 55.48, + "y": 21.5 }, { - "x": 74.77, - "y": 7.66 + "x": 56.98, + "y": 18.98 }, { - "x": 76.6, - "y": 7.59 + "x": 58.03, + "y": 19.64 }, { - "x": 76.65, - "y": 7.59 - } - ], - [ - { - "x": 73.76, - "y": 7.59 + "x": 57.01, + "y": 18.58 }, { - "x": 76.25, - "y": 7.37 + "x": 56.98, + "y": 17.47 }, { - "x": 73.78, - "y": 7.59 + "x": 57.83, + "y": 17.16 }, { - "x": 73.76, - "y": 7.59 - } - ], - [ - { - "x": 82.45, - "y": 7.2 + "x": 57.85, + "y": 16.53 }, { - "x": 80.48, - "y": 7.21 + "x": 58.7, + "y": 15.96 }, { - "x": 82.4, - "y": 7.2 + "x": 58.14, + "y": 16.74 }, { - "x": 82.45, - "y": 7.2 - } - ], - [ - { - "x": 2.7, - "y": 7.1 + "x": 58.5, + "y": 17.27 }, { - "x": 0, - "y": 7.32 + "x": 58.92, + "y": 16.56 }, { - "x": 2.65, - "y": 7.09 + "x": 58.94, + "y": 17.02 }, { - "x": 2.7, - "y": 7.1 - } - ], - [ - { - "x": 78.45, - "y": 2.18 + "x": 59.26, + "y": 15.36 }, { - "x": 70.04, - "y": 2.39 + "x": 60.01, + "y": 15.62 }, { - "x": 78.4, - "y": 2.15 + "x": 61.5, + "y": 17.67 }, { - "x": 78.45, - "y": 2.18 - } - ], - [ - { - "x": 70.49, - "y": 1.89 + "x": 61.01, + "y": 15.99 }, { - "x": 68.46, - "y": 1.7 + "x": 61.28, + "y": 15.65 }, { - "x": 73.41, - "y": 1.85 + "x": 61.4, + "y": 16.04 }, { - "x": 70.47, - "y": 1.89 + "x": 61.57, + "y": 15.29 }, { - "x": 70.49, - "y": 1.89 - } - ], - [ - { - "x": 49.72, - "y": 1.87 + "x": 60.69, + "y": 15.23 }, { - "x": 45.84, - "y": 1.39 + "x": 61.53, + "y": 14.54 }, { - "x": 49.7, - "y": 1.86 + "x": 60.47, + "y": 15.04 }, { - "x": 49.72, - "y": 1.87 - } - ], - [ - { - "x": 90.17, - "y": 1.38 + "x": 59.76, + "y": 14.66 }, { - "x": 86.44, - "y": 1.42 + "x": 59.84, + "y": 14.09 }, { - "x": 89.3, - "y": 1.38 + "x": 59.03, + "y": 13.81 }, { - "x": 90.17, - "y": 1.38 - } - ], - [ - { - "x": 68.33, - "y": 1.22 + "x": 59.68, + "y": 13.3 }, { - "x": 70.04, - "y": 1.27 + "x": 59.82, + "y": 13.81 }, { - "x": 68.35, - "y": 1.22 + "x": 60, + "y": 12.87 }, { - "x": 68.33, - "y": 1.22 - } - ], - [ - { - "x": 68.59, - "y": 1.58 + "x": 60.9, + "y": 14.32 }, { - "x": 59.49, - "y": 3.1 + "x": 60.71, + "y": 13.41 }, { - "x": 53.86, - "y": 2.39 + "x": 61.28, + "y": 12.84 }, { - "x": 61.37, - "y": 2.21 + "x": 61.58, + "y": 13.6 }, { - "x": 53.11, - "y": 2.01 + "x": 62.12, + "y": 13.16 }, { - "x": 61.78, - "y": 1.73 + "x": 62.03, + "y": 14.42 }, { - "x": 46.29, - "y": 0.91 + "x": 62.83, + "y": 14.49 }, { - "x": 71.73, - "y": 1.48 + "x": 62.17, + "y": 14.15 }, { - "x": 68.61, - "y": 1.57 + "x": 62.38, + "y": 13.4 }, { - "x": 68.59, - "y": 1.58 - } - ], - [ - { - "x": 98.73, - "y": 0.4 + "x": 63.98, + "y": 13.82 }, { - "x": 94.94, - "y": 0.49 + "x": 63.68, + "y": 14.5 }, { - "x": 98.68, - "y": 0.41 + "x": 62.06, + "y": 15.17 }, { - "x": 98.73, - "y": 0.4 - } - ], - [ - { - "x": 84.87, - "y": 0.52 + "x": 64.12, + "y": 14.32 }, { - "x": 62.91, - "y": 0.47 + "x": 64.34, + "y": 15.91 }, { - "x": 85.03, - "y": 0.5 + "x": 64.95, + "y": 15.57 }, { - "x": 84.87, - "y": 0.52 + "x": 65, + "y": 15.96 + }, + { + "x": 65.59, + "y": 15.34 + }, + { + "x": 64.56, + "y": 14.77 + }, + { + "x": 65.2, + "y": 14.38 + }, + { + "x": 64.91, + "y": 14.15 + }, + { + "x": 65.26, + "y": 13.92 + }, + { + "x": 64.76, + "y": 13.75 + }, + { + "x": 65.57, + "y": 13.52 + }, + { + "x": 64.95, + "y": 13.41 + }, + { + "x": 65.8, + "y": 13.01 + }, + { + "x": 65.37, + "y": 12.9 + }, + { + "x": 65.51, + "y": 12.5 + }, + { + "x": 66.65, + "y": 11.29 + }, + { + "x": 67.87, + "y": 11.74 + }, + { + "x": 67.17, + "y": 11.02 + }, + { + "x": 67.88, + "y": 9.75 + }, + { + "x": 68.92, + "y": 10.35 + }, + { + "x": 68.42, + "y": 9.28 + }, + { + "x": 67.57, + "y": 8.96 + }, + { + "x": 68, + "y": 8.25 + }, + { + "x": 68.67, + "y": 9 + }, + { + "x": 68.68, + "y": 7.31 + }, + { + "x": 69.19, + "y": 7.9 + }, + { + "x": 69.79, + "y": 7.35 + }, + { + "x": 69.46, + "y": 8.2 + }, + { + "x": 69.89, + "y": 8.37 + }, + { + "x": 70.13, + "y": 7.8 + }, + { + "x": 70.39, + "y": 8.9 + }, + { + "x": 70.73, + "y": 7.31 + }, + { + "x": 71.21, + "y": 7.77 + }, + { + "x": 70.94, + "y": 8.47 + }, + { + "x": 71.56, + "y": 8.01 + }, + { + "x": 72.31, + "y": 8.28 + }, + { + "x": 69.91, + "y": 11.34 + }, + { + "x": 70.39, + "y": 11.14 + }, + { + "x": 69.87, + "y": 11.46 + }, + { + "x": 70.51, + "y": 11.74 + }, + { + "x": 69.93, + "y": 12.55 + }, + { + "x": 70.27, + "y": 12.99 + }, + { + "x": 69.64, + "y": 13.64 + }, + { + "x": 69.71, + "y": 15.01 + }, + { + "x": 69.97, + "y": 14.27 + }, + { + "x": 70.02, + "y": 14.86 + }, + { + "x": 70.41, + "y": 14.7 + }, + { + "x": 71.22, + "y": 13.07 + }, + { + "x": 70.94, + "y": 12.7 + }, + { + "x": 74.24, + "y": 7.54 + }, + { + "x": 74.46, + "y": 9.37 + }, + { + "x": 73.48, + "y": 10.12 + }, + { + "x": 74.36, + "y": 10.18 + }, + { + "x": 73.94, + "y": 12.52 + }, + { + "x": 74.8, + "y": 11.54 + }, + { + "x": 75.62, + "y": 11.63 + }, + { + "x": 75.31, + "y": 10.67 + }, + { + "x": 76.08, + "y": 10.65 + }, + { + "x": 75.64, + "y": 9.43 + }, + { + "x": 76.26, + "y": 9.31 + }, + { + "x": 76.24, + "y": 8.62 + }, + { + "x": 77.1, + "y": 8.78 + }, + { + "x": 75.71, + "y": 7.53 + }, + { + "x": 76.31, + "y": 7.6 + }, + { + "x": 76.04, + "y": 6.87 + }, + { + "x": 76.89, + "y": 7.49 + }, + { + "x": 77.16, + "y": 6 + }, + { + "x": 77.36, + "y": 6.59 + }, + { + "x": 78.37, + "y": 6.75 + }, + { + "x": 78.73, + "y": 6.37 + }, + { + "x": 78.72, + "y": 7.25 + }, + { + "x": 79.69, + "y": 7.34 + }, + { + "x": 78.89, + "y": 8.87 + }, + { + "x": 77.47, + "y": 8.9 + }, + { + "x": 77.51, + "y": 9.31 + }, + { + "x": 78.51, + "y": 9.37 + }, + { + "x": 77.16, + "y": 10.47 + }, + { + "x": 78.99, + "y": 9.65 + }, + { + "x": 77.72, + "y": 11.52 + }, + { + "x": 77.82, + "y": 11.98 + }, + { + "x": 77.99, + "y": 11.46 + }, + { + "x": 78.67, + "y": 11.34 + }, + { + "x": 78.5, + "y": 11.86 + }, + { + "x": 79.09, + "y": 11.22 + }, + { + "x": 78.6, + "y": 12.36 + }, + { + "x": 78.62, + "y": 14.42 + }, + { + "x": 78.18, + "y": 14.95 + }, + { + "x": 78.76, + "y": 14.27 + }, + { + "x": 78.84, + "y": 12.09 + }, + { + "x": 79.24, + "y": 11.43 + }, + { + "x": 79.57, + "y": 11.8 + }, + { + "x": 79.28, + "y": 10.87 + }, + { + "x": 80.38, + "y": 8.2 + }, + { + "x": 81.19, + "y": 8.13 + }, + { + "x": 82.1, + "y": 8.96 + }, + { + "x": 81.82, + "y": 10.08 + }, + { + "x": 82.93, + "y": 9.3 + }, + { + "x": 82.87, + "y": 10.36 + }, + { + "x": 84.07, + "y": 9.59 + }, + { + "x": 84.05, + "y": 10.12 + }, + { + "x": 84.75, + "y": 10.56 + }, + { + "x": 83.78, + "y": 11.05 + }, + { + "x": 85.19, + "y": 10.88 + }, + { + "x": 86.77, + "y": 12.49 + }, + { + "x": 86.81, + "y": 13.18 + }, + { + "x": 85.32, + "y": 13.48 + }, + { + "x": 84.22, + "y": 14.95 + }, + { + "x": 79.88, + "y": 14.08 + }, + { + "x": 80.27, + "y": 14.15 + }, + { + "x": 79.92, + "y": 14.65 + }, + { + "x": 80.54, + "y": 14.72 + }, + { + "x": 80.21, + "y": 14.83 + }, + { + "x": 82.89, + "y": 15.79 + }, + { + "x": 81.98, + "y": 16.69 + }, + { + "x": 83.05, + "y": 16.3 + }, + { + "x": 82.33, + "y": 18.3 + }, + { + "x": 83.86, + "y": 17.37 + }, + { + "x": 83.6, + "y": 18.09 + }, + { + "x": 83.97, + "y": 17.66 + }, + { + "x": 84.3, + "y": 18.09 + }, + { + "x": 84.24, + "y": 16.53 + }, + { + "x": 84.59, + "y": 16.47 + }, + { + "x": 84.72, + "y": 18.2 + }, + { + "x": 85.13, + "y": 17.03 + }, + { + "x": 85.79, + "y": 17.42 + }, + { + "x": 86.14, + "y": 17.13 + }, + { + "x": 86.39, + "y": 18.21 + }, + { + "x": 86.3, + "y": 19.25 + }, + { + "x": 85.9, + "y": 19.43 + }, + { + "x": 84.11, + "y": 18.52 + }, + { + "x": 84.43, + "y": 19.13 + }, + { + "x": 84.12, + "y": 20.07 + }, + { + "x": 83.63, + "y": 20.68 + }, + { + "x": 82.02, + "y": 21.19 + }, + { + "x": 81.14, + "y": 23.3 + }, + { + "x": 80.47, + "y": 22.74 + }, + { + "x": 81.93, + "y": 19.89 + }, + { + "x": 81.37, + "y": 18.28 + }, + { + "x": 79.28, + "y": 17.16 + }, + { + "x": 77.77, + "y": 14.92 + }, + { + "x": 77.05, + "y": 15.03 + }, + { + "x": 75.61, + "y": 16.34 + }, + { + "x": 73.92, + "y": 16.21 + }, + { + "x": 73.07, + "y": 17.86 + }, + { + "x": 72.53, + "y": 18.08 + }, + { + "x": 71.77, + "y": 21.85 + }, + { + "x": 71.94, + "y": 23.63 + }, + { + "x": 71.47, + "y": 24.56 + }, + { + "x": 70.27, + "y": 25.04 + }, + { + "x": 70.07, + "y": 26.32 + }, + { + "x": 69.43, + "y": 27.02 + }, + { + "x": 66.68, + "y": 25.01 + }, + { + "x": 66.14, + "y": 25.8 + }, + { + "x": 64.63, + "y": 26.55 + }, + { + "x": 64.12, + "y": 26.02 + }, + { + "x": 62.41, + "y": 25.82 + }, + { + "x": 60.24, + "y": 21.43 + }, + { + "x": 59.32, + "y": 21.27 + }, + { + "x": 58.72, + "y": 21.69 + }, + { + "x": 58.64, + "y": 23.29 + }, + { + "x": 57.64, + "y": 22.8 + }, + { + "x": 57.38, + "y": 23.29 } ] ] diff --git a/frontend/data/outlines/switzerland.json b/frontend/data/outlines/switzerland.json index 09c1187..30ce588 100644 --- a/frontend/data/outlines/switzerland.json +++ b/frontend/data/outlines/switzerland.json @@ -9,317 +9,781 @@ }, "outline": { "type": "Polygon", - "bounds": { + "geoBounds": { "minLon": 5.954809204000128, "maxLon": 10.466626831000013, "minLat": 45.82071848599999, "maxLat": 47.801166077000076 }, + "projectedBounds": { + "minX": 0.103931, + "maxX": 0.182677, + "minY": 0.901778, + "maxY": 0.952291 + }, + "projection": { + "padding": 6, + "scale": 1117.516047, + "xOffset": 6, + "yOffset": 21.775893 + }, "rings": [ [ { - "x": 99.72, - "y": 47.3 + "x": 93.75, + "y": 48.73 }, { - "x": 97.84, - "y": 57 + "x": 93.04, + "y": 50.6 }, { - "x": 99.5, - "y": 63.8 + "x": 93.26, + "y": 51.83 }, { - "x": 96.2, - "y": 63.12 + "x": 92.1, + "y": 54.2 }, { - "x": 93.92, - "y": 59.3 + "x": 92.62, + "y": 55.16 }, { - "x": 90.38, - "y": 64.04 + "x": 93.85, + "y": 55.59 }, { - "x": 90.24, - "y": 68.41 + "x": 93.56, + "y": 58.03 }, { - "x": 92.78, - "y": 70.6 + "x": 90.66, + "y": 57.65 }, { - "x": 92.27, - "y": 79.28 + "x": 89.48, + "y": 56.96 }, { - "x": 90.6, - "y": 79.81 + "x": 89.15, + "y": 55.49 }, { - "x": 87.85, - "y": 72.21 + "x": 86.61, + "y": 56.13 }, { - "x": 83.45, - "y": 73.23 + "x": 85.54, + "y": 58.16 }, { - "x": 82.44, - "y": 76.21 + "x": 85.76, + "y": 60.03 }, { - "x": 79.38, - "y": 75.87 + "x": 85.41, + "y": 60.62 }, { - "x": 77.13, + "x": 87.64, + "y": 61.84 + }, + { + "x": 86.7, + "y": 63.68 + }, + { + "x": 88, + "y": 65.81 + }, + { + "x": 87.2, + "y": 66.7 + }, + { + "x": 85.73, + "y": 67 + }, + { + "x": 85.52, + "y": 65.88 + }, + { + "x": 84.46, + "y": 64.81 + }, + { + "x": 84.2, + "y": 63.17 + }, + { + "x": 83.31, + "y": 62.74 + }, + { + "x": 80.38, + "y": 63.66 + }, + { + "x": 79.44, + "y": 63.31 + }, + { + "x": 79.21, + "y": 64.42 + }, + { + "x": 78.55, + "y": 64.98 + }, + { + "x": 75.86, + "y": 64.79 + }, + { + "x": 74.06, + "y": 62.63 + }, + { + "x": 73.87, + "y": 59.14 + }, + { + "x": 72.9, + "y": 60.05 + }, + { + "x": 71.85, + "y": 59.05 + }, + { + "x": 70.53, + "y": 59.52 + }, + { + "x": 70.04, + "y": 60.89 + }, + { + "x": 70.76, + "y": 63.87 + }, + { + "x": 69.78, + "y": 66.69 + }, + { + "x": 68.58, + "y": 68.35 + }, + { + "x": 67.16, + "y": 69.31 + }, + { + "x": 66.55, + "y": 71.46 + }, + { + "x": 65.35, + "y": 72.41 + }, + { + "x": 65.7, + "y": 73.39 + }, + { + "x": 65.01, + "y": 74.2 + }, + { + "x": 66.63, + "y": 76.03 + }, + { + "x": 65.44, + "y": 78.22 + }, + { + "x": 63.44, + "y": 78.07 + }, + { + "x": 63.68, + "y": 76.47 + }, + { + "x": 62.88, + "y": 74.68 + }, + { + "x": 60.87, + "y": 73.67 + }, + { + "x": 62.16, + "y": 71.33 + }, + { + "x": 61.67, + "y": 70.68 + }, + { + "x": 60.01, + "y": 70.12 + }, + { + "x": 59.1, + "y": 70.51 + }, + { + "x": 57.63, + "y": 69.75 + }, + { + "x": 55.84, + "y": 67.35 + }, + { + "x": 54.44, + "y": 66.58 + }, + { + "x": 54.15, + "y": 65.43 + }, + { + "x": 54.58, + "y": 61.58 + }, + { + "x": 54.24, + "y": 60.55 + }, + { + "x": 53.68, + "y": 60.45 + }, + { + "x": 52.06, + "y": 60.97 + }, + { + "x": 51.38, + "y": 62.77 + }, + { + "x": 49.65, + "y": 64.49 + }, + { + "x": 47.59, + "y": 65.55 + }, + { + "x": 47.32, + "y": 66.06 + }, + { + "x": 48.42, + "y": 67.68 + }, + { + "x": 48.05, + "y": 69.63 + }, + { + "x": 46.38, + "y": 70.64 + }, + { + "x": 45.61, + "y": 73.22 + }, + { + "x": 43.62, + "y": 73.93 + }, + { + "x": 42.6, + "y": 75.6 + }, + { + "x": 39.92, + "y": 75.2 + }, + { + "x": 38.93, + "y": 74.14 + }, + { + "x": 36.94, + "y": 73.64 + }, + { + "x": 33.44, + "y": 75.78 + }, + { + "x": 31.98, + "y": 75.63 + }, + { + "x": 29.38, + "y": 76.66 + }, + { + "x": 27.69, + "y": 76.28 + }, + { + "x": 26.68, + "y": 75.07 + }, + { + "x": 26.15, + "y": 73.39 + }, + { + "x": 24.73, + "y": 71.83 + }, + { + "x": 23.48, + "y": 71.8 + }, + { + "x": 23.84, + "y": 70.04 + }, + { + "x": 21.98, + "y": 69.41 + }, + { + "x": 21.99, + "y": 67.97 + }, + { + "x": 23.02, + "y": 65.61 + }, + { + "x": 21.52, + "y": 63.47 + }, + { + "x": 22.23, + "y": 61.53 + }, + { + "x": 18.85, + "y": 60.34 + }, + { + "x": 16.3, + "y": 60.55 + }, + { + "x": 14.64, + "y": 61.7 + }, + { + "x": 12.76, + "y": 62.08 + }, + { + "x": 11.06, + "y": 64.32 + }, + { + "x": 11.52, + "y": 65.66 + }, + { + "x": 12.27, "y": 65.79 }, { - "x": 73.33, - "y": 66.45 + "x": 12.37, + "y": 66.44 }, { - "x": 72.48, - "y": 79.27 + "x": 8.99, + "y": 69.3 }, { - "x": 67.44, - "y": 89.54 + "x": 7.43, + "y": 69.04 }, { - "x": 67.55, - "y": 100 + "x": 6.08, + "y": 69.53 }, { - "x": 65.28, - "y": 99.71 + "x": 6.55, + "y": 68.39 }, { - "x": 64.63, - "y": 93.62 + "x": 6.07, + "y": 67.24 }, { - "x": 62.35, - "y": 91.8 + "x": 8.63, + "y": 66.27 }, { - "x": 63.26, - "y": 86.42 + "x": 9.54, + "y": 63.08 }, { - "x": 58.67, - "y": 84.75 + "x": 8.99, + "y": 62.03 }, { - "x": 55.04, - "y": 79.06 + "x": 7.94, + "y": 61.38 }, { - "x": 54.18, - "y": 68.12 + "x": 8.13, + "y": 59.91 }, { - "x": 47.27, - "y": 77.22 + "x": 9.72, + "y": 57.63 }, { - "x": 47.78, - "y": 84.54 + "x": 9.19, + "y": 56.73 }, { - "x": 41.59, - "y": 95.27 + "x": 15.25, + "y": 51.69 }, { - "x": 35.16, - "y": 91.75 + "x": 15.51, + "y": 46.46 }, { - "x": 31.18, - "y": 95.6 + "x": 18.56, + "y": 45.25 }, { - "x": 24.65, - "y": 96.49 + "x": 19.86, + "y": 44.25 }, { - "x": 18.16, - "y": 84.14 + "x": 20.33, + "y": 42.62 }, { - "x": 18.45, - "y": 70.03 + "x": 25.53, + "y": 37.83 }, { - "x": 14.6, - "y": 67.93 + "x": 25.58, + "y": 36.53 }, { - "x": 7.69, - "y": 71.03 + "x": 27.1, + "y": 35.41 }, { - "x": 5.75, - "y": 75.02 + "x": 26.46, + "y": 34.3 }, { - "x": 7.23, - "y": 78.83 + "x": 23.78, + "y": 34.7 }, { - "x": 3.39, - "y": 83.95 + "x": 24.94, + "y": 32.66 }, { - "x": 0.09, - "y": 84.36 + "x": 26.21, + "y": 31.87 }, { - "x": 4.02, - "y": 72.8 + "x": 25.86, + "y": 30.81 }, { - "x": 2.2, - "y": 69.77 + "x": 29.91, + "y": 30.83 }, { - "x": 3.63, - "y": 61.49 + "x": 29.67, + "y": 32.12 }, { - "x": 10.51, - "y": 52.53 + "x": 31.03, + "y": 32.9 }, { - "x": 10.81, - "y": 43.27 + "x": 34.31, + "y": 32.28 }, { - "x": 15.75, - "y": 39.38 + "x": 34.76, + "y": 31.5 }, { - "x": 23.98, - "y": 23.82 + "x": 34.47, + "y": 30.78 }, { - "x": 23.25, - "y": 21.86 + "x": 35.84, + "y": 30.7 }, { - "x": 20.21, - "y": 22.57 + "x": 35.69, + "y": 30.07 }, { - "x": 22.57, - "y": 15.76 + "x": 36.24, + "y": 29.54 }, { - "x": 27.17, - "y": 15.8 + "x": 35.8, + "y": 29.27 }, { - "x": 28.44, - "y": 19.41 + "x": 38.81, + "y": 27.75 }, { - "x": 32.17, - "y": 18.33 + "x": 39.25, + "y": 27.7 }, { - "x": 37.28, - "y": 10.41 + "x": 39, + "y": 28.43 }, { - "x": 38.31, - "y": 12.97 + "x": 38.28, + "y": 28.63 }, { - "x": 41.33, - "y": 10.39 + "x": 39.72, + "y": 29.22 }, { - "x": 46.27, - "y": 12.15 + "x": 41.34, + "y": 28.88 }, { - "x": 50.49, - "y": 9.05 + "x": 42.37, + "y": 27.74 }, { - "x": 57.76, - "y": 10.69 + "x": 43.9, + "y": 27.96 }, { - "x": 58.79, - "y": 7.32 + "x": 44.18, + "y": 28.75 }, { - "x": 54, - "y": 6.85 + "x": 46.71, + "y": 28.75 }, { - "x": 57.7, - "y": 0 + "x": 50.43, + "y": 26.97 }, { - "x": 61.14, - "y": 2.21 + "x": 51.52, + "y": 27.15 }, { - "x": 61.22, - "y": 5.38 + "x": 51.87, + "y": 27.83 }, { - "x": 63.01, - "y": 4.1 + "x": 52.8, + "y": 28.15 }, { - "x": 65.41, - "y": 7.54 + "x": 54.64, + "y": 28.06 }, { - "x": 71.56, - "y": 6.6 + "x": 54.9, + "y": 27.43 }, { - "x": 79.63, - "y": 13.46 + "x": 56.08, + "y": 26.97 }, { - "x": 81.89, - "y": 19.77 + "x": 56.83, + "y": 27.91 }, { - "x": 78.07, - "y": 37.23 + "x": 57.74, + "y": 25.98 }, { - "x": 86.51, - "y": 39.67 + "x": 56.97, + "y": 25.78 }, { - "x": 86.89, - "y": 44.12 + "x": 54.83, + "y": 26.45 }, { - "x": 92.12, - "y": 48.17 + "x": 53.52, + "y": 25.71 }, { - "x": 97.93, - "y": 40.64 + "x": 53.54, + "y": 24.72 }, { - "x": 99.66, - "y": 46.22 + "x": 54.43, + "y": 24.04 }, { - "x": 99.72, - "y": 47.3 + "x": 54.93, + "y": 22.86 + }, + { + "x": 56.65, + "y": 22.41 + }, + { + "x": 56.78, + "y": 21.78 + }, + { + "x": 57.62, + "y": 21.97 + }, + { + "x": 57.93, + "y": 23.05 + }, + { + "x": 58.45, + "y": 22.07 + }, + { + "x": 59.19, + "y": 23.01 + }, + { + "x": 59.8, + "y": 23.05 + }, + { + "x": 59.88, + "y": 24.87 + }, + { + "x": 60.91, + "y": 24.85 + }, + { + "x": 60.92, + "y": 24.11 + }, + { + "x": 61.45, + "y": 24.13 + }, + { + "x": 63.09, + "y": 25.98 + }, + { + "x": 64.33, + "y": 26.03 + }, + { + "x": 65.72, + "y": 25.32 + }, + { + "x": 70.72, + "y": 26.16 + }, + { + "x": 76.07, + "y": 29.5 + }, + { + "x": 76.79, + "y": 31.05 + }, + { + "x": 78.08, + "y": 31.88 + }, + { + "x": 77.87, + "y": 33.54 + }, + { + "x": 74.9, + "y": 38.84 + }, + { + "x": 75.39, + "y": 41.77 + }, + { + "x": 74.7, + "y": 43.03 + }, + { + "x": 78.44, + "y": 43.25 + }, + { + "x": 82.13, + "y": 44.42 + }, + { + "x": 82.46, + "y": 46.94 + }, + { + "x": 87.07, + "y": 49.23 + }, + { + "x": 88.83, + "y": 48.67 + }, + { + "x": 89.48, + "y": 47.05 + }, + { + "x": 90.67, + "y": 47.07 + }, + { + "x": 91.02, + "y": 45.88 + }, + { + "x": 92.18, + "y": 44.97 + }, + { + "x": 93.84, + "y": 46.67 + }, + { + "x": 93.7, + "y": 48.13 + }, + { + "x": 93.75, + "y": 48.73 } ] ] diff --git a/frontend/game.html b/frontend/game.html index 90f225f..91fa79d 100644 --- a/frontend/game.html +++ b/frontend/game.html @@ -114,7 +114,10 @@ Clear + diff --git a/frontend/package.json b/frontend/package.json index a757b0c..a0d6134 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,7 +9,8 @@ "scripts": { "format": "biome format --write", "lint": "biome lint", - "lint:fix": "biome lint --write" + "lint:fix": "biome lint --write", + "test:scoring": "node scripts/scoring.test.mjs" }, "devDependencies": { "@biomejs/biome": "2.3.14" diff --git a/frontend/scripts/countries.js b/frontend/scripts/countries.js index 8fb9af3..9bc8a28 100644 --- a/frontend/scripts/countries.js +++ b/frontend/scripts/countries.js @@ -1,115 +1,127 @@ -// countries.js — country data and helpers +// countries.js - country data and helpers /** + * @typedef {{ name: string, lon: number, lat: number }} CitySource * @typedef {{ name: string, x: number, y: number }} City - * @typedef {{ name: string, hint: string, cities: City[] }} Country + * @typedef {{ minLon: number, maxLon: number, minLat: number, maxLat: number }} Bounds + * @typedef {{ minX: number, maxX: number, minY: number, maxY: number }} ProjectedBounds + * @typedef {{ padding: number, scale: number, xOffset: number, yOffset: number }} Projection + * @typedef {{ type: string, geoBounds?: Bounds, projectedBounds?: ProjectedBounds, bounds?: Bounds, projection?: Projection, rings: { x: number, y: number }[][] }} CountryOutline + * @typedef {{ name: string, hint: string, file: string, cities: CitySource[] }} CountrySource + * @typedef {{ name: string, hint: string, cities: City[], outline: CountryOutline }} Country */ -/** @type {Country[]} */ -const COUNTRIES_DATA = [ - { - name: "Switzerland", - hint: "Alpine country in Central Europe", - cities: [ - { name: "Bern", x: 48, y: 58 }, - { name: "Zürich", x: 58, y: 38 }, - { name: "Geneva", x: 22, y: 72 }, - ], - }, - { - name: "Norway", - hint: "Scandinavian country with long coastline", - cities: [ - { name: "Oslo", x: 55, y: 72 }, - { name: "Bergen", x: 32, y: 60 }, - { name: "Tromsø", x: 62, y: 18 }, - ], - }, - { - name: "Italy", - hint: "Boot-shaped peninsula in Southern Europe", - cities: [ - { name: "Rome", x: 52, y: 58 }, - { name: "Milan", x: 42, y: 22 }, - { name: "Naples", x: 58, y: 72 }, - ], - }, - { - name: "Japan", - hint: "Island nation in East Asia", - cities: [ - { name: "Tokyo", x: 72, y: 48 }, - { name: "Osaka", x: 58, y: 58 }, - { name: "Sapporo", x: 70, y: 22 }, - ], - }, - { - name: "Brazil", - hint: "Largest country in South America", - cities: [ - { name: "Brasília", x: 58, y: 52 }, - { name: "São Paulo", x: 60, y: 68 }, - { name: "Manaus", x: 38, y: 38 }, - ], - }, - { - name: "Australia", - hint: "Continent and country in the Southern Hemisphere", - cities: [ - { name: "Canberra", x: 72, y: 72 }, - { name: "Sydney", x: 78, y: 68 }, - { name: "Perth", x: 22, y: 65 }, - ], - }, - { - name: "France", - hint: "Western Europe, roughly hexagonal shape", - cities: [ - { name: "Paris", x: 50, y: 32 }, - { name: "Lyon", x: 58, y: 55 }, - { name: "Marseille", x: 58, y: 72 }, - ], - }, - { - name: "India", - hint: "Large peninsula in South Asia", - cities: [ - { name: "New Delhi", x: 46, y: 28 }, - { name: "Mumbai", x: 32, y: 55 }, - { name: "Chennai", x: 52, y: 72 }, - ], - }, - { - name: "Canada", - hint: "Second largest country in the world", - cities: [ - { name: "Ottawa", x: 62, y: 52 }, - { name: "Vancouver", x: 22, y: 55 }, - { name: "Toronto", x: 60, y: 58 }, - ], - }, - { - name: "Germany", - hint: "Central European country", - cities: [ - { name: "Berlin", x: 58, y: 28 }, - { name: "Munich", x: 48, y: 68 }, - { name: "Hamburg", x: 42, y: 18 }, - ], - }, -]; +const MAX_MERCATOR_LAT = 85.05112878; /** @type {Country[]} */ let data = []; /** - * Load country data into memory. Safe to call multiple times. - * Returns a Promise for future compatibility with a real API fetch. + * Load country data and outlines into memory. Safe to call multiple times. * @returns {Promise} */ -export function loadCountries() { - if (!data.length) data = COUNTRIES_DATA; - return Promise.resolve(data); +export async function loadCountries() { + if (data.length) return data; + + const countries = await loadCountrySources(); + data = await Promise.all( + countries.map(async (country) => { + const response = await fetch( + new URL(`../data/outlines/${country.file}`, import.meta.url), + ); + if (!response.ok) { + throw new Error(`Could not load outline for ${country.name}.`); + } + + const outlineData = await response.json(); + const outline = outlineData.outline; + return { + name: country.name, + hint: country.hint, + cities: projectCities(country.cities, outline), + outline, + }; + }), + ); + return data; +} + +/** + * Load and validate country metadata from managed JSON. + * @returns {Promise} + */ +async function loadCountrySources() { + const response = await fetch(new URL("../data/countries.json", import.meta.url)); + if (!response.ok) { + throw new Error("Could not load country metadata."); + } + + const countries = await response.json(); + if (!Array.isArray(countries)) { + throw new Error("Country metadata must be an array."); + } + + return countries.map(validateCountrySource); +} + +/** + * @param {unknown} value + * @param {number} index + * @returns {CountrySource} + */ +function validateCountrySource(value, index) { + if (!value || typeof value !== "object") { + throw new Error(`Country metadata entry ${index + 1} must be an object.`); + } + + const country = /** @type {Record} */ (value); + if (typeof country.name !== "string" || country.name.trim() === "") { + throw new Error(`Country metadata entry ${index + 1} is missing a name.`); + } + if (typeof country.file !== "string" || country.file.trim() === "") { + throw new Error(`Country metadata entry ${country.name} is missing a file.`); + } + if (!Array.isArray(country.cities)) { + throw new Error(`Country metadata entry ${country.name} is missing cities.`); + } + + return { + name: country.name, + file: country.file, + hint: typeof country.hint === "string" ? country.hint : "", + cities: country.cities.map((city, cityIndex) => + validateCitySource(city, country.name, cityIndex), + ), + }; +} + +/** + * @param {unknown} value + * @param {string} countryName + * @param {number} index + * @returns {CitySource} + */ +function validateCitySource(value, countryName, index) { + if (!value || typeof value !== "object") { + throw new Error(`City ${index + 1} for ${countryName} must be an object.`); + } + + const city = /** @type {Record} */ (value); + if (typeof city.name !== "string" || city.name.trim() === "") { + throw new Error(`City ${index + 1} for ${countryName} is missing a name.`); + } + if (typeof city.lon !== "number" || !Number.isFinite(city.lon)) { + throw new Error(`${city.name} for ${countryName} is missing a numeric lon.`); + } + if (typeof city.lat !== "number" || !Number.isFinite(city.lat)) { + throw new Error(`${city.name} for ${countryName} is missing a numeric lat.`); + } + + return { + name: city.name, + lon: city.lon, + lat: city.lat, + }; } /** @@ -130,3 +142,86 @@ export function getCities(countryName) { const country = data.find((c) => c.name === countryName); return country ? country.cities : []; } + +/** + * @param {CitySource[]} cities + * @param {CountryOutline} outline + * @returns {City[]} + */ +function projectCities(cities, outline) { + const { bounds, geoBounds, projectedBounds, projection } = outline; + if (projectedBounds && projection) { + return cities.map((city) => { + const projected = mercatorProject(city.lon, city.lat); + return { + name: city.name, + x: clampPercent(projectProjectedX(projected.x, projectedBounds, projection)), + y: clampPercent(projectProjectedY(projected.y, projectedBounds, projection)), + }; + }); + } + + if (!bounds && !geoBounds) return []; + const fallbackBounds = bounds || geoBounds; + if (!fallbackBounds) return []; + const lonSpan = fallbackBounds.maxLon - fallbackBounds.minLon; + const latSpan = fallbackBounds.maxLat - fallbackBounds.minLat; + + return cities.map((city) => ({ + name: city.name, + x: clampPercent( + lonSpan === 0 ? 50 : ((city.lon - fallbackBounds.minLon) / lonSpan) * 100, + ), + y: clampPercent( + latSpan === 0 + ? 50 + : (1 - (city.lat - fallbackBounds.minLat) / latSpan) * 100, + ), + })); +} + +/** + * @param {number} lon + * @param {number} lat + * @returns {{ x: number, y: number }} + */ +function mercatorProject(lon, lat) { + const clampedLat = Math.max( + -MAX_MERCATOR_LAT, + Math.min(MAX_MERCATOR_LAT, lat), + ); + const lonRad = (lon * Math.PI) / 180; + const latRad = (clampedLat * Math.PI) / 180; + + return { + x: lonRad, + y: Math.log(Math.tan(Math.PI / 4 + latRad / 2)), + }; +} + +/** + * @param {number} x + * @param {ProjectedBounds} bounds + * @param {Projection} projection + */ +function projectProjectedX(x, bounds, projection) { + return projection.scale === 0 + ? 50 + : projection.xOffset + (x - bounds.minX) * projection.scale; +} + +/** + * @param {number} y + * @param {ProjectedBounds} bounds + * @param {Projection} projection + */ +function projectProjectedY(y, bounds, projection) { + return projection.scale === 0 + ? 50 + : projection.yOffset + (bounds.maxY - y) * projection.scale; +} + +/** @param {number} value */ +function clampPercent(value) { + return Math.max(0, Math.min(100, Math.round(value * 100) / 100)); +} diff --git a/frontend/scripts/drawing.js b/frontend/scripts/drawing.js index b36a810..ba0d232 100644 --- a/frontend/scripts/drawing.js +++ b/frontend/scripts/drawing.js @@ -7,9 +7,13 @@ let ctx; let isDrawing = false; /** @type {{ x: number, y: number }[]} */ -let points = []; +let currentStroke = []; +/** @type {{ x: number, y: number }[][]} */ +let strokes = []; /** @type {{ name: string, x: number, y: number }[]} */ let cities = []; +/** @type {{ rings: { x: number, y: number }[][] } | null} */ +let referenceOutline = null; const STROKE_COLOR = "#1a7fc4"; const STROKE_WIDTH = 2.5; @@ -57,7 +61,8 @@ function onDown(e) { e.preventDefault(); isDrawing = true; const p = pos(e); - points.push(p); + currentStroke = [p]; + strokes.push(currentStroke); ctx.beginPath(); ctx.moveTo(p.x, p.y); } @@ -67,7 +72,7 @@ function onMove(e) { if (!isDrawing) return; e.preventDefault(); const p = pos(e); - points.push(p); + currentStroke.push(p); ctx.lineTo(p.x, p.y); ctx.strokeStyle = STROKE_COLOR; ctx.lineWidth = STROKE_WIDTH; @@ -80,12 +85,15 @@ function onMove(e) { function onUp(e) { if (!isDrawing) return; isDrawing = false; + currentStroke = []; e.preventDefault(); } /** Clear the canvas and redraw city markers. */ export function clear() { - points = []; + strokes = []; + currentStroke = []; + referenceOutline = null; if (!ctx) return; const { width, height } = canvas.getBoundingClientRect(); ctx.clearRect(0, 0, width, height); @@ -104,11 +112,10 @@ export function setCities(cityList) { /** Render all city markers with labels. */ function drawCities() { if (!ctx || !cities.length) return; - const { width, height } = canvas.getBoundingClientRect(); + const viewport = getCanvasViewport(); cities.forEach((city) => { - const cx = (city.x / 100) * width; - const cy = (city.y / 100) * height; + const { x: cx, y: cy } = toCanvasPoint(city, viewport); // Dot ctx.beginPath(); @@ -139,31 +146,138 @@ function drawCities() { }); } -/** Redraw the full stroke from stored points. */ +/** Redraw all stored strokes. */ function redraw() { drawCities(); - if (!points.length) return; - ctx.beginPath(); - ctx.strokeStyle = STROKE_COLOR; - ctx.lineWidth = STROKE_WIDTH; - ctx.lineJoin = "round"; - ctx.lineCap = "round"; - points.forEach((p, i) => { - if (i === 0) { - ctx.moveTo(p.x, p.y); - } else { - ctx.lineTo(p.x, p.y); - } - }); - ctx.stroke(); + for (const stroke of strokes) { + if (!stroke.length) continue; + ctx.beginPath(); + ctx.strokeStyle = STROKE_COLOR; + ctx.lineWidth = STROKE_WIDTH; + ctx.lineJoin = "round"; + ctx.lineCap = "round"; + stroke.forEach((p, i) => { + if (i === 0) { + ctx.moveTo(p.x, p.y); + } else { + ctx.lineTo(p.x, p.y); + } + }); + ctx.stroke(); + } + drawReferenceOutline(); } /** - * Return a copy of the current drawn points. + * Return a flattened copy of all drawn points. * @returns {{ x: number, y: number }[]} */ export function getPoints() { - return [...points]; + return strokes.flat(); +} + +/** + * Return drawn points in the same 0-100 space used by country outlines. + * @returns {{ x: number, y: number }[]} + */ +export function getNormalizedPoints() { + return getNormalizedRings().flat(); +} + +/** + * Return drawn strokes in the same 0-100 space used by country outlines. + * @returns {{ x: number, y: number }[][]} + */ +export function getNormalizedRings() { + if (!canvas) return []; + const viewport = getCanvasViewport(); + if (viewport.size === 0) return []; + + return strokes + .map((stroke) => stroke.map((point) => toNormalizedPoint(point, viewport))) + .filter((stroke) => stroke.length > 1); +} + +/** + * Show the reference outline over the player's drawing. + * @param {{ rings: { x: number, y: number }[][] } | null} outline + */ +export function showReferenceOutline(outline) { + referenceOutline = outline; + redraw(); +} + +/** Draw the current reference outline if one is set. */ +function drawReferenceOutline() { + if (!ctx || !referenceOutline?.rings?.length) return; + const viewport = getCanvasViewport(); + if (viewport.size === 0) return; + + ctx.save(); + ctx.strokeStyle = "rgba(224,92,92,0.95)"; + ctx.lineWidth = 2; + ctx.lineJoin = "round"; + ctx.lineCap = "round"; + ctx.setLineDash([8, 5]); + + for (const ring of referenceOutline.rings) { + if (!ring.length) continue; + ctx.beginPath(); + ring.forEach((point, index) => { + const { x, y } = toCanvasPoint(point, viewport); + if (index === 0) { + ctx.moveTo(x, y); + } else { + ctx.lineTo(x, y); + } + }); + ctx.stroke(); + } + + ctx.restore(); +} + +/** + * Return the square drawing viewport used for normalized 0-100 country space. + * @returns {{ x: number, y: number, size: number }} + */ +function getCanvasViewport() { + const { width, height } = canvas.getBoundingClientRect(); + const size = Math.min(width, height); + return { + x: (width - size) / 2, + y: (height - size) / 2, + size, + }; +} + +/** + * @param {{ x: number, y: number }} point + * @param {{ x: number, y: number, size: number }} viewport + * @returns {{ x: number, y: number }} + */ +function toCanvasPoint(point, viewport) { + return { + x: viewport.x + (point.x / 100) * viewport.size, + y: viewport.y + (point.y / 100) * viewport.size, + }; +} + +/** + * @param {{ x: number, y: number }} point + * @param {{ x: number, y: number, size: number }} viewport + * @returns {{ x: number, y: number }} + */ +function toNormalizedPoint(point, viewport) { + return { + x: clampPercent(((point.x - viewport.x) / viewport.size) * 100), + y: clampPercent(((point.y - viewport.y) / viewport.size) * 100), + }; +} + +/** @param {number} value */ +function clampPercent(value) { + return Math.max(0, Math.min(100, Math.round(value * 100) / 100)); } /** Remove event listeners and clean up. */ diff --git a/frontend/scripts/game.js b/frontend/scripts/game.js index aa418b7..b4a863c 100644 --- a/frontend/scripts/game.js +++ b/frontend/scripts/game.js @@ -2,7 +2,13 @@ import { submitScore } from "./api.js"; import { getRandomCountries, loadCountries } from "./countries.js"; -import { clear, getPoints, init as initDrawing, setCities } from "./drawing.js"; +import { + clear, + getNormalizedRings, + init as initDrawing, + setCities, + showReferenceOutline, +} from "./drawing.js"; import { calculateScore, getGrade } from "./scoring.js"; import { getLobbyName, getPlayerName, saveGameState } from "./storage.js"; @@ -25,6 +31,8 @@ let elTimerBar; let elTimerWrap; let elBtnClear; let elBtnSubmit; +let elBtnNext; +let roundSubmitted = false; /** Initialise DOM refs, drawing, events, countries, and the first round. */ async function initGame() { @@ -36,6 +44,7 @@ async function initGame() { elTimerWrap = document.querySelector(".game-timer"); elBtnClear = document.getElementById("btn-clear"); elBtnSubmit = document.getElementById("btn-submit"); + elBtnNext = document.getElementById("btn-next"); const canvas = document.getElementById("draw-canvas"); const wrap = document.getElementById("canvas-wrap"); @@ -48,6 +57,7 @@ async function initGame() { elBtnClear.addEventListener("click", () => clear()); elBtnSubmit.addEventListener("click", () => submitRound(false)); + elBtnNext.addEventListener("click", goToNextRound); await loadCountries(); roundCountries = getRandomCountries(TOTAL_ROUNDS); @@ -67,9 +77,11 @@ function startRound() { updateRoundPips(currentRound + 1); document.getElementById("canvas-wrap")?.classList.remove("has-drawing"); + hideScoreFeedback(); setCities(country.cities || []); clear(); + roundSubmitted = false; timeLeft = ROUND_DURATION; updateTimerUI(); @@ -77,10 +89,12 @@ function startRound() { timerInterval = setInterval(tickTimer, 1000); elBtnSubmit.disabled = false; - elBtnSubmit.textContent = - currentRound < TOTAL_ROUNDS - 1 - ? "Submit & Next Round →" - : "Submit & See Results →"; + elBtnSubmit.hidden = false; + elBtnSubmit.textContent = "Submit"; + elBtnClear.disabled = false; + elBtnNext.disabled = true; + elBtnNext.textContent = + currentRound < TOTAL_ROUNDS - 1 ? "Next Round →" : "See Results →"; } /** Decrement timer by one second and auto-submit when time runs out. */ @@ -109,35 +123,51 @@ function updateTimerUI() { } /** - * Submit the current round, record the score, and advance or finish. + * Submit the current round, record the score, and reveal the reference outline. * @param {boolean} [auto=false] - True when triggered by timer expiry. */ function submitRound(auto = false) { - clearInterval(timerInterval); - elBtnSubmit.disabled = true; + if (roundSubmitted) return; - const points = getPoints(); - const score = calculateScore(points); + clearInterval(timerInterval); + roundSubmitted = true; + elBtnSubmit.disabled = true; + elBtnClear.disabled = true; + + const country = roundCountries[currentRound]; + const rings = getNormalizedRings(); + const score = calculateScore(rings, country.outline); scores.push(score); + showReferenceOutline(country.outline); updateScoreDisplay(currentRound, score); showScoreFeedback(score); - setTimeout( - () => { - if (currentRound < TOTAL_ROUNDS - 1) { - currentRound++; - startRound(); - } else { - finishGame(); - } - }, - auto ? 400 : 1200, - ); + elBtnNext.disabled = false; + elBtnNext.focus(); + if (auto) { + elBtnNext.textContent = + currentRound < TOTAL_ROUNDS - 1 + ? "Time's up - Next Round" + : "Time's up - See Results"; + } +} + +/** Move to the next round or finish the game after a submitted round. */ +function goToNextRound() { + if (!roundSubmitted) return; + + elBtnNext.disabled = true; + if (currentRound < TOTAL_ROUNDS - 1) { + currentRound++; + startRound(); + } else { + finishGame(); + } } /** - * Briefly display the score grade overlay on the canvas. + * Display the score grade overlay on the canvas until the next round starts. * @param {number} score */ function showScoreFeedback(score) { @@ -147,10 +177,13 @@ function showScoreFeedback(score) { el.style.color = grade.color; el.style.opacity = "1"; el.style.transform = "translateY(0)"; - setTimeout(() => { - el.style.opacity = "0"; - el.style.transform = "translateY(-10px)"; - }, 900); +} + +/** Hide the score grade overlay. */ +function hideScoreFeedback() { + const el = document.getElementById("score-feedback"); + el.style.opacity = "0"; + el.style.transform = "translateY(-10px)"; } /** Persist game state, update leaderboard, and navigate to results. */ diff --git a/frontend/scripts/scoring.js b/frontend/scripts/scoring.js index 5e7dc0f..b222952 100644 --- a/frontend/scripts/scoring.js +++ b/frontend/scripts/scoring.js @@ -1,31 +1,69 @@ // scoring.js - accuracy calculation +const GRID_SIZE = 96; +const MIN_DRAWN_POINTS = 10; +const MIN_FILLED_CELLS = 8; + /** - * Calculate a score from the drawn path points. - * NOTE: Currently uses an effort-based approximation. - * TODO: Replace with real polygon comparison (IoU or Hausdorff distance). - * @param {{ x: number, y: number }[]} drawnPoints + * @typedef {{ x: number, y: number }} Point + * @typedef {{ rings: Point[][] }} CountryOutline + */ + +/** + * Calculate a deterministic shape score from a drawn polygon and reference outline. + * @param {Point[] | Point[][]} drawnShape - Points or rings normalized to 0-100 canvas space. + * @param {CountryOutline | undefined | null} referenceOutline * @returns {number} Score between 0 and 100. */ -export function calculateScore(drawnPoints) { - if (!drawnPoints || drawnPoints.length < 10) return 0; - - const effort = Math.min(drawnPoints.length / 300, 1); // 0-1 - const base = 40 + Math.round(effort * 45); // 40-85 - const jitter = Math.round((Math.random() - 0.5) * 14); // +/-7 - return Math.max(0, Math.min(100, base + jitter)); +export function calculateScore(drawnShape, referenceOutline) { + return compareShapes(drawnShape, referenceOutline); } /** - * Compare a drawn polygon against a reference polygon. - * Stub - reserved for future IoU / Hausdorff implementation. - * @param {{ x: number, y: number }[]} _drawnPoints - * @param {{ x: number, y: number }[]} _referencePolygon - Normalised 0-1 coords. + * Compare a drawn polygon against one or more reference rings using rasterized IoU. + * @param {Point[] | Point[][]} drawnShape - Points or rings normalized to 0-100 canvas space. + * @param {CountryOutline | undefined | null} referenceOutline * @returns {number} Score between 0 and 100. */ -export function compareShapes(_drawnPoints, _referencePolygon) { - // TODO: implement real shape comparison - return 0; +export function compareShapes(drawnShape, referenceOutline) { + if (!referenceOutline?.rings?.length) return 0; + + const drawnRings = normalizeDrawnRings(drawnShape); + const referenceRings = referenceOutline.rings.filter(isValidReferenceRing).map(closeRing); + if (!drawnRings.length || !referenceRings.length) return 0; + + let intersection = 0; + let union = 0; + let drawnCells = 0; + + for (let row = 0; row < GRID_SIZE; row++) { + for (let col = 0; col < GRID_SIZE; col++) { + const point = cellCenter(col, row); + const inDrawn = isInsideAnyRing(point, drawnRings); + const inReference = isInsideAnyRing(point, referenceRings); + + if (inDrawn) drawnCells++; + if (inDrawn && inReference) intersection++; + if (inDrawn || inReference) union++; + } + } + + if (drawnCells < MIN_FILLED_CELLS || union === 0) return 0; + return Math.round((intersection / union) * 100); +} + +/** + * @param {Point[] | Point[][]} drawnShape + * @returns {Point[][]} + */ +function normalizeDrawnRings(drawnShape) { + if (!Array.isArray(drawnShape) || !drawnShape.length) return []; + if (isPoint(drawnShape[0])) { + return isValidRing(drawnShape) ? [closeRing(drawnShape)] : []; + } + return drawnShape + .filter(isValidRing) + .map(closeRing); } /** @@ -40,3 +78,79 @@ export function getGrade(score) { if (score >= 40) return { label: "C", color: "#7a9aaa" }; return { label: "D", color: "#e05c5c" }; } + +/** + * @param {number} col + * @param {number} row + * @returns {Point} + */ +function cellCenter(col, row) { + return { + x: ((col + 0.5) / GRID_SIZE) * 100, + y: ((row + 0.5) / GRID_SIZE) * 100, + }; +} + +/** + * @param {Point} point + * @param {Point[][]} rings + */ +function isInsideAnyRing(point, rings) { + return rings.some((ring) => pointInRing(point, ring)); +} + +/** @param {unknown} value */ +function isPoint(value) { + return ( + !!value && + typeof value === "object" && + Number.isFinite(value.x) && + Number.isFinite(value.y) + ); +} + +/** + * @param {Point} point + * @param {Point[]} ring + */ +function pointInRing(point, ring) { + let inside = false; + + for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) { + const a = ring[i]; + const b = ring[j]; + const intersects = + a.y > point.y !== b.y > point.y && + point.x < ((b.x - a.x) * (point.y - a.y)) / (b.y - a.y) + a.x; + + if (intersects) inside = !inside; + } + + return inside; +} + +/** @param {Point[]} ring */ +function isValidRing(ring) { + return ( + Array.isArray(ring) && + ring.length >= MIN_DRAWN_POINTS && + ring.every((point) => Number.isFinite(point.x) && Number.isFinite(point.y)) + ); +} + +/** @param {Point[]} ring */ +function isValidReferenceRing(ring) { + return ( + Array.isArray(ring) && + ring.length >= 4 && + ring.every((point) => Number.isFinite(point.x) && Number.isFinite(point.y)) + ); +} + +/** @param {Point[]} ring */ +function closeRing(ring) { + const first = ring[0]; + const last = ring[ring.length - 1]; + if (first.x === last.x && first.y === last.y) return ring; + return [...ring, { ...first }]; +} diff --git a/frontend/scripts/scoring.test.mjs b/frontend/scripts/scoring.test.mjs new file mode 100644 index 0000000..eb0bb61 --- /dev/null +++ b/frontend/scripts/scoring.test.mjs @@ -0,0 +1,101 @@ +import assert from "node:assert/strict"; +import { calculateScore } from "./scoring.js"; + +const square = [ + { x: 20, y: 20 }, + { x: 40, y: 20 }, + { x: 60, y: 20 }, + { x: 80, y: 20 }, + { x: 80, y: 40 }, + { x: 80, y: 60 }, + { x: 80, y: 80 }, + { x: 60, y: 80 }, + { x: 40, y: 80 }, + { x: 20, y: 80 }, + { x: 20, y: 60 }, + { x: 20, y: 40 }, + { x: 20, y: 20 }, +]; + +const shiftedSquare = square.map((point) => ({ + x: Math.min(100, point.x + 12), + y: point.y, +})); + +const smallSquare = square.map((point) => ({ + x: 35 + (point.x - 20) * 0.5, + y: 35 + (point.y - 20) * 0.5, +})); + +const secondIsland = [ + { x: 5, y: 5 }, + { x: 10, y: 5 }, + { x: 15, y: 5 }, + { x: 15, y: 10 }, + { x: 15, y: 15 }, + { x: 10, y: 15 }, + { x: 5, y: 15 }, + { x: 5, y: 10 }, + { x: 5, y: 7 }, + { x: 5, y: 5 }, + { x: 7, y: 5 }, + { x: 10, y: 5 }, + { x: 5, y: 5 }, +]; + +const firstIsland = [ + { x: 5, y: 70 }, + { x: 12, y: 70 }, + { x: 20, y: 70 }, + { x: 20, y: 77 }, + { x: 20, y: 85 }, + { x: 12, y: 85 }, + { x: 5, y: 85 }, + { x: 5, y: 78 }, + { x: 5, y: 74 }, + { x: 5, y: 70 }, + { x: 8, y: 70 }, + { x: 12, y: 70 }, + { x: 5, y: 70 }, +]; + +const tinyNoise = [ + { x: 90, y: 90 }, + { x: 91, y: 90 }, + { x: 91, y: 91 }, +]; + +assert.equal(calculateScore(square, { rings: [square] }), 100); +assert.equal(calculateScore([], { rings: [square] }), 0); +assert.equal(calculateScore(square.slice(0, 4), { rings: [square] }), 0); +assert.ok(calculateScore(shiftedSquare, { rings: [square] }) < 100); +assert.ok(calculateScore(smallSquare, { rings: [square] }) < 60); +assert.ok(calculateScore(square, { rings: [square, secondIsland] }) >= 95); +assert.ok( + calculateScore([square, secondIsland], { rings: [square, secondIsland] }) >= + 95, +); +assert.equal( + calculateScore([tinyNoise, square], { rings: [square] }), + 100, +); +assert.ok( + calculateScore([firstIsland, secondIsland], { + rings: [firstIsland, secondIsland], + }) > 90, +); +assert.ok( + calculateScore([firstIsland, secondIsland], { + rings: [ + [ + { x: 5, y: 5 }, + { x: 20, y: 5 }, + { x: 20, y: 85 }, + { x: 5, y: 85 }, + { x: 5, y: 5 }, + ], + ], + }) < 50, +); + +console.log("scoring tests passed"); diff --git a/frontend/styles/game.css b/frontend/styles/game.css index fe07931..2e4db1a 100644 --- a/frontend/styles/game.css +++ b/frontend/styles/game.css @@ -141,10 +141,14 @@ grid-template-columns: 1fr 220px; gap: 16px; min-height: 0; + align-items: start; } .canvas-wrap { position: relative; + justify-self: center; + width: min(100%, 68vh); + aspect-ratio: 1; background: var(--white); border: 1.5px solid var(--line); border-radius: var(--r-xl); @@ -284,7 +288,7 @@ } .canvas-wrap { - min-height: 340px; + width: min(100%, 72vh); } .game-topbar { @@ -315,7 +319,7 @@ } .canvas-wrap { - min-height: 280px; + width: 100%; } .game-controls { @@ -334,6 +338,6 @@ font-size: 1.6rem; } .canvas-wrap { - min-height: 240px; + min-height: 0; } } diff --git a/tools/convert-geojson-outlines.js b/tools/convert-geojson-outlines.js index c0b2e2f..1075f40 100644 --- a/tools/convert-geojson-outlines.js +++ b/tools/convert-geojson-outlines.js @@ -4,7 +4,9 @@ import { mkdir, readdir, writeFile } from "node:fs/promises"; import path from "node:path"; import shapefile from "shapefile"; -const DEFAULT_TOLERANCE = 1.5; +const DEFAULT_TOLERANCE = 0.3; +const DEFAULT_PADDING = 6; +const MAX_MERCATOR_LAT = 85.05112878; const SHAPEFILE_BASENAME = "ne_10m_admin_0_countries"; const GAME_COUNTRIES = [ "Switzerland", @@ -18,14 +20,22 @@ const GAME_COUNTRIES = [ "Canada", "Germany", ]; +const COUNTRY_OPTIONS = { + France: { keepLargestRingOnly: true }, + Norway: { keepLargestRingOnly: true }, +}; function usage() { return `Usage: node convert-geojson-outlines.js [options] Options: - --tolerance Douglas-Peucker tolerance in 0..100 units. Default: 1.5 + --tolerance Douglas-Peucker tolerance in 0..100 units. Default: 0.3 + --padding Padding on each side in 0..100 units. Default: 6 --max-points Simplify each ring until it has at most this many points. + --min-ring-area-ratio + Drop rings smaller than this ratio of the largest ring. Default: 0.001 + --mainland-only Keep only the largest ring for every country. --include-holes Include inner rings from Polygon/MultiPolygon geometries. --pretty Write indented JSON instead of compact JSON. `; @@ -35,7 +45,10 @@ function parseArgs(argv) { const positionals = []; const options = { tolerance: DEFAULT_TOLERANCE, + padding: DEFAULT_PADDING, maxPoints: null, + minRingAreaRatio: 0.001, + mainlandOnly: false, includeHoles: false, pretty: false, }; @@ -45,8 +58,14 @@ function parseArgs(argv) { if (arg === "--tolerance") { options.tolerance = Number(argv[++i]); + } else if (arg === "--padding") { + options.padding = Number(argv[++i]); } else if (arg === "--max-points") { options.maxPoints = Number(argv[++i]); + } else if (arg === "--min-ring-area-ratio") { + options.minRingAreaRatio = Number(argv[++i]); + } else if (arg === "--mainland-only") { + options.mainlandOnly = true; } else if (arg === "--include-holes") { options.includeHoles = true; } else if (arg === "--pretty") { @@ -65,11 +84,27 @@ function parseArgs(argv) { if (!Number.isFinite(options.tolerance) || options.tolerance < 0) { throw new Error("--tolerance must be a number greater than or equal to 0."); } + if ( + !Number.isFinite(options.padding) || + options.padding < 0 || + options.padding >= 50 + ) { + throw new Error("--padding must be a number greater than or equal to 0 and less than 50."); + } if ( options.maxPoints !== null && (!Number.isInteger(options.maxPoints) || options.maxPoints < 4) ) { - throw new Error("--max-points must be an integer greater than or equal to 4."); + throw new Error( + "--max-points must be an integer greater than or equal to 4.", + ); + } + if ( + !Number.isFinite(options.minRingAreaRatio) || + options.minRingAreaRatio < 0 || + options.minRingAreaRatio > 1 + ) { + throw new Error("--min-ring-area-ratio must be a number between 0 and 1."); } return { @@ -85,7 +120,10 @@ function stripNulls(value) { function cleanProperties(properties) { return Object.fromEntries( - Object.entries(properties || {}).map(([key, value]) => [key, stripNulls(value)]), + Object.entries(properties || {}).map(([key, value]) => [ + key, + stripNulls(value), + ]), ); } @@ -137,7 +175,47 @@ function cleanRing(ring) { return ring.filter(isValidCoordinate).map(([lon, lat]) => [lon, lat]); } -function getBounds(rings) { +function mercatorProject([lon, lat]) { + const clampedLat = Math.max( + -MAX_MERCATOR_LAT, + Math.min(MAX_MERCATOR_LAT, lat), + ); + const lonRad = (lon * Math.PI) / 180; + const latRad = (clampedLat * Math.PI) / 180; + + return [ + lonRad, + Math.log(Math.tan(Math.PI / 4 + latRad / 2)), + ]; +} + +function ringArea(ring) { + if (!Array.isArray(ring) || ring.length < 4) return 0; + let area = 0; + for (let i = 0; i < ring.length; i++) { + const [x1, y1] = ring[i]; + const [x2, y2] = ring[(i + 1) % ring.length]; + area += x1 * y2 - x2 * y1; + } + return Math.abs(area / 2); +} + +function filterGameplayRings(rings, options) { + const ranked = rings + .map((ring) => ({ ring, area: ringArea(ring) })) + .filter(({ area }) => area > 0) + .sort((a, b) => b.area - a.area); + + if (!ranked.length) return rings; + if (options.mainlandOnly || options.keepLargestRingOnly) { + return [ranked[0].ring]; + } + + const minArea = ranked[0].area * options.minRingAreaRatio; + return ranked.filter(({ area }) => area >= minArea).map(({ ring }) => ring); +} + +function getGeoBounds(rings) { let minLon = Infinity; let maxLon = -Infinity; let minLat = Infinity; @@ -159,18 +237,64 @@ function getBounds(rings) { return { minLon, maxLon, minLat, maxLat }; } +function getProjectedBounds(rings) { + let minX = Infinity; + let maxX = -Infinity; + let minY = Infinity; + let maxY = -Infinity; + + for (const ring of rings) { + for (const [x, y] of ring) { + minX = Math.min(minX, x); + maxX = Math.max(maxX, x); + minY = Math.min(minY, y); + maxY = Math.max(maxY, y); + } + } + + if (![minX, maxX, minY, maxY].every(Number.isFinite)) { + throw new Error("Could not calculate projected bounds from geometry."); + } + + return { minX, maxX, minY, maxY }; +} + function roundCoord(value) { return Math.round(value * 100) / 100; } -function normalizePoint([lon, lat], bounds) { - const lonSpan = bounds.maxLon - bounds.minLon; - const latSpan = bounds.maxLat - bounds.minLat; +function roundMeta(value) { + return Math.round(value * 1_000_000) / 1_000_000; +} + +function createProjection(bounds, padding) { + const xSpan = bounds.maxX - bounds.minX; + const ySpan = bounds.maxY - bounds.minY; + const usableSize = 100 - padding * 2; + const maxSpan = Math.max(xSpan, ySpan); + const scale = maxSpan === 0 ? 0 : usableSize / maxSpan; + const width = xSpan * scale; + const height = ySpan * scale; return { - x: roundCoord(lonSpan === 0 ? 50 : ((lon - bounds.minLon) / lonSpan) * 100), + padding, + scale, + xOffset: (100 - width) / 2, + yOffset: (100 - height) / 2, + }; +} + +function normalizePoint([x, y], bounds, projection) { + return { + x: roundCoord( + projection.scale === 0 + ? 50 + : projection.xOffset + (x - bounds.minX) * projection.scale, + ), y: roundCoord( - latSpan === 0 ? 50 : (1 - (lat - bounds.minLat) / latSpan) * 100, + projection.scale === 0 + ? 50 + : projection.yOffset + (bounds.maxY - y) * projection.scale, ), }; } @@ -205,7 +329,8 @@ function squaredDistanceToSegment(point, start, end) { 0, Math.min( 1, - ((point.x - start.x) * dx + (point.y - start.y) * dy) / (dx * dx + dy * dy), + ((point.x - start.x) * dx + (point.y - start.y) * dy) / + (dx * dx + dy * dy), ), ); const projection = { @@ -224,7 +349,11 @@ function douglasPeucker(points, tolerance) { const lastIndex = points.length - 1; for (let i = 1; i < lastIndex; i++) { - const distance = squaredDistanceToSegment(points[i], points[0], points[lastIndex]); + const distance = squaredDistanceToSegment( + points[i], + points[0], + points[lastIndex], + ); if (distance > maxDistance) { maxDistance = distance; splitIndex = i; @@ -259,17 +388,25 @@ function normalizeGeometry(geometry, options) { throw new Error("No Polygon or MultiPolygon geometry found."); } - const rings = extractRings(geometry, options.includeHoles) - .map(cleanRing) - .filter((ring) => ring.length >= 4); + const geoRings = filterGameplayRings( + extractRings(geometry, options.includeHoles) + .map(cleanRing) + .filter((ring) => ring.length >= 4), + options, + ); - if (!rings.length) { + if (!geoRings.length) { throw new Error("No valid polygon rings found."); } - const bounds = getBounds(rings); - const normalizedRings = rings - .map((ring) => ring.map((point) => normalizePoint(point, bounds))) + const projectedRings = geoRings.map((ring) => ring.map(mercatorProject)); + const geoBounds = getGeoBounds(geoRings); + const projectedBounds = getProjectedBounds(projectedRings); + const projection = createProjection(projectedBounds, options.padding); + const normalizedRings = projectedRings + .map((ring) => + ring.map((point) => normalizePoint(point, projectedBounds, projection)), + ) .map(closeRing) .map((ring) => simplifyRing(ring, options.tolerance, options.maxPoints)) .filter((ring) => ring.length >= 4); @@ -279,8 +416,20 @@ function normalizeGeometry(geometry, options) { } return { - type: geometry.type, - bounds, + type: geoRings.length > 1 ? "MultiPolygon" : "Polygon", + geoBounds, + projectedBounds: { + minX: roundMeta(projectedBounds.minX), + maxX: roundMeta(projectedBounds.maxX), + minY: roundMeta(projectedBounds.minY), + maxY: roundMeta(projectedBounds.maxY), + }, + projection: { + padding: roundMeta(projection.padding), + scale: roundMeta(projection.scale), + xOffset: roundMeta(projection.xOffset), + yOffset: roundMeta(projection.yOffset), + }, rings: normalizedRings, }; } @@ -288,7 +437,10 @@ function normalizeGeometry(geometry, options) { async function findShapefile(inputDir) { const entries = await readdir(inputDir, { withFileTypes: true }); const shpFiles = entries - .filter((entry) => entry.isFile() && path.extname(entry.name).toLowerCase() === ".shp") + .filter( + (entry) => + entry.isFile() && path.extname(entry.name).toLowerCase() === ".shp", + ) .map((entry) => entry.name) .sort((a, b) => a.localeCompare(b)); @@ -305,7 +457,9 @@ async function findShapefile(inputDir) { } async function readTargetFeatures(shpPath, targets) { - const source = await shapefile.open(shpPath, undefined, { encoding: "utf-8" }); + const source = await shapefile.open(shpPath, undefined, { + encoding: "utf-8", + }); const features = new Map(); while (true) { @@ -327,7 +481,17 @@ async function readTargetFeatures(shpPath, targets) { return features; } -async function writeCountryOutline(outputDir, countryName, feature, sourceFile, options) { +async function writeCountryOutline( + outputDir, + countryName, + feature, + sourceFile, + options, +) { + const countryOptions = { + ...options, + ...(COUNTRY_OPTIONS[countryName] || {}), + }; const output = { source: sourceFile, country: { @@ -337,7 +501,7 @@ async function writeCountryOutline(outputDir, countryName, feature, sourceFile, continent: feature.properties.CONTINENT, subregion: feature.properties.SUBREGION, }, - outline: normalizeGeometry(feature.geometry, options), + outline: normalizeGeometry(feature.geometry, countryOptions), }; const fileName = `${slugify(countryName)}.json`; const json = JSON.stringify(output, null, options.pretty ? 2 : 0); @@ -351,7 +515,9 @@ async function main() { const sourceFile = path.basename(shpPath); const targets = new Set(GAME_COUNTRIES); const features = await readTargetFeatures(shpPath, targets); - const missing = GAME_COUNTRIES.filter((countryName) => !features.has(countryName)); + const missing = GAME_COUNTRIES.filter( + (countryName) => !features.has(countryName), + ); if (missing.length) { throw new Error(`Missing country feature(s): ${missing.join(", ")}`);