From 89d4963dde2ef0f8e5066083e18f2dbc1020dd4d Mon Sep 17 00:00:00 2001 From: "a.adell" Date: Tue, 18 Apr 2023 11:21:51 +0200 Subject: [PATCH] Added FiraSans font to symbolization Fixed problems with selection in photograms dialog based on geojson query with regional settings not in english Fixed problems loading Catalonia limit geojsons with regional settings not in english Fixed problems downloading photograms with polygons layer Fixed problems operating with result of photo name search --- .gitignore | 1 + data/cat_rect_limits.geojson | 28 ++-- data/cat_simple_limits.geojson | 16 +-- data/cat_tall25k_limits.geojson | 16 +-- data/cat_tall5k_limits.geojson | 16 +-- .../product_metadata.json | 0 metadata.txt | 13 +- openicgc.py | 133 ++++++++++-------- qlib3/base/pluginbase.py | 11 +- .../photosearchselectiondialog.py | 56 +++++--- resources3/fme.py | 2 +- 11 files changed, 162 insertions(+), 130 deletions(-) rename product_metadata.json => data/product_metadata.json (100%) diff --git a/.gitignore b/.gitignore index 39b6c55..f7f38e3 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ *.lnk *.log distrib +fonts diff --git a/data/cat_rect_limits.geojson b/data/cat_rect_limits.geojson index 9c16ab5..e5b4ac2 100644 --- a/data/cat_rect_limits.geojson +++ b/data/cat_rect_limits.geojson @@ -1,14 +1,14 @@ -{ -"type": "FeatureCollection", -"name": "z", -"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, -"features": [ -{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ -[ 257970, 4751770 ], -[ 257970, 4484840 ], -[ 534760, 4484840 ], -[ 534760, 4751770 ], -[ 257970, 4751770 ] -] ] } } -] -} +{ +"type": "FeatureCollection", +"name": "z", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, +"features": [ +{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ +[ 257970, 4751770 ], +[ 257970, 4484840 ], +[ 534760, 4484840 ], +[ 534760, 4751770 ], +[ 257970, 4751770 ] +] ] } } +] +} diff --git a/data/cat_simple_limits.geojson b/data/cat_simple_limits.geojson index 4079435..8bef307 100644 --- a/data/cat_simple_limits.geojson +++ b/data/cat_simple_limits.geojson @@ -1,8 +1,8 @@ -{ -"type": "FeatureCollection", -"name": "simple", -"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, -"features": [ -{ "type": "Feature", "properties": { "id": 0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 304457.290340574458241, 4758033.341267678886652 ], [ 300160.834704967564903, 4683919.481553458608687 ], [ 283512.069116991071496, 4639880.811288491822779 ], [ 266863.303529014694504, 4608731.507930342108011 ], [ 251825.708804390684236, 4504542.458766875788569 ], [ 295327.322114910115488, 4476078.440180979669094 ], [ 339903.049334330891725, 4505079.515721328556538 ], [ 322717.226791903492995, 4527635.907808261923492 ], [ 445166.212406698206905, 4567378.122437627054751 ], [ 452147.952814559219405, 4582952.774116697721183 ], [ 527335.926437678863294, 4628065.558290572836995 ], [ 534317.666845540050417, 4704864.702777042984962 ], [ 469333.775356986618135, 4713994.671002711169422 ], [ 443555.041543345665559, 4707012.930594847537577 ], [ 388238.175234907655977, 4722050.525319471955299 ], [ 368367.067920226138085, 4741384.575679702684283 ], [ 304457.290340574458241, 4758033.341267678886652 ] ] ] } } -] -} +{ +"type": "FeatureCollection", +"name": "simple", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, +"features": [ +{ "type": "Feature", "properties": { "id": 0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 304457.290340574458241, 4758033.341267678886652 ], [ 300160.834704967564903, 4683919.481553458608687 ], [ 283512.069116991071496, 4639880.811288491822779 ], [ 266863.303529014694504, 4608731.507930342108011 ], [ 251825.708804390684236, 4504542.458766875788569 ], [ 295327.322114910115488, 4476078.440180979669094 ], [ 339903.049334330891725, 4505079.515721328556538 ], [ 322717.226791903492995, 4527635.907808261923492 ], [ 445166.212406698206905, 4567378.122437627054751 ], [ 452147.952814559219405, 4582952.774116697721183 ], [ 527335.926437678863294, 4628065.558290572836995 ], [ 534317.666845540050417, 4704864.702777042984962 ], [ 469333.775356986618135, 4713994.671002711169422 ], [ 443555.041543345665559, 4707012.930594847537577 ], [ 388238.175234907655977, 4722050.525319471955299 ], [ 368367.067920226138085, 4741384.575679702684283 ], [ 304457.290340574458241, 4758033.341267678886652 ] ] ] } } +] +} diff --git a/data/cat_tall25k_limits.geojson b/data/cat_tall25k_limits.geojson index d047d05..ca1fdfd 100644 --- a/data/cat_tall25k_limits.geojson +++ b/data/cat_tall25k_limits.geojson @@ -1,8 +1,8 @@ -{ -"type": "FeatureCollection", -"name": "25k", -"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, -"features": [ -{ "type": "Feature", "properties": { "gid": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 329240.0, 4503660.0 ], [ 329240.0, 4494410.0 ], [ 314920.0, 4494410.0 ], [ 314920.0, 4485500.0 ], [ 300460.0, 4485500.0 ], [ 300460.0, 4485860.0 ], [ 286330.0, 4485860.0 ], [ 286330.0, 4486250.0 ], [ 272210.0, 4486250.0 ], [ 272210.0, 4495920.0 ], [ 258380.0, 4495920.0 ], [ 258380.0, 4505730.0 ], [ 258680.0, 4505730.0 ], [ 258680.0, 4514980.0 ], [ 258990.0, 4514980.0 ], [ 258990.0, 4524230.0 ], [ 259290.0, 4524230.0 ], [ 259290.0, 4533480.0 ], [ 259590.0, 4533480.0 ], [ 259590.0, 4542740.0 ], [ 259890.0, 4542740.0 ], [ 259890.0, 4551990.0 ], [ 260190.0, 4551990.0 ], [ 260190.0, 4561240.0 ], [ 260500.0, 4561240.0 ], [ 260500.0, 4570490.0 ], [ 274770.0, 4570490.0 ], [ 274770.0, 4579300.0 ], [ 275050.0, 4579300.0 ], [ 275050.0, 4588550.0 ], [ 275340.0, 4588550.0 ], [ 275340.0, 4597810.0 ], [ 275630.0, 4597810.0 ], [ 275630.0, 4607060.0 ], [ 275920.0, 4607060.0 ], [ 275920.0, 4616310.0 ], [ 276210.0, 4616310.0 ], [ 276210.0, 4625570.0 ], [ 276490.0, 4625570.0 ], [ 276490.0, 4634820.0 ], [ 290620.0, 4634820.0 ], [ 290620.0, 4643650.0 ], [ 290900.0, 4643650.0 ], [ 290900.0, 4652910.0 ], [ 304970.0, 4652910.0 ], [ 304970.0, 4661770.0 ], [ 305230.0, 4661770.0 ], [ 305230.0, 4671020.0 ], [ 305480.0, 4671020.0 ], [ 305480.0, 4680270.0 ], [ 305740.0, 4680270.0 ], [ 305740.0, 4689530.0 ], [ 305990.0, 4689530.0 ], [ 305990.0, 4698780.0 ], [ 306250.0, 4698780.0 ], [ 306250.0, 4708030.0 ], [ 306510.0, 4708030.0 ], [ 306510.0, 4717290.0 ], [ 306760.0, 4717290.0 ], [ 306760.0, 4726540.0 ], [ 307020.0, 4726540.0 ], [ 307020.0, 4735690.0 ], [ 293640.0, 4735690.0 ], [ 293640.0, 4745440.0 ], [ 307540.0, 4745440.0 ], [ 307540.0, 4754300.0 ], [ 321510.0, 4754300.0 ], [ 321510.0, 4753940.0 ], [ 335120.0, 4753940.0 ], [ 335120.0, 4744340.0 ], [ 348520.0, 4744340.0 ], [ 348520.0, 4734780.0 ], [ 361950.0, 4734780.0 ], [ 361950.0, 4734490.0 ], [ 375590.0, 4734490.0 ], [ 375590.0, 4724870.0 ], [ 375430.0, 4724870.0 ], [ 375430.0, 4715610.0 ], [ 375260.0, 4715610.0 ], [ 375260.0, 4706470.0 ], [ 388680.0, 4706470.0 ], [ 388680.0, 4715490.0 ], [ 402610.0, 4715490.0 ], [ 402610.0, 4706030.0 ], [ 416180.0, 4706030.0 ], [ 416180.0, 4705850.0 ], [ 429870.0, 4705850.0 ], [ 429870.0, 4705700.0 ], [ 443570.0, 4705700.0 ], [ 443570.0, 4705580.0 ], [ 457260.0, 4705580.0 ], [ 457260.0, 4696230.0 ], [ 470810.0, 4696230.0 ], [ 470810.0, 4705410.0 ], [ 484650.0, 4705410.0 ], [ 484650.0, 4705370.0 ], [ 498340.0, 4705370.0 ], [ 498340.0, 4705360.0 ], [ 511930.0, 4705360.0 ], [ 511930.0, 4705400.0 ], [ 525770.0, 4705400.0 ], [ 525770.0, 4696140.0 ], [ 525800.0, 4696140.0 ], [ 525800.0, 4686950.0 ], [ 539580.0, 4686950.0 ], [ 539580.0, 4677530.0 ], [ 525870.0, 4677530.0 ], [ 525870.0, 4668380.0 ], [ 525900.0, 4668380.0 ], [ 525900.0, 4659130.0 ], [ 525940.0, 4659130.0 ], [ 525940.0, 4649880.0 ], [ 525970.0, 4649880.0 ], [ 525970.0, 4640630.0 ], [ 526000.0, 4640630.0 ], [ 526000.0, 4631230.0 ], [ 512180.0, 4631230.0 ], [ 512180.0, 4621960.0 ], [ 498330.0, 4621960.0 ], [ 498320.0, 4621960.0 ], [ 498320.0, 4612710.0 ], [ 484450.0, 4612710.0 ], [ 484450.0, 4603480.0 ], [ 470530.0, 4603480.0 ], [ 470530.0, 4594270.0 ], [ 456580.0, 4594270.0 ], [ 456580.0, 4585090.0 ], [ 442600.0, 4585090.0 ], [ 442600.0, 4575930.0 ], [ 442530.0, 4575930.0 ], [ 442530.0, 4566680.0 ], [ 428380.0, 4566680.0 ], [ 428380.0, 4566810.0 ], [ 414530.0, 4566810.0 ], [ 414530.0, 4557710.0 ], [ 400330.0, 4557710.0 ], [ 400330.0, 4557880.0 ], [ 386450.0, 4557880.0 ], [ 386450.0, 4548840.0 ], [ 372200.0, 4548840.0 ], [ 372200.0, 4549070.0 ], [ 358310.0, 4549070.0 ], [ 358310.0, 4540070.0 ], [ 344000.0, 4540070.0 ], [ 344000.0, 4540360.0 ], [ 330090.0, 4540360.0 ], [ 330090.0, 4531420.0 ], [ 329880.0, 4531420.0 ], [ 329880.0, 4522170.0 ], [ 315610.0, 4522170.0 ], [ 315610.0, 4513360.0 ], [ 329450.0, 4513360.0 ], [ 329450.0, 4503660.0 ], [ 329240.0, 4503660.0 ] ] ] ] } } -] -} +{ +"type": "FeatureCollection", +"name": "25k", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, +"features": [ +{ "type": "Feature", "properties": { "gid": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 329240.0, 4503660.0 ], [ 329240.0, 4494410.0 ], [ 314920.0, 4494410.0 ], [ 314920.0, 4485500.0 ], [ 300460.0, 4485500.0 ], [ 300460.0, 4485860.0 ], [ 286330.0, 4485860.0 ], [ 286330.0, 4486250.0 ], [ 272210.0, 4486250.0 ], [ 272210.0, 4495920.0 ], [ 258380.0, 4495920.0 ], [ 258380.0, 4505730.0 ], [ 258680.0, 4505730.0 ], [ 258680.0, 4514980.0 ], [ 258990.0, 4514980.0 ], [ 258990.0, 4524230.0 ], [ 259290.0, 4524230.0 ], [ 259290.0, 4533480.0 ], [ 259590.0, 4533480.0 ], [ 259590.0, 4542740.0 ], [ 259890.0, 4542740.0 ], [ 259890.0, 4551990.0 ], [ 260190.0, 4551990.0 ], [ 260190.0, 4561240.0 ], [ 260500.0, 4561240.0 ], [ 260500.0, 4570490.0 ], [ 274770.0, 4570490.0 ], [ 274770.0, 4579300.0 ], [ 275050.0, 4579300.0 ], [ 275050.0, 4588550.0 ], [ 275340.0, 4588550.0 ], [ 275340.0, 4597810.0 ], [ 275630.0, 4597810.0 ], [ 275630.0, 4607060.0 ], [ 275920.0, 4607060.0 ], [ 275920.0, 4616310.0 ], [ 276210.0, 4616310.0 ], [ 276210.0, 4625570.0 ], [ 276490.0, 4625570.0 ], [ 276490.0, 4634820.0 ], [ 290620.0, 4634820.0 ], [ 290620.0, 4643650.0 ], [ 290900.0, 4643650.0 ], [ 290900.0, 4652910.0 ], [ 304970.0, 4652910.0 ], [ 304970.0, 4661770.0 ], [ 305230.0, 4661770.0 ], [ 305230.0, 4671020.0 ], [ 305480.0, 4671020.0 ], [ 305480.0, 4680270.0 ], [ 305740.0, 4680270.0 ], [ 305740.0, 4689530.0 ], [ 305990.0, 4689530.0 ], [ 305990.0, 4698780.0 ], [ 306250.0, 4698780.0 ], [ 306250.0, 4708030.0 ], [ 306510.0, 4708030.0 ], [ 306510.0, 4717290.0 ], [ 306760.0, 4717290.0 ], [ 306760.0, 4726540.0 ], [ 307020.0, 4726540.0 ], [ 307020.0, 4735690.0 ], [ 293640.0, 4735690.0 ], [ 293640.0, 4745440.0 ], [ 307540.0, 4745440.0 ], [ 307540.0, 4754300.0 ], [ 321510.0, 4754300.0 ], [ 321510.0, 4753940.0 ], [ 335120.0, 4753940.0 ], [ 335120.0, 4744340.0 ], [ 348520.0, 4744340.0 ], [ 348520.0, 4734780.0 ], [ 361950.0, 4734780.0 ], [ 361950.0, 4734490.0 ], [ 375590.0, 4734490.0 ], [ 375590.0, 4724870.0 ], [ 375430.0, 4724870.0 ], [ 375430.0, 4715610.0 ], [ 375260.0, 4715610.0 ], [ 375260.0, 4706470.0 ], [ 388680.0, 4706470.0 ], [ 388680.0, 4715490.0 ], [ 402610.0, 4715490.0 ], [ 402610.0, 4706030.0 ], [ 416180.0, 4706030.0 ], [ 416180.0, 4705850.0 ], [ 429870.0, 4705850.0 ], [ 429870.0, 4705700.0 ], [ 443570.0, 4705700.0 ], [ 443570.0, 4705580.0 ], [ 457260.0, 4705580.0 ], [ 457260.0, 4696230.0 ], [ 470810.0, 4696230.0 ], [ 470810.0, 4705410.0 ], [ 484650.0, 4705410.0 ], [ 484650.0, 4705370.0 ], [ 498340.0, 4705370.0 ], [ 498340.0, 4705360.0 ], [ 511930.0, 4705360.0 ], [ 511930.0, 4705400.0 ], [ 525770.0, 4705400.0 ], [ 525770.0, 4696140.0 ], [ 525800.0, 4696140.0 ], [ 525800.0, 4686950.0 ], [ 539580.0, 4686950.0 ], [ 539580.0, 4677530.0 ], [ 525870.0, 4677530.0 ], [ 525870.0, 4668380.0 ], [ 525900.0, 4668380.0 ], [ 525900.0, 4659130.0 ], [ 525940.0, 4659130.0 ], [ 525940.0, 4649880.0 ], [ 525970.0, 4649880.0 ], [ 525970.0, 4640630.0 ], [ 526000.0, 4640630.0 ], [ 526000.0, 4631230.0 ], [ 512180.0, 4631230.0 ], [ 512180.0, 4621960.0 ], [ 498330.0, 4621960.0 ], [ 498320.0, 4621960.0 ], [ 498320.0, 4612710.0 ], [ 484450.0, 4612710.0 ], [ 484450.0, 4603480.0 ], [ 470530.0, 4603480.0 ], [ 470530.0, 4594270.0 ], [ 456580.0, 4594270.0 ], [ 456580.0, 4585090.0 ], [ 442600.0, 4585090.0 ], [ 442600.0, 4575930.0 ], [ 442530.0, 4575930.0 ], [ 442530.0, 4566680.0 ], [ 428380.0, 4566680.0 ], [ 428380.0, 4566810.0 ], [ 414530.0, 4566810.0 ], [ 414530.0, 4557710.0 ], [ 400330.0, 4557710.0 ], [ 400330.0, 4557880.0 ], [ 386450.0, 4557880.0 ], [ 386450.0, 4548840.0 ], [ 372200.0, 4548840.0 ], [ 372200.0, 4549070.0 ], [ 358310.0, 4549070.0 ], [ 358310.0, 4540070.0 ], [ 344000.0, 4540070.0 ], [ 344000.0, 4540360.0 ], [ 330090.0, 4540360.0 ], [ 330090.0, 4531420.0 ], [ 329880.0, 4531420.0 ], [ 329880.0, 4522170.0 ], [ 315610.0, 4522170.0 ], [ 315610.0, 4513360.0 ], [ 329450.0, 4513360.0 ], [ 329450.0, 4503660.0 ], [ 329240.0, 4503660.0 ] ] ] ] } } +] +} diff --git a/data/cat_tall5k_limits.geojson b/data/cat_tall5k_limits.geojson index 288010a..2ff3040 100644 --- a/data/cat_tall5k_limits.geojson +++ b/data/cat_tall5k_limits.geojson @@ -1,8 +1,8 @@ -{ -"type": "FeatureCollection", -"name": "z", -"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, -"features": [ -{ "type": "Feature", "properties": { "gid": 4282 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 293629.999921411275864, 4490580.002789653837681 ], [ 297050.000368323642761, 4490579.997195045463741 ], [ 297050.001579137868248, 4490489.996665474958718 ], [ 300580.003604751080275, 4490490.005214287899435 ], [ 300580.000258714018855, 4490389.997901474125683 ], [ 304280.003194940974936, 4490390.002481003291905 ], [ 304280.003125318558887, 4492619.996091452427208 ], [ 307870.000012289616279, 4492619.998697898350656 ], [ 307870.000981729652267, 4494929.997033353894949 ], [ 307929.999906361277681, 4494930.005183403380215 ], [ 307929.999896695720963, 4497149.996292104013264 ], [ 311509.997423446038738, 4497149.997228164225817 ], [ 311510.001104423543438, 4499460.001682722941041 ], [ 311570.00327001628466, 4499460.003503845073283 ], [ 311570.001408667187206, 4501690.000568738207221 ], [ 314980.003574479720555, 4501689.994387766346335 ], [ 314979.997665139730088, 4501600.005537242628634 ], [ 318670.004081056336872, 4501600.003936660476029 ], [ 318669.996059918077663, 4503829.996273356489837 ], [ 322250.002006394846831, 4503830.003603887744248 ], [ 322249.995976297243033, 4506139.997896730899811 ], [ 322309.996525163762271, 4506140.005427993834019 ], [ 322309.995708533097059, 4508449.996754446998239 ], [ 322360.003047761856578, 4508449.998659706674516 ], [ 322359.996930449211504, 4510769.995689246803522 ], [ 322420.002279297332279, 4510770.001892928034067 ], [ 322420.004129628709052, 4513279.997770846821368 ], [ 318959.998312293086201, 4513279.998713287524879 ], [ 318960.000497145985719, 4515670.002232300117612 ], [ 315499.996672515640967, 4515670.003469483926892 ], [ 315500.003973463200964, 4517879.998942817561328 ], [ 315559.998565517307725, 4517880.002174580469728 ], [ 315560.001673899008892, 4520389.995605164207518 ], [ 312099.999336293200031, 4520390.002159419469535 ], [ 312099.998249960539397, 4522590.00007220543921 ], [ 312159.999036768160295, 4522589.995572841726243 ], [ 312159.998133870773017, 4524819.995514702051878 ], [ 315730.003251336282119, 4524820.002409132197499 ], [ 315729.99851874099113, 4527040.005525114946067 ], [ 319300.002123585785739, 4527039.996810395270586 ], [ 319300.00018315075431, 4529360.001348619349301 ], [ 319350.003006946993992, 4529359.997263281606138 ], [ 319350.001734117628075, 4531579.999717375263572 ], [ 322920.003328284597956, 4531580.005381980910897 ], [ 322919.9993209624663, 4533899.997424726374447 ], [ 322970.003389921737835, 4533900.004997849464417 ], [ 322969.99745760706719, 4536129.99450995400548 ], [ 326539.99789402942406, 4536129.997103706933558 ], [ 326539.996175345499068, 4538440.002652183175087 ], [ 326590.00092294922797, 4538439.999752507545054 ], [ 326590.002431458095089, 4540670.001628323458135 ], [ 330149.998354218027089, 4540670.004636017605662 ], [ 330150.000307747803163, 4542900.001081093214452 ], [ 333700.001508646178991, 4542899.997071694582701 ], [ 333699.99623292835895, 4545139.997567443177104 ], [ 337100.001468517410103, 4545139.996162881143391 ], [ 337099.998546322342008, 4545060.000766530632973 ], [ 340759.997631872189231, 4545060.000280058011413 ], [ 340759.999287982005626, 4547299.998257901519537 ], [ 344100.003238738630898, 4547300.005361592397094 ], [ 344100.000588739407249, 4544910.004418919794261 ], [ 347760.001433138386346, 4544909.998109306208789 ], [ 347760.000284914160147, 4547150.001621010713279 ], [ 351309.998403845296707, 4547150.000069503672421 ], [ 351310.002945269341581, 4549390.00495124887675 ], [ 354860.003204962937161, 4549390.004955785349011 ], [ 354859.999231519526802, 4551639.997131397947669 ], [ 358240.003397328662686, 4551639.994524493813515 ], [ 358239.999770033522509, 4551570.004712752997875 ], [ 361899.998132339562289, 4551570.004224221222103 ], [ 361900.000918664620258, 4553819.996759654022753 ], [ 365280.002360919723287, 4553820.001070491038263 ], [ 365279.99735008738935, 4553750.002853703685105 ], [ 368929.997361255227588, 4553750.000101866200566 ], [ 368930.000172720814589, 4556010.003876549191773 ], [ 372320.001091000332963, 4556009.995943509973586 ], [ 372320.001818176126108, 4555949.994790203869343 ], [ 375969.999741306179203, 4555949.994860551320016 ], [ 375969.997183802479412, 4558200.002737599425018 ], [ 379350.002133705536835, 4558199.997378746978939 ], [ 379350.000816280022264, 4558139.998301415704191 ], [ 382849.996776967891492, 4558139.997502004727721 ], [ 382850.000164678727742, 4558090.004653215408325 ], [ 386489.999148386297747, 4558090.002877465449274 ], [ 386490.003595501999371, 4560350.002286480739713 ], [ 389869.996903902560007, 4560349.998095746152103 ], [ 389869.997065437433776, 4560299.995734633877873 ], [ 393369.998701087664813, 4560300.002004060894251 ], [ 393370.002459722338244, 4560239.995665455237031 ], [ 397010.002311483374797, 4560240.002989424392581 ], [ 397010.003538843418937, 4562510.003822200000286 ], [ 400529.997821127064526, 4562509.99527361150831 ], [ 400530.001437418919522, 4564780.002830043435097 ], [ 403909.997868836915586, 4564779.995538351126015 ], [ 403910.000617597368546, 4564729.995909855701029 ], [ 407399.99859925894998, 4564730.002128703519702 ], [ 407400.001438070030417, 4564689.996329184621572 ], [ 411030.002361328166444, 4564689.99631607811898 ], [ 411030.001289357664064, 4566960.00368077494204 ], [ 414420.00266360072419, 4566960.001097338274121 ], [ 414420.001651691854931, 4566919.996283822692931 ], [ 417909.995892545382958, 4566919.999742773361504 ], [ 417909.997302510892041, 4566879.99541050195694 ], [ 421529.997950137592852, 4566880.002808516845107 ], [ 421530.001780850812793, 4569149.998404590412974 ], [ 424909.997735905344598, 4569149.99886467307806 ], [ 424909.998021158913616, 4569119.999006857164204 ], [ 428539.996776244137436, 4569119.997818277217448 ], [ 428539.997063628572505, 4571399.997940383851528 ], [ 432049.999587558093481, 4571400.005365590564907 ], [ 432049.998252450313885, 4573710.000159002840519 ], [ 432069.997094223625027, 4573710.001862453296781 ], [ 432070.003771123767365, 4576020.004969835281372 ], [ 432089.996148600010201, 4576019.995550044812262 ], [ 432089.999220705183689, 4578309.99992694798857 ], [ 435599.999693800520618, 4578309.997087402269244 ], [ 435599.998053866147529, 4580620.004926175810397 ], [ 435620.002645967295393, 4580620.004860573448241 ], [ 435620.000208478188142, 4582899.999340737238526 ], [ 439119.996160004404373, 4582900.001367191784084 ], [ 439120.001291693770327, 4585210.003920141607523 ], [ 439140.001282509416342, 4585210.002260192297399 ], [ 439139.995867694611661, 4587529.994601557031274 ], [ 439159.997894499567337, 4587530.00395957287401 ], [ 439160.004062367079314, 4589810.001507630571723 ], [ 442530.000156055553816, 4589809.997306167148054 ], [ 442530.00382461521076, 4589779.997953494079411 ], [ 446130.001585977210198, 4589780.002487344667315 ], [ 446129.999093741760589, 4592070.005308855324984 ], [ 449629.996164548618253, 4592070.004920657724142 ], [ 449630.003394323750399, 4594359.997796197421849 ], [ 453119.995935025974177, 4594359.998247258365154 ], [ 453119.997189430170693, 4596650.004741185344756 ], [ 456609.99773196055321, 4596650.000451013445854 ], [ 456610.000726692378521, 4598950.002813678234816 ], [ 460099.99754756281618, 4598949.996267548762262 ], [ 460099.996403141471092, 4601240.000248851254582 ], [ 463470.004040822910611, 4601240.002119429409504 ], [ 463470.002614246332087, 4601219.995671994052827 ], [ 467059.996796686551534, 4601219.998766678385437 ], [ 467059.999982868495863, 4603519.999892676249146 ], [ 470539.996797018218786, 4603519.999294839799404 ], [ 470539.998519478423987, 4605819.997859071940184 ], [ 473899.997286544530652, 4605819.995560482144356 ], [ 473900.002683516475372, 4605810.003486283123493 ], [ 477489.996206543350127, 4605810.003761337138712 ], [ 477490.000285843154415, 4608110.00355535838753 ], [ 480969.999398654268589, 4608110.002983216196299 ], [ 480969.997662437905092, 4610419.995906699448824 ], [ 484450.004105352680199, 4610419.998172907158732 ], [ 484449.999565707694273, 4612720.001347167417407 ], [ 487919.996408737672027, 4612720.003600304014981 ], [ 487919.99991856579436, 4615030.002334136515856 ], [ 491279.998622754123062, 4615030.002395627088845 ], [ 491390.001954175997525, 4615030.002677500247955 ], [ 494859.997397566039581, 4615029.994888750836253 ], [ 494859.998204253613949, 4617339.995969426818192 ], [ 498320.002877864753827, 4617340.00338810030371 ], [ 498320.004065642599016, 4619650.000563970766962 ], [ 498319.996612298826221, 4619760.002755343914032 ], [ 498319.997508186090272, 4621959.995032800361514 ], [ 501680.002491815306712, 4621959.995032800361514 ], [ 501789.998949421918951, 4621959.999504533596337 ], [ 505249.999806352076121, 4621960.003268904052675 ], [ 505250.000770893297158, 4624279.999588990584016 ], [ 505250.003098135115579, 4624390.002641353756189 ], [ 505249.998970568820368, 4626590.001034764572978 ], [ 508709.998721669020597, 4626589.995558767579496 ], [ 508710.001787815941498, 4628910.000146590173244 ], [ 508710.00045798427891, 4629020.004113996401429 ], [ 508709.997469930851366, 4631219.998670036904514 ], [ 512159.996690591971856, 4631220.00508249271661 ], [ 512160.000833974627312, 4633530.004579707980156 ], [ 512160.000388750224374, 4633539.996952931396663 ], [ 515620.001280720869545, 4633540.000087545253336 ], [ 515619.995960660744458, 4633550.003573856316507 ], [ 519080.003980177105404, 4633549.998664556071162 ], [ 519080.003515087766573, 4635980.004867779091001 ], [ 519069.996198058826849, 4635980.000271997414529 ], [ 519069.998285189678427, 4638289.994772457517684 ], [ 519060.00247995153768, 4638290.001304872334003 ], [ 519059.997541540360544, 4640489.997505271807313 ], [ 519060.001267265179195, 4640600.004187894053757 ], [ 519059.996458395558875, 4642810.000967000611126 ], [ 522509.999339667439926, 4642809.998163257725537 ], [ 522510.000038274854887, 4645240.003090493381023 ], [ 522499.997391752433032, 4645240.004700994119048 ], [ 522500.000696140457876, 4647549.99580058362335 ], [ 519039.997266063117422, 4647549.994903248734772 ], [ 519040.001240184821654, 4649859.998175339773297 ], [ 519029.996855694218539, 4649860.004629651084542 ], [ 519029.996929907181766, 4652050.00379344355315 ], [ 519029.997554082074203, 4652170.005184617824852 ], [ 519029.999993221077602, 4654480.003055960871279 ], [ 519020.002159018535167, 4654479.998400001786649 ], [ 519019.999138670449611, 4656679.995175363495946 ], [ 519019.999247840140015, 4656799.997440366074443 ], [ 519020.000076966534834, 4659110.001052581705153 ], [ 519010.000511741091032, 4659109.996367 ], [ 519009.998058468743693, 4661419.997264359146357 ], [ 515559.996306445449591, 4661419.995547413825989 ], [ 515559.999598079186399, 4663729.998753931373358 ], [ 512109.997341105190571, 4663730.000142090953887 ], [ 512110.001144988753367, 4666030.002869985997677 ], [ 512100.003176541649736, 4666029.996819058433175 ], [ 512099.995989423419815, 4668230.000924874097109 ], [ 512099.996533347351942, 4668350.00480177719146 ], [ 512100.002533704100642, 4670540.001813357695937 ], [ 512100.002878058119677, 4670659.995023642666638 ], [ 512099.996740460454021, 4672970.004739842377603 ], [ 512090.000358054472599, 4672969.998668377287686 ], [ 512090.000820867193397, 4675170.004639260470867 ], [ 512090.000151145213749, 4675179.997667359188199 ], [ 515410.001527560758404, 4675180.00242150016129 ], [ 515530.003466033376753, 4675179.999830647371709 ], [ 518970.002240717876703, 4675179.996384032070637 ], [ 518970.000020056962967, 4675190.000558491796255 ], [ 522399.998622461629566, 4675190.004086824133992 ], [ 522400.000266119081061, 4677500.004215347580612 ], [ 522400.001420937129296, 4677509.997364286333323 ], [ 525829.99947360495571, 4677510.005154360085726 ], [ 525830.000285936519504, 4679830.004388672299683 ], [ 525829.996113847009838, 4679950.000736095942557 ], [ 525829.99945483810734, 4682260.004564309492707 ], [ 525819.999619728769176, 4682260.00108377635479 ], [ 525820.0027694364544, 4684470.002663932740688 ], [ 529239.996677974006161, 4684470.001227734610438 ], [ 529239.998179689864628, 4686899.99612751789391 ], [ 525799.999943950911984, 4686900.002493485808372 ], [ 525799.998255675309338, 4689200.004919460043311 ], [ 522250.000060586375184, 4689199.99718530010432 ], [ 522249.998864828492515, 4689190.003853235393763 ], [ 518819.999398283078335, 4689189.996079838834703 ], [ 518820.001544102677144, 4689180.002789015881717 ], [ 515499.998763890180271, 4689179.99641134031117 ], [ 515499.998215540894307, 4691490.000734216533601 ], [ 515490.003433232719544, 4691490.000813520513475 ], [ 515490.003183229127899, 4693680.00459792278707 ], [ 515490.0007793593104, 4693800.002432932145894 ], [ 515490.000947937602177, 4696110.001376314088702 ], [ 515479.996311033028178, 4696110.001416007988155 ], [ 515479.996873106167186, 4698430.002182899974287 ], [ 512050.003745893889572, 4698430.003595917485654 ], [ 512049.997334080631845, 4700729.998855204321444 ], [ 508620.000518009590451, 4700730.004589883610606 ], [ 508509.998230041004717, 4700730.002823447808623 ], [ 505190.002156599599402, 4700729.997330337762833 ], [ 505190.001643972995225, 4703039.999380783177912 ], [ 501659.996570607414469, 4703039.997791511006653 ], [ 501659.998949535016436, 4703030.004355877637863 ], [ 498340.001050466380548, 4703030.004355877637863 ], [ 498340.003429393982515, 4703039.997791511006653 ], [ 498340.002923028368969, 4705349.995899046771228 ], [ 494810.000686485785991, 4705349.998742398805916 ], [ 494809.998356028401759, 4703039.999380783177912 ], [ 491490.000090629037004, 4703039.99613337777555 ], [ 491490.004080542305019, 4703050.000684350728989 ], [ 488070.000250393117312, 4703050.005161173641682 ], [ 487949.998514574952424, 4703050.000520242378116 ], [ 484530.001565692131408, 4703049.997826166450977 ], [ 484530.0002828479046, 4700739.995821663178504 ], [ 484520.002276709186845, 4700739.995785131119192 ], [ 484520.003126895229798, 4698430.002182899974287 ], [ 481209.997818284726236, 4698429.995773221366107 ], [ 481210.000062493258156, 4698440.000313299708068 ], [ 477780.002301683940459, 4698440.000351537950337 ], [ 477780.000133156718221, 4698459.998410461470485 ], [ 474230.002810933743604, 4698460.004094403237104 ], [ 474229.999724113382399, 4696160.001395607367158 ], [ 470799.996554717537947, 4696159.999980916269124 ], [ 470800.000194580235984, 4693839.997826548293233 ], [ 470790.000327051617205, 4693839.995169973000884 ], [ 470790.003297571674921, 4691529.994948826730251 ], [ 470780.000174128392246, 4691530.003393727354705 ], [ 470780.002363384119235, 4689230.004996289499104 ], [ 467469.999372909602243, 4689229.995036065578461 ], [ 467469.99701680848375, 4691559.995541848242283 ], [ 464040.003835226467345, 4691560.0007363576442 ], [ 464039.999558019859251, 4691579.99895113799721 ], [ 460480.002960961719509, 4691579.997374529018998 ], [ 460479.996441946015693, 4689290.000354449264705 ], [ 457169.999155855388381, 4689289.994606920517981 ], [ 457169.9990809133742, 4691620.002516300417483 ], [ 453760.000503624731209, 4691620.004364653490484 ], [ 453759.998864514462184, 4693959.997225750237703 ], [ 450350.002378431148827, 4693960.000752565450966 ], [ 450349.998215901374351, 4696299.997290320694447 ], [ 446940.002377289056312, 4696300.004905682988465 ], [ 446939.998042466701008, 4698639.995244666002691 ], [ 443509.997397139843088, 4698640.004583415575325 ], [ 443510.001493452466093, 4698669.997902176342905 ], [ 440100.000718085269909, 4698669.999022000469267 ], [ 440099.997190834896173, 4701010.005487641319633 ], [ 436549.999106808274519, 4701010.000099576078355 ], [ 436549.999628385936376, 4698730.002902245149016 ], [ 433230.001832546549849, 4698729.998398385941982 ], [ 433230.000842347566504, 4698760.003722037188709 ], [ 429800.000380365352612, 4698759.995138574391603 ], [ 429799.999446823610924, 4698799.995254378765821 ], [ 426239.998015502351336, 4698800.000585450790823 ], [ 426240.001511410577223, 4696480.005264733918011 ], [ 426219.998114679707214, 4696480.005435697734356 ], [ 426219.99696162273176, 4694210.002368176355958 ], [ 422760.001083247887436, 4694210.005234251730144 ], [ 422760.002435156609863, 4691930.000370306894183 ], [ 419440.000530096876901, 4691929.995924040675163 ], [ 419439.999901027418673, 4691969.996997968293726 ], [ 416039.996533575467765, 4691969.994818395934999 ], [ 416040.002231530845165, 4694180.002120051532984 ], [ 416069.998140885378234, 4694179.997429906390607 ], [ 416069.99599594733445, 4696489.994922288693488 ], [ 416090.000464537064545, 4696489.999010337516665 ], [ 416090.00116043293383, 4698760.002945126965642 ], [ 419550.004070317256264, 4698759.996860145591199 ], [ 419550.003301678749267, 4701079.99889334384352 ], [ 419570.00246272579534, 4701080.001563470810652 ], [ 419569.998460318194702, 4703389.995072095654905 ], [ 419600.003773199161515, 4703390.004411256872118 ], [ 419599.998485042597167, 4705849.996932337060571 ], [ 416179.996921756421216, 4705849.998369162902236 ], [ 416180.001520691614132, 4705890.0007638130337 ], [ 412610.001675550010987, 4705889.995506602339447 ], [ 412610.00400779908523, 4703579.998637169599533 ], [ 412590.00313193211332, 4703580.005018277093768 ], [ 412589.995942459325306, 4701309.997257302515209 ], [ 409299.999064029077999, 4701309.996620529331267 ], [ 409300.002542652888224, 4703670.003056754358113 ], [ 405910.001908303413074, 4703670.001938638277352 ], [ 405910.001871507905889, 4706029.995207860134542 ], [ 402480.001971088466235, 4706030.003292376175523 ], [ 402480.003266443090979, 4706080.00359267462045 ], [ 399060.003463010129053, 4706080.000285448506474 ], [ 399059.996437950292602, 4706130.001473019830883 ], [ 395669.998725211597048, 4706129.994545386172831 ], [ 395670.003516548254993, 4708500.001124403439462 ], [ 392249.998376566683874, 4708500.00166028086096 ], [ 392249.999971287150402, 4708550.004519456066191 ], [ 388680.000396680668928, 4708550.00526075810194 ], [ 388679.998422478791326, 4706239.995664330199361 ], [ 388639.997384668502491, 4706240.001824867911637 ], [ 388639.997913881554268, 4703980.003962118178606 ], [ 385330.001018837559968, 4703980.000501537695527 ], [ 385330.00126812257804, 4704040.001143451780081 ], [ 381900.001646021613851, 4704040.001887179911137 ], [ 381900.001671063597314, 4704089.995922016911209 ], [ 378329.996503428614233, 4704090.004664490930736 ], [ 378330.000780243834015, 4701779.997946492396295 ], [ 378290.003763648797758, 4701779.995792008005083 ], [ 378289.997569005819969, 4699530.000110605731606 ], [ 375010.000866054266226, 4699529.99996623583138 ], [ 375010.00276995904278, 4701729.99644526746124 ], [ 375050.001197638455778, 4701730.00201512593776 ], [ 375050.001932621526066, 4704050.002961907535791 ], [ 375090.003300865355413, 4704049.997079554013908 ], [ 375090.00360176799586, 4706359.998436810448766 ], [ 375130.000132720277179, 4706360.00345931854099 ], [ 375129.998110981367063, 4708670.002182312309742 ], [ 375179.997682514076587, 4708670.005287317559123 ], [ 375179.996920612407848, 4710989.99825104419142 ], [ 375219.999710192845669, 4710990.002637329511344 ], [ 375219.99820568272844, 4713299.995910088531673 ], [ 375259.995921425928827, 4713300.000097844749689 ], [ 375260.000578183971811, 4715610.001694014295936 ], [ 375300.001216010539792, 4715609.994431846775115 ], [ 375299.996078632771969, 4718099.99830134678632 ], [ 371930.002060869126581, 4718099.9976029638201 ], [ 371930.002604694454931, 4720300.00138823967427 ], [ 371970.002016206446569, 4720299.99612448643893 ], [ 371969.996119249961339, 4722610.001791403628886 ], [ 372009.998606345441658, 4722609.99616695381701 ], [ 372009.996164272713941, 4724929.996597819030285 ], [ 372050.001858230913058, 4724930.001716216094792 ], [ 372050.002973850932904, 4727420.001804465427995 ], [ 368679.996778633387294, 4727419.995406663045287 ], [ 368679.998685762635432, 4729619.997916657477617 ], [ 368729.997981231543235, 4729620.004082954488695 ], [ 368729.997978776227683, 4732109.994635638780892 ], [ 365319.998159940703772, 4732110.000325763598084 ], [ 365320.002790732192807, 4732179.997365828603506 ], [ 361909.998776077700313, 4732179.996777870692313 ], [ 361910.001978000160307, 4732239.997112035751343 ], [ 358490.002413412323222, 4732239.994584398344159 ], [ 358490.002770814229734, 4732320.004256727173924 ], [ 355079.998591502720956, 4732319.995668645948172 ], [ 355080.000537699088454, 4732389.997323331423104 ], [ 351670.001076796441339, 4732390.004272689111531 ], [ 351669.996398883056827, 4732459.996552900411189 ], [ 348310.003249268862419, 4732459.998859751969576 ], [ 348310.001546954270452, 4734669.99569027684629 ], [ 348359.998437807313167, 4734669.997520169243217 ], [ 348360.001299253781326, 4736980.00489969085902 ], [ 348409.997586236975621, 4736979.995200059376657 ], [ 348410.0005134959938, 4739479.996276296675205 ], [ 345010.002870257012546, 4739480.000262338668108 ], [ 345010.000863404304255, 4739559.996015564538538 ], [ 341599.997178570600227, 4739559.994847289286554 ], [ 341600.001675931969658, 4739630.003806365653872 ], [ 338189.999733448261395, 4739629.999336093664169 ], [ 338190.000637128890958, 4739719.998924341052771 ], [ 334839.99990145873744, 4739719.998526304028928 ], [ 334839.998836374492384, 4742109.997251529246569 ], [ 331429.996322864317335, 4742109.994594608433545 ], [ 331429.997877597576007, 4742199.999122215434909 ], [ 328079.998707126243971, 4742199.997209586203098 ], [ 328080.003070999518968, 4744599.99742369633168 ], [ 324740.003243182552978, 4744599.996873980388045 ], [ 324740.001071190228686, 4747000.004063602536917 ], [ 321329.999455947952811, 4747000.002661763690412 ], [ 321329.998713908833452, 4747090.004090500064194 ], [ 317989.997186739521567, 4747089.995378653518856 ], [ 317990.003084707597736, 4749490.000209673307836 ], [ 314579.998911735136062, 4749489.997400709427893 ], [ 314579.999222087848466, 4749580.004236647859216 ], [ 311179.998175882035866, 4749579.994770896621048 ], [ 311179.998728081292938, 4749679.995394786819816 ], [ 307600.003941535833292, 4749680.00098046194762 ], [ 307600.003675098065287, 4747360.003268215805292 ], [ 307540.001236588694155, 4747360.003597786650062 ], [ 307540.002099816862028, 4745049.994736094027758 ], [ 307470.000334074080456, 4745049.996187440119684 ], [ 307469.99750374420546, 4742739.995737880468369 ], [ 307410.003856625349727, 4742739.994526907801628 ], [ 307410.002142775396351, 4740520.002351873554289 ], [ 303939.996527199749835, 4740520.004171430133283 ], [ 303939.996950091270264, 4738209.99525838997215 ], [ 303869.996281434490811, 4738209.995596446096897 ], [ 303869.999892057501711, 4735690.005455992184579 ], [ 307220.003284871403594, 4735689.998508241958916 ], [ 307220.002461351105012, 4733480.0001235390082 ], [ 307149.997831429122016, 4733479.997815418988466 ], [ 307150.001692029531114, 4731169.994944010861218 ], [ 307089.997829367290251, 4731170.00184123031795 ], [ 307090.00078568700701, 4728859.996386276558042 ], [ 307019.99884836061392, 4728860.003605985082686 ], [ 307019.99791779514635, 4726540.00433418340981 ], [ 306960.002769037499093, 4726539.998574681580067 ], [ 306960.000522681511939, 4724019.99749200232327 ], [ 310309.99762822012417, 4724020.002515064552426 ], [ 310309.998725690646097, 4721820.000717034563422 ], [ 310249.998223427450284, 4721819.997573995031416 ], [ 310250.00163074262673, 4719300.000688002444804 ], [ 313599.999956028186716, 4719300.004410004243255 ], [ 313599.996809512434993, 4717100.00512826628983 ], [ 313539.999185122782364, 4717100.004458816722035 ], [ 313540.001272159046493, 4714789.996621919795871 ], [ 313480.000121743418276, 4714789.995399287901819 ], [ 313479.996812836965546, 4712569.997827981598675 ], [ 309990.003623412107117, 4712569.994666039943695 ], [ 309990.001558379852213, 4710250.001308718696237 ], [ 309929.999659133492969, 4710249.995020003058016 ], [ 309929.997192048584111, 4707940.000749167986214 ], [ 309870.000346341170371, 4707940.004766320809722 ], [ 309870.003275506140199, 4705629.996592993848026 ], [ 309810.002984390303027, 4705630.000035014003515 ], [ 309810.002480913884938, 4703309.998859993182123 ], [ 309740.000629846472293, 4703309.996623962186277 ], [ 309740.004212728061248, 4701000.005215355195105 ], [ 309679.996693507710006, 4700999.996484119445086 ], [ 309679.997635264415294, 4698690.002502053044736 ], [ 309620.003485906287096, 4698690.003850108012557 ], [ 309619.998666748637334, 4696169.999073688872159 ], [ 312979.997180158447009, 4696170.000417150557041 ], [ 312979.996232829638757, 4694060.002534439787269 ], [ 309490.003625726210885, 4694060.002098051831126 ], [ 309489.998872359457891, 4691540.004506004974246 ], [ 312860.00122909178026, 4691539.996560169383883 ], [ 312859.996481944806874, 4689340.004736212082207 ], [ 312799.998627575463615, 4689339.996451781131327 ], [ 312799.999963504262269, 4687030.000854985788465 ], [ 312739.999118752079085, 4687030.003114987164736 ], [ 312740.001690876786597, 4684710.003829536959529 ], [ 312669.997867335390765, 4684709.994718017056584 ], [ 312669.996547035232652, 4682400.004803621210158 ], [ 312609.997044750023633, 4682399.994700499810278 ], [ 312609.997779437340796, 4680179.999135013669729 ], [ 309109.996602011146024, 4680180.000773190520704 ], [ 309109.997530004475266, 4677860.003531662747264 ], [ 309049.998173501633573, 4677859.999236355535686 ], [ 309050.003597154514864, 4675550.000423416495323 ], [ 308990.001052792416885, 4675549.995545651763678 ], [ 308990.003696217900142, 4673240.005263747647405 ], [ 308919.998554535675794, 4673240.004457321017981 ], [ 308919.996098007308319, 4670919.999291473999619 ], [ 308860.003966656338889, 4670920.003985585644841 ], [ 308859.997035241511185, 4668609.997379338368773 ], [ 308800.001777517958544, 4668610.001489333808422 ], [ 308800.00020665867487, 4666300.003189912997186 ], [ 308740.001540369761642, 4666299.995611177757382 ], [ 308740.001705509494059, 4664080.003121257759631 ], [ 305230.001056408742443, 4664079.99756074976176 ], [ 305229.999741433304735, 4661770.003035061061382 ], [ 305160.001807548105717, 4661769.999036338180304 ], [ 305160.001087308512069, 4659450.00048372708261 ], [ 305099.999765923013911, 4659449.998076010495424 ], [ 305099.999440250452608, 4657139.998083189129829 ], [ 305040.003365822252817, 4657139.994840838015079 ], [ 305040.001128465635702, 4654830.00337038282305 ], [ 304970.000764279742725, 4654829.997116011567414 ], [ 304969.999552066554315, 4652610.001219311729074 ], [ 301459.998063869774342, 4652610.0026442296803 ], [ 301459.999264451558702, 4650390.003307247534394 ], [ 297939.996419143455569, 4650389.998927799984813 ], [ 297940.001928045472596, 4648179.996372277848423 ], [ 294419.997732226911467, 4648179.99764531198889 ], [ 294419.997611794504337, 4645860.00237331353128 ], [ 294349.998890025715809, 4645859.995053158141673 ], [ 294349.996409919054713, 4643340.004868690855801 ], [ 297739.999184643267654, 4643339.997544868849218 ], [ 297739.9976846287027, 4641139.998973184265196 ], [ 297680.002347785979509, 4641140.004915191791952 ], [ 297679.999651398160495, 4638829.998055350035429 ], [ 297610.001582526834682, 4638829.998725855723023 ], [ 297610.002308438997716, 4636610.001711666584015 ], [ 294079.998940697289072, 4636609.999384769238532 ], [ 294080.003974836668931, 4634399.998021576553583 ], [ 290559.998848053801339, 4634399.997356109321117 ], [ 290560.003596943221055, 4632190.000509522855282 ], [ 287029.998841768945567, 4632190.003640071488917 ], [ 287029.997287099249661, 4629869.996395021677017 ], [ 286960.001338617294095, 4629869.995551879517734 ], [ 286960.001851566601545, 4627670.001175789162517 ], [ 283420.000284559151623, 4627669.99941929616034 ], [ 283420.000884157489054, 4625460.004653253592551 ], [ 279889.996436127112247, 4625460.002250787802041 ], [ 279889.997078755812254, 4623139.999699416570365 ], [ 279820.003411563811824, 4623139.997354805469513 ], [ 279819.999939480156172, 4620940.003439853899181 ], [ 276279.999138204962946, 4620939.996499280445278 ], [ 276280.002257871325128, 4618630.00172832608223 ], [ 276210.002713648369536, 4618629.998339514248073 ], [ 276209.99691184994299, 4616309.998119167052209 ], [ 276129.99895117583219, 4616309.994801048189402 ], [ 276129.997358671273105, 4613999.99462900031358 ], [ 276060.002935790573247, 4614000.000476835295558 ], [ 276059.996198744280264, 4611689.9977807700634 ], [ 275989.995922020170838, 4611690.002907034009695 ], [ 275989.997814268572256, 4609370.005432772450149 ], [ 275919.999594151566271, 4609369.998469384387136 ], [ 275920.003808378707618, 4606840.004129533655941 ], [ 279389.996220199740492, 4606839.99949277471751 ], [ 279389.999166324152611, 4606739.996044894680381 ], [ 282789.997013127780519, 4606739.999400103464723 ], [ 282789.998896222328767, 4604529.999539347365499 ], [ 282720.002369880094193, 4604530.001056025736034 ], [ 282719.996671482105739, 4602219.998580013401806 ], [ 282650.002718261384871, 4602219.999163959175348 ], [ 282649.99798794160597, 4599910.005031771957874 ], [ 282579.99828856025124, 4599910.004933991469443 ], [ 282580.000753337983042, 4597699.995336894877255 ], [ 279219.995812751934864, 4597699.995195892639458 ], [ 279219.996357393101789, 4597809.999421302229166 ], [ 275560.001283041667193, 4597810.001738811843097 ], [ 275560.003623518627137, 4595489.999299502000213 ], [ 275479.999712280521635, 4595489.998178574256599 ], [ 275480.003850513370708, 4593179.995524441823363 ], [ 275409.999263794219587, 4593180.004838 ], [ 275409.997849726642016, 4590869.999659503810108 ], [ 275340.003967205295339, 4590869.996622019447386 ], [ 275339.99615954014007, 4588549.997447296977043 ], [ 275269.996889336325694, 4588550.004780287854373 ], [ 275270.001621238421649, 4586240.005170091986656 ], [ 275199.996389915817417, 4586240.000669984146953 ], [ 275200.003795931406785, 4583929.998275693506002 ], [ 275130.00167629646603, 4583930.003888672217727 ], [ 275130.002900246588979, 4581609.996482594870031 ], [ 275049.996334621449932, 4581610.000452139414847 ], [ 275049.998087326181121, 4579300.00375843141228 ], [ 274980.001129637472332, 4579299.996378472074866 ], [ 274979.999054395477287, 4576769.999268997460604 ], [ 278399.997629917925224, 4576770.003846218809485 ], [ 278399.99677499209065, 4574570.003328936174512 ], [ 278329.999838451389223, 4574570.004993795417249 ], [ 278329.999531494919211, 4572249.998890902847052 ], [ 278259.997012350359, 4572249.999839608557522 ], [ 278259.999436306883581, 4570050.003661084920168 ], [ 274700.000972077948973, 4570049.997816018760204 ], [ 274699.998949033906683, 4567739.998854925855994 ], [ 274619.998831060831435, 4567739.996526325121522 ], [ 274620.000799911678769, 4565529.994767319411039 ], [ 271060.002138829790056, 4565529.995167239569128 ], [ 271059.996654537622817, 4563220.000038371421397 ], [ 270990.001100542838685, 4563219.997616765089333 ], [ 270989.999972410209011, 4561020.00515943672508 ], [ 267419.997248710074928, 4561019.998752169311047 ], [ 267420.00193621055223, 4558810.000860259868205 ], [ 263840.001029406790622, 4558810.000823309645057 ], [ 263840.001176272693556, 4556500.000845870003104 ], [ 263770.001279814634472, 4556499.996174230240285 ], [ 263769.998978882562369, 4554190.004748200066388 ], [ 263689.997872665117029, 4554189.999974139966071 ], [ 263689.997966742375866, 4551880.005591752938926 ], [ 263619.995860045775771, 4551879.999132259748876 ], [ 263619.998241963214241, 4549559.998986106365919 ], [ 263549.999532276531681, 4549560.002546980045736 ], [ 263550.002523457747884, 4547250.002822532318532 ], [ 263470.001241435762495, 4547249.994804104790092 ], [ 263469.996753003913909, 4544710.001930739730597 ], [ 266899.998660654993728, 4544709.995539820753038 ], [ 266900.002561087254435, 4542510.001138587482274 ], [ 266829.998979276162572, 4542510.002003152854741 ], [ 266830.00240227393806, 4539979.997971673496068 ], [ 270260.002146412734874, 4539979.996487775817513 ], [ 270260.002589579438791, 4537770.004098331555724 ], [ 270189.999427016300615, 4537770.003073492087424 ], [ 270189.99767816363601, 4535569.9982770383358 ], [ 266610.000788830337115, 4535569.994448252022266 ], [ 266609.999087586184032, 4533260.004921487532556 ], [ 266530.0012328834855, 4533259.99674732517451 ], [ 266530.000405042606872, 4530950.004277559928596 ], [ 266459.996259685605764, 4530950.000578369945288 ], [ 266460.003071049344726, 4528630.00281763356179 ], [ 266390.002179865608923, 4528629.998055453412235 ], [ 266390.001134499034379, 4526320.000262588262558 ], [ 266310.004168896004558, 4526320.000007599592209 ], [ 266310.003875993366819, 4524009.999271171167493 ], [ 266240.001669585006312, 4524010.00385332480073 ], [ 266240.001156451588031, 4521689.998178884387016 ], [ 266170.002276784274727, 4521690.001695977523923 ], [ 266170.00150065345224, 4519379.995635351166129 ], [ 266089.997222773963585, 4519380.003558792173862 ], [ 266090.002230773156043, 4517179.996180085465312 ], [ 262690.001900706673041, 4517179.999341526068747 ], [ 262689.998549310083035, 4517290.005018190480769 ], [ 258990.0023488937004, 4517289.999087851494551 ], [ 258990.003152894525556, 4514979.999835666269064 ], [ 258910.002193510037614, 4514980.003671479411423 ], [ 258909.997388604213484, 4512670.001720394939184 ], [ 258839.998918585537467, 4512670.001266948878765 ], [ 258839.996466146956664, 4510129.999176405370235 ], [ 262360.003940176975448, 4510129.998252022080123 ], [ 262359.997315034037456, 4510020.005129186436534 ], [ 265799.999961054883897, 4510019.998885232955217 ], [ 265800.001875101123005, 4507589.999358547851443 ], [ 269250.001308661769144, 4507589.999755456112325 ], [ 269249.997147156042047, 4505499.99487166851759 ], [ 265659.996016858611256, 4505500.005624862387776 ], [ 265659.998812538688071, 4503190.002414025366306 ], [ 265579.997283428208902, 4503190.002827920019627 ], [ 265580.001144065987319, 4500659.998710844665766 ], [ 269039.999846224265639, 4500660.000822782516479 ], [ 269039.999021777242888, 4498229.999541094526649 ], [ 272559.997503111837432, 4498229.998769164085388 ], [ 272559.999365829920862, 4498129.997881448827684 ], [ 276020.00398585095536, 4498129.998181630857289 ], [ 276019.998747740872204, 4495709.995156968943775 ], [ 279480.003921187715605, 4495710.000106263905764 ], [ 279480.002761899260804, 4493509.996527491137385 ], [ 279409.997268736362457, 4493510.001134619116783 ], [ 279409.996400331787299, 4490980.002467009238899 ], [ 282869.997980243409984, 4490979.996050633490086 ], [ 282870.001439255196601, 4488570.001779474318027 ], [ 286399.995912368409336, 4488570.002100352197886 ], [ 286400.000835966260638, 4488470.00472635962069 ], [ 289929.999966211675201, 4488469.994999750517309 ], [ 289930.001354870502837, 4488370.000910380855203 ], [ 293630.002475327230059, 4488370.002074592746794 ], [ 293629.999921411275864, 4490580.002789653837681 ] ] ] } } -] -} +{ +"type": "FeatureCollection", +"name": "z", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::25831" } }, +"features": [ +{ "type": "Feature", "properties": { "gid": 4282 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 293629.999921411275864, 4490580.002789653837681 ], [ 297050.000368323642761, 4490579.997195045463741 ], [ 297050.001579137868248, 4490489.996665474958718 ], [ 300580.003604751080275, 4490490.005214287899435 ], [ 300580.000258714018855, 4490389.997901474125683 ], [ 304280.003194940974936, 4490390.002481003291905 ], [ 304280.003125318558887, 4492619.996091452427208 ], [ 307870.000012289616279, 4492619.998697898350656 ], [ 307870.000981729652267, 4494929.997033353894949 ], [ 307929.999906361277681, 4494930.005183403380215 ], [ 307929.999896695720963, 4497149.996292104013264 ], [ 311509.997423446038738, 4497149.997228164225817 ], [ 311510.001104423543438, 4499460.001682722941041 ], [ 311570.00327001628466, 4499460.003503845073283 ], [ 311570.001408667187206, 4501690.000568738207221 ], [ 314980.003574479720555, 4501689.994387766346335 ], [ 314979.997665139730088, 4501600.005537242628634 ], [ 318670.004081056336872, 4501600.003936660476029 ], [ 318669.996059918077663, 4503829.996273356489837 ], [ 322250.002006394846831, 4503830.003603887744248 ], [ 322249.995976297243033, 4506139.997896730899811 ], [ 322309.996525163762271, 4506140.005427993834019 ], [ 322309.995708533097059, 4508449.996754446998239 ], [ 322360.003047761856578, 4508449.998659706674516 ], [ 322359.996930449211504, 4510769.995689246803522 ], [ 322420.002279297332279, 4510770.001892928034067 ], [ 322420.004129628709052, 4513279.997770846821368 ], [ 318959.998312293086201, 4513279.998713287524879 ], [ 318960.000497145985719, 4515670.002232300117612 ], [ 315499.996672515640967, 4515670.003469483926892 ], [ 315500.003973463200964, 4517879.998942817561328 ], [ 315559.998565517307725, 4517880.002174580469728 ], [ 315560.001673899008892, 4520389.995605164207518 ], [ 312099.999336293200031, 4520390.002159419469535 ], [ 312099.998249960539397, 4522590.00007220543921 ], [ 312159.999036768160295, 4522589.995572841726243 ], [ 312159.998133870773017, 4524819.995514702051878 ], [ 315730.003251336282119, 4524820.002409132197499 ], [ 315729.99851874099113, 4527040.005525114946067 ], [ 319300.002123585785739, 4527039.996810395270586 ], [ 319300.00018315075431, 4529360.001348619349301 ], [ 319350.003006946993992, 4529359.997263281606138 ], [ 319350.001734117628075, 4531579.999717375263572 ], [ 322920.003328284597956, 4531580.005381980910897 ], [ 322919.9993209624663, 4533899.997424726374447 ], [ 322970.003389921737835, 4533900.004997849464417 ], [ 322969.99745760706719, 4536129.99450995400548 ], [ 326539.99789402942406, 4536129.997103706933558 ], [ 326539.996175345499068, 4538440.002652183175087 ], [ 326590.00092294922797, 4538439.999752507545054 ], [ 326590.002431458095089, 4540670.001628323458135 ], [ 330149.998354218027089, 4540670.004636017605662 ], [ 330150.000307747803163, 4542900.001081093214452 ], [ 333700.001508646178991, 4542899.997071694582701 ], [ 333699.99623292835895, 4545139.997567443177104 ], [ 337100.001468517410103, 4545139.996162881143391 ], [ 337099.998546322342008, 4545060.000766530632973 ], [ 340759.997631872189231, 4545060.000280058011413 ], [ 340759.999287982005626, 4547299.998257901519537 ], [ 344100.003238738630898, 4547300.005361592397094 ], [ 344100.000588739407249, 4544910.004418919794261 ], [ 347760.001433138386346, 4544909.998109306208789 ], [ 347760.000284914160147, 4547150.001621010713279 ], [ 351309.998403845296707, 4547150.000069503672421 ], [ 351310.002945269341581, 4549390.00495124887675 ], [ 354860.003204962937161, 4549390.004955785349011 ], [ 354859.999231519526802, 4551639.997131397947669 ], [ 358240.003397328662686, 4551639.994524493813515 ], [ 358239.999770033522509, 4551570.004712752997875 ], [ 361899.998132339562289, 4551570.004224221222103 ], [ 361900.000918664620258, 4553819.996759654022753 ], [ 365280.002360919723287, 4553820.001070491038263 ], [ 365279.99735008738935, 4553750.002853703685105 ], [ 368929.997361255227588, 4553750.000101866200566 ], [ 368930.000172720814589, 4556010.003876549191773 ], [ 372320.001091000332963, 4556009.995943509973586 ], [ 372320.001818176126108, 4555949.994790203869343 ], [ 375969.999741306179203, 4555949.994860551320016 ], [ 375969.997183802479412, 4558200.002737599425018 ], [ 379350.002133705536835, 4558199.997378746978939 ], [ 379350.000816280022264, 4558139.998301415704191 ], [ 382849.996776967891492, 4558139.997502004727721 ], [ 382850.000164678727742, 4558090.004653215408325 ], [ 386489.999148386297747, 4558090.002877465449274 ], [ 386490.003595501999371, 4560350.002286480739713 ], [ 389869.996903902560007, 4560349.998095746152103 ], [ 389869.997065437433776, 4560299.995734633877873 ], [ 393369.998701087664813, 4560300.002004060894251 ], [ 393370.002459722338244, 4560239.995665455237031 ], [ 397010.002311483374797, 4560240.002989424392581 ], [ 397010.003538843418937, 4562510.003822200000286 ], [ 400529.997821127064526, 4562509.99527361150831 ], [ 400530.001437418919522, 4564780.002830043435097 ], [ 403909.997868836915586, 4564779.995538351126015 ], [ 403910.000617597368546, 4564729.995909855701029 ], [ 407399.99859925894998, 4564730.002128703519702 ], [ 407400.001438070030417, 4564689.996329184621572 ], [ 411030.002361328166444, 4564689.99631607811898 ], [ 411030.001289357664064, 4566960.00368077494204 ], [ 414420.00266360072419, 4566960.001097338274121 ], [ 414420.001651691854931, 4566919.996283822692931 ], [ 417909.995892545382958, 4566919.999742773361504 ], [ 417909.997302510892041, 4566879.99541050195694 ], [ 421529.997950137592852, 4566880.002808516845107 ], [ 421530.001780850812793, 4569149.998404590412974 ], [ 424909.997735905344598, 4569149.99886467307806 ], [ 424909.998021158913616, 4569119.999006857164204 ], [ 428539.996776244137436, 4569119.997818277217448 ], [ 428539.997063628572505, 4571399.997940383851528 ], [ 432049.999587558093481, 4571400.005365590564907 ], [ 432049.998252450313885, 4573710.000159002840519 ], [ 432069.997094223625027, 4573710.001862453296781 ], [ 432070.003771123767365, 4576020.004969835281372 ], [ 432089.996148600010201, 4576019.995550044812262 ], [ 432089.999220705183689, 4578309.99992694798857 ], [ 435599.999693800520618, 4578309.997087402269244 ], [ 435599.998053866147529, 4580620.004926175810397 ], [ 435620.002645967295393, 4580620.004860573448241 ], [ 435620.000208478188142, 4582899.999340737238526 ], [ 439119.996160004404373, 4582900.001367191784084 ], [ 439120.001291693770327, 4585210.003920141607523 ], [ 439140.001282509416342, 4585210.002260192297399 ], [ 439139.995867694611661, 4587529.994601557031274 ], [ 439159.997894499567337, 4587530.00395957287401 ], [ 439160.004062367079314, 4589810.001507630571723 ], [ 442530.000156055553816, 4589809.997306167148054 ], [ 442530.00382461521076, 4589779.997953494079411 ], [ 446130.001585977210198, 4589780.002487344667315 ], [ 446129.999093741760589, 4592070.005308855324984 ], [ 449629.996164548618253, 4592070.004920657724142 ], [ 449630.003394323750399, 4594359.997796197421849 ], [ 453119.995935025974177, 4594359.998247258365154 ], [ 453119.997189430170693, 4596650.004741185344756 ], [ 456609.99773196055321, 4596650.000451013445854 ], [ 456610.000726692378521, 4598950.002813678234816 ], [ 460099.99754756281618, 4598949.996267548762262 ], [ 460099.996403141471092, 4601240.000248851254582 ], [ 463470.004040822910611, 4601240.002119429409504 ], [ 463470.002614246332087, 4601219.995671994052827 ], [ 467059.996796686551534, 4601219.998766678385437 ], [ 467059.999982868495863, 4603519.999892676249146 ], [ 470539.996797018218786, 4603519.999294839799404 ], [ 470539.998519478423987, 4605819.997859071940184 ], [ 473899.997286544530652, 4605819.995560482144356 ], [ 473900.002683516475372, 4605810.003486283123493 ], [ 477489.996206543350127, 4605810.003761337138712 ], [ 477490.000285843154415, 4608110.00355535838753 ], [ 480969.999398654268589, 4608110.002983216196299 ], [ 480969.997662437905092, 4610419.995906699448824 ], [ 484450.004105352680199, 4610419.998172907158732 ], [ 484449.999565707694273, 4612720.001347167417407 ], [ 487919.996408737672027, 4612720.003600304014981 ], [ 487919.99991856579436, 4615030.002334136515856 ], [ 491279.998622754123062, 4615030.002395627088845 ], [ 491390.001954175997525, 4615030.002677500247955 ], [ 494859.997397566039581, 4615029.994888750836253 ], [ 494859.998204253613949, 4617339.995969426818192 ], [ 498320.002877864753827, 4617340.00338810030371 ], [ 498320.004065642599016, 4619650.000563970766962 ], [ 498319.996612298826221, 4619760.002755343914032 ], [ 498319.997508186090272, 4621959.995032800361514 ], [ 501680.002491815306712, 4621959.995032800361514 ], [ 501789.998949421918951, 4621959.999504533596337 ], [ 505249.999806352076121, 4621960.003268904052675 ], [ 505250.000770893297158, 4624279.999588990584016 ], [ 505250.003098135115579, 4624390.002641353756189 ], [ 505249.998970568820368, 4626590.001034764572978 ], [ 508709.998721669020597, 4626589.995558767579496 ], [ 508710.001787815941498, 4628910.000146590173244 ], [ 508710.00045798427891, 4629020.004113996401429 ], [ 508709.997469930851366, 4631219.998670036904514 ], [ 512159.996690591971856, 4631220.00508249271661 ], [ 512160.000833974627312, 4633530.004579707980156 ], [ 512160.000388750224374, 4633539.996952931396663 ], [ 515620.001280720869545, 4633540.000087545253336 ], [ 515619.995960660744458, 4633550.003573856316507 ], [ 519080.003980177105404, 4633549.998664556071162 ], [ 519080.003515087766573, 4635980.004867779091001 ], [ 519069.996198058826849, 4635980.000271997414529 ], [ 519069.998285189678427, 4638289.994772457517684 ], [ 519060.00247995153768, 4638290.001304872334003 ], [ 519059.997541540360544, 4640489.997505271807313 ], [ 519060.001267265179195, 4640600.004187894053757 ], [ 519059.996458395558875, 4642810.000967000611126 ], [ 522509.999339667439926, 4642809.998163257725537 ], [ 522510.000038274854887, 4645240.003090493381023 ], [ 522499.997391752433032, 4645240.004700994119048 ], [ 522500.000696140457876, 4647549.99580058362335 ], [ 519039.997266063117422, 4647549.994903248734772 ], [ 519040.001240184821654, 4649859.998175339773297 ], [ 519029.996855694218539, 4649860.004629651084542 ], [ 519029.996929907181766, 4652050.00379344355315 ], [ 519029.997554082074203, 4652170.005184617824852 ], [ 519029.999993221077602, 4654480.003055960871279 ], [ 519020.002159018535167, 4654479.998400001786649 ], [ 519019.999138670449611, 4656679.995175363495946 ], [ 519019.999247840140015, 4656799.997440366074443 ], [ 519020.000076966534834, 4659110.001052581705153 ], [ 519010.000511741091032, 4659109.996367 ], [ 519009.998058468743693, 4661419.997264359146357 ], [ 515559.996306445449591, 4661419.995547413825989 ], [ 515559.999598079186399, 4663729.998753931373358 ], [ 512109.997341105190571, 4663730.000142090953887 ], [ 512110.001144988753367, 4666030.002869985997677 ], [ 512100.003176541649736, 4666029.996819058433175 ], [ 512099.995989423419815, 4668230.000924874097109 ], [ 512099.996533347351942, 4668350.00480177719146 ], [ 512100.002533704100642, 4670540.001813357695937 ], [ 512100.002878058119677, 4670659.995023642666638 ], [ 512099.996740460454021, 4672970.004739842377603 ], [ 512090.000358054472599, 4672969.998668377287686 ], [ 512090.000820867193397, 4675170.004639260470867 ], [ 512090.000151145213749, 4675179.997667359188199 ], [ 515410.001527560758404, 4675180.00242150016129 ], [ 515530.003466033376753, 4675179.999830647371709 ], [ 518970.002240717876703, 4675179.996384032070637 ], [ 518970.000020056962967, 4675190.000558491796255 ], [ 522399.998622461629566, 4675190.004086824133992 ], [ 522400.000266119081061, 4677500.004215347580612 ], [ 522400.001420937129296, 4677509.997364286333323 ], [ 525829.99947360495571, 4677510.005154360085726 ], [ 525830.000285936519504, 4679830.004388672299683 ], [ 525829.996113847009838, 4679950.000736095942557 ], [ 525829.99945483810734, 4682260.004564309492707 ], [ 525819.999619728769176, 4682260.00108377635479 ], [ 525820.0027694364544, 4684470.002663932740688 ], [ 529239.996677974006161, 4684470.001227734610438 ], [ 529239.998179689864628, 4686899.99612751789391 ], [ 525799.999943950911984, 4686900.002493485808372 ], [ 525799.998255675309338, 4689200.004919460043311 ], [ 522250.000060586375184, 4689199.99718530010432 ], [ 522249.998864828492515, 4689190.003853235393763 ], [ 518819.999398283078335, 4689189.996079838834703 ], [ 518820.001544102677144, 4689180.002789015881717 ], [ 515499.998763890180271, 4689179.99641134031117 ], [ 515499.998215540894307, 4691490.000734216533601 ], [ 515490.003433232719544, 4691490.000813520513475 ], [ 515490.003183229127899, 4693680.00459792278707 ], [ 515490.0007793593104, 4693800.002432932145894 ], [ 515490.000947937602177, 4696110.001376314088702 ], [ 515479.996311033028178, 4696110.001416007988155 ], [ 515479.996873106167186, 4698430.002182899974287 ], [ 512050.003745893889572, 4698430.003595917485654 ], [ 512049.997334080631845, 4700729.998855204321444 ], [ 508620.000518009590451, 4700730.004589883610606 ], [ 508509.998230041004717, 4700730.002823447808623 ], [ 505190.002156599599402, 4700729.997330337762833 ], [ 505190.001643972995225, 4703039.999380783177912 ], [ 501659.996570607414469, 4703039.997791511006653 ], [ 501659.998949535016436, 4703030.004355877637863 ], [ 498340.001050466380548, 4703030.004355877637863 ], [ 498340.003429393982515, 4703039.997791511006653 ], [ 498340.002923028368969, 4705349.995899046771228 ], [ 494810.000686485785991, 4705349.998742398805916 ], [ 494809.998356028401759, 4703039.999380783177912 ], [ 491490.000090629037004, 4703039.99613337777555 ], [ 491490.004080542305019, 4703050.000684350728989 ], [ 488070.000250393117312, 4703050.005161173641682 ], [ 487949.998514574952424, 4703050.000520242378116 ], [ 484530.001565692131408, 4703049.997826166450977 ], [ 484530.0002828479046, 4700739.995821663178504 ], [ 484520.002276709186845, 4700739.995785131119192 ], [ 484520.003126895229798, 4698430.002182899974287 ], [ 481209.997818284726236, 4698429.995773221366107 ], [ 481210.000062493258156, 4698440.000313299708068 ], [ 477780.002301683940459, 4698440.000351537950337 ], [ 477780.000133156718221, 4698459.998410461470485 ], [ 474230.002810933743604, 4698460.004094403237104 ], [ 474229.999724113382399, 4696160.001395607367158 ], [ 470799.996554717537947, 4696159.999980916269124 ], [ 470800.000194580235984, 4693839.997826548293233 ], [ 470790.000327051617205, 4693839.995169973000884 ], [ 470790.003297571674921, 4691529.994948826730251 ], [ 470780.000174128392246, 4691530.003393727354705 ], [ 470780.002363384119235, 4689230.004996289499104 ], [ 467469.999372909602243, 4689229.995036065578461 ], [ 467469.99701680848375, 4691559.995541848242283 ], [ 464040.003835226467345, 4691560.0007363576442 ], [ 464039.999558019859251, 4691579.99895113799721 ], [ 460480.002960961719509, 4691579.997374529018998 ], [ 460479.996441946015693, 4689290.000354449264705 ], [ 457169.999155855388381, 4689289.994606920517981 ], [ 457169.9990809133742, 4691620.002516300417483 ], [ 453760.000503624731209, 4691620.004364653490484 ], [ 453759.998864514462184, 4693959.997225750237703 ], [ 450350.002378431148827, 4693960.000752565450966 ], [ 450349.998215901374351, 4696299.997290320694447 ], [ 446940.002377289056312, 4696300.004905682988465 ], [ 446939.998042466701008, 4698639.995244666002691 ], [ 443509.997397139843088, 4698640.004583415575325 ], [ 443510.001493452466093, 4698669.997902176342905 ], [ 440100.000718085269909, 4698669.999022000469267 ], [ 440099.997190834896173, 4701010.005487641319633 ], [ 436549.999106808274519, 4701010.000099576078355 ], [ 436549.999628385936376, 4698730.002902245149016 ], [ 433230.001832546549849, 4698729.998398385941982 ], [ 433230.000842347566504, 4698760.003722037188709 ], [ 429800.000380365352612, 4698759.995138574391603 ], [ 429799.999446823610924, 4698799.995254378765821 ], [ 426239.998015502351336, 4698800.000585450790823 ], [ 426240.001511410577223, 4696480.005264733918011 ], [ 426219.998114679707214, 4696480.005435697734356 ], [ 426219.99696162273176, 4694210.002368176355958 ], [ 422760.001083247887436, 4694210.005234251730144 ], [ 422760.002435156609863, 4691930.000370306894183 ], [ 419440.000530096876901, 4691929.995924040675163 ], [ 419439.999901027418673, 4691969.996997968293726 ], [ 416039.996533575467765, 4691969.994818395934999 ], [ 416040.002231530845165, 4694180.002120051532984 ], [ 416069.998140885378234, 4694179.997429906390607 ], [ 416069.99599594733445, 4696489.994922288693488 ], [ 416090.000464537064545, 4696489.999010337516665 ], [ 416090.00116043293383, 4698760.002945126965642 ], [ 419550.004070317256264, 4698759.996860145591199 ], [ 419550.003301678749267, 4701079.99889334384352 ], [ 419570.00246272579534, 4701080.001563470810652 ], [ 419569.998460318194702, 4703389.995072095654905 ], [ 419600.003773199161515, 4703390.004411256872118 ], [ 419599.998485042597167, 4705849.996932337060571 ], [ 416179.996921756421216, 4705849.998369162902236 ], [ 416180.001520691614132, 4705890.0007638130337 ], [ 412610.001675550010987, 4705889.995506602339447 ], [ 412610.00400779908523, 4703579.998637169599533 ], [ 412590.00313193211332, 4703580.005018277093768 ], [ 412589.995942459325306, 4701309.997257302515209 ], [ 409299.999064029077999, 4701309.996620529331267 ], [ 409300.002542652888224, 4703670.003056754358113 ], [ 405910.001908303413074, 4703670.001938638277352 ], [ 405910.001871507905889, 4706029.995207860134542 ], [ 402480.001971088466235, 4706030.003292376175523 ], [ 402480.003266443090979, 4706080.00359267462045 ], [ 399060.003463010129053, 4706080.000285448506474 ], [ 399059.996437950292602, 4706130.001473019830883 ], [ 395669.998725211597048, 4706129.994545386172831 ], [ 395670.003516548254993, 4708500.001124403439462 ], [ 392249.998376566683874, 4708500.00166028086096 ], [ 392249.999971287150402, 4708550.004519456066191 ], [ 388680.000396680668928, 4708550.00526075810194 ], [ 388679.998422478791326, 4706239.995664330199361 ], [ 388639.997384668502491, 4706240.001824867911637 ], [ 388639.997913881554268, 4703980.003962118178606 ], [ 385330.001018837559968, 4703980.000501537695527 ], [ 385330.00126812257804, 4704040.001143451780081 ], [ 381900.001646021613851, 4704040.001887179911137 ], [ 381900.001671063597314, 4704089.995922016911209 ], [ 378329.996503428614233, 4704090.004664490930736 ], [ 378330.000780243834015, 4701779.997946492396295 ], [ 378290.003763648797758, 4701779.995792008005083 ], [ 378289.997569005819969, 4699530.000110605731606 ], [ 375010.000866054266226, 4699529.99996623583138 ], [ 375010.00276995904278, 4701729.99644526746124 ], [ 375050.001197638455778, 4701730.00201512593776 ], [ 375050.001932621526066, 4704050.002961907535791 ], [ 375090.003300865355413, 4704049.997079554013908 ], [ 375090.00360176799586, 4706359.998436810448766 ], [ 375130.000132720277179, 4706360.00345931854099 ], [ 375129.998110981367063, 4708670.002182312309742 ], [ 375179.997682514076587, 4708670.005287317559123 ], [ 375179.996920612407848, 4710989.99825104419142 ], [ 375219.999710192845669, 4710990.002637329511344 ], [ 375219.99820568272844, 4713299.995910088531673 ], [ 375259.995921425928827, 4713300.000097844749689 ], [ 375260.000578183971811, 4715610.001694014295936 ], [ 375300.001216010539792, 4715609.994431846775115 ], [ 375299.996078632771969, 4718099.99830134678632 ], [ 371930.002060869126581, 4718099.9976029638201 ], [ 371930.002604694454931, 4720300.00138823967427 ], [ 371970.002016206446569, 4720299.99612448643893 ], [ 371969.996119249961339, 4722610.001791403628886 ], [ 372009.998606345441658, 4722609.99616695381701 ], [ 372009.996164272713941, 4724929.996597819030285 ], [ 372050.001858230913058, 4724930.001716216094792 ], [ 372050.002973850932904, 4727420.001804465427995 ], [ 368679.996778633387294, 4727419.995406663045287 ], [ 368679.998685762635432, 4729619.997916657477617 ], [ 368729.997981231543235, 4729620.004082954488695 ], [ 368729.997978776227683, 4732109.994635638780892 ], [ 365319.998159940703772, 4732110.000325763598084 ], [ 365320.002790732192807, 4732179.997365828603506 ], [ 361909.998776077700313, 4732179.996777870692313 ], [ 361910.001978000160307, 4732239.997112035751343 ], [ 358490.002413412323222, 4732239.994584398344159 ], [ 358490.002770814229734, 4732320.004256727173924 ], [ 355079.998591502720956, 4732319.995668645948172 ], [ 355080.000537699088454, 4732389.997323331423104 ], [ 351670.001076796441339, 4732390.004272689111531 ], [ 351669.996398883056827, 4732459.996552900411189 ], [ 348310.003249268862419, 4732459.998859751969576 ], [ 348310.001546954270452, 4734669.99569027684629 ], [ 348359.998437807313167, 4734669.997520169243217 ], [ 348360.001299253781326, 4736980.00489969085902 ], [ 348409.997586236975621, 4736979.995200059376657 ], [ 348410.0005134959938, 4739479.996276296675205 ], [ 345010.002870257012546, 4739480.000262338668108 ], [ 345010.000863404304255, 4739559.996015564538538 ], [ 341599.997178570600227, 4739559.994847289286554 ], [ 341600.001675931969658, 4739630.003806365653872 ], [ 338189.999733448261395, 4739629.999336093664169 ], [ 338190.000637128890958, 4739719.998924341052771 ], [ 334839.99990145873744, 4739719.998526304028928 ], [ 334839.998836374492384, 4742109.997251529246569 ], [ 331429.996322864317335, 4742109.994594608433545 ], [ 331429.997877597576007, 4742199.999122215434909 ], [ 328079.998707126243971, 4742199.997209586203098 ], [ 328080.003070999518968, 4744599.99742369633168 ], [ 324740.003243182552978, 4744599.996873980388045 ], [ 324740.001071190228686, 4747000.004063602536917 ], [ 321329.999455947952811, 4747000.002661763690412 ], [ 321329.998713908833452, 4747090.004090500064194 ], [ 317989.997186739521567, 4747089.995378653518856 ], [ 317990.003084707597736, 4749490.000209673307836 ], [ 314579.998911735136062, 4749489.997400709427893 ], [ 314579.999222087848466, 4749580.004236647859216 ], [ 311179.998175882035866, 4749579.994770896621048 ], [ 311179.998728081292938, 4749679.995394786819816 ], [ 307600.003941535833292, 4749680.00098046194762 ], [ 307600.003675098065287, 4747360.003268215805292 ], [ 307540.001236588694155, 4747360.003597786650062 ], [ 307540.002099816862028, 4745049.994736094027758 ], [ 307470.000334074080456, 4745049.996187440119684 ], [ 307469.99750374420546, 4742739.995737880468369 ], [ 307410.003856625349727, 4742739.994526907801628 ], [ 307410.002142775396351, 4740520.002351873554289 ], [ 303939.996527199749835, 4740520.004171430133283 ], [ 303939.996950091270264, 4738209.99525838997215 ], [ 303869.996281434490811, 4738209.995596446096897 ], [ 303869.999892057501711, 4735690.005455992184579 ], [ 307220.003284871403594, 4735689.998508241958916 ], [ 307220.002461351105012, 4733480.0001235390082 ], [ 307149.997831429122016, 4733479.997815418988466 ], [ 307150.001692029531114, 4731169.994944010861218 ], [ 307089.997829367290251, 4731170.00184123031795 ], [ 307090.00078568700701, 4728859.996386276558042 ], [ 307019.99884836061392, 4728860.003605985082686 ], [ 307019.99791779514635, 4726540.00433418340981 ], [ 306960.002769037499093, 4726539.998574681580067 ], [ 306960.000522681511939, 4724019.99749200232327 ], [ 310309.99762822012417, 4724020.002515064552426 ], [ 310309.998725690646097, 4721820.000717034563422 ], [ 310249.998223427450284, 4721819.997573995031416 ], [ 310250.00163074262673, 4719300.000688002444804 ], [ 313599.999956028186716, 4719300.004410004243255 ], [ 313599.996809512434993, 4717100.00512826628983 ], [ 313539.999185122782364, 4717100.004458816722035 ], [ 313540.001272159046493, 4714789.996621919795871 ], [ 313480.000121743418276, 4714789.995399287901819 ], [ 313479.996812836965546, 4712569.997827981598675 ], [ 309990.003623412107117, 4712569.994666039943695 ], [ 309990.001558379852213, 4710250.001308718696237 ], [ 309929.999659133492969, 4710249.995020003058016 ], [ 309929.997192048584111, 4707940.000749167986214 ], [ 309870.000346341170371, 4707940.004766320809722 ], [ 309870.003275506140199, 4705629.996592993848026 ], [ 309810.002984390303027, 4705630.000035014003515 ], [ 309810.002480913884938, 4703309.998859993182123 ], [ 309740.000629846472293, 4703309.996623962186277 ], [ 309740.004212728061248, 4701000.005215355195105 ], [ 309679.996693507710006, 4700999.996484119445086 ], [ 309679.997635264415294, 4698690.002502053044736 ], [ 309620.003485906287096, 4698690.003850108012557 ], [ 309619.998666748637334, 4696169.999073688872159 ], [ 312979.997180158447009, 4696170.000417150557041 ], [ 312979.996232829638757, 4694060.002534439787269 ], [ 309490.003625726210885, 4694060.002098051831126 ], [ 309489.998872359457891, 4691540.004506004974246 ], [ 312860.00122909178026, 4691539.996560169383883 ], [ 312859.996481944806874, 4689340.004736212082207 ], [ 312799.998627575463615, 4689339.996451781131327 ], [ 312799.999963504262269, 4687030.000854985788465 ], [ 312739.999118752079085, 4687030.003114987164736 ], [ 312740.001690876786597, 4684710.003829536959529 ], [ 312669.997867335390765, 4684709.994718017056584 ], [ 312669.996547035232652, 4682400.004803621210158 ], [ 312609.997044750023633, 4682399.994700499810278 ], [ 312609.997779437340796, 4680179.999135013669729 ], [ 309109.996602011146024, 4680180.000773190520704 ], [ 309109.997530004475266, 4677860.003531662747264 ], [ 309049.998173501633573, 4677859.999236355535686 ], [ 309050.003597154514864, 4675550.000423416495323 ], [ 308990.001052792416885, 4675549.995545651763678 ], [ 308990.003696217900142, 4673240.005263747647405 ], [ 308919.998554535675794, 4673240.004457321017981 ], [ 308919.996098007308319, 4670919.999291473999619 ], [ 308860.003966656338889, 4670920.003985585644841 ], [ 308859.997035241511185, 4668609.997379338368773 ], [ 308800.001777517958544, 4668610.001489333808422 ], [ 308800.00020665867487, 4666300.003189912997186 ], [ 308740.001540369761642, 4666299.995611177757382 ], [ 308740.001705509494059, 4664080.003121257759631 ], [ 305230.001056408742443, 4664079.99756074976176 ], [ 305229.999741433304735, 4661770.003035061061382 ], [ 305160.001807548105717, 4661769.999036338180304 ], [ 305160.001087308512069, 4659450.00048372708261 ], [ 305099.999765923013911, 4659449.998076010495424 ], [ 305099.999440250452608, 4657139.998083189129829 ], [ 305040.003365822252817, 4657139.994840838015079 ], [ 305040.001128465635702, 4654830.00337038282305 ], [ 304970.000764279742725, 4654829.997116011567414 ], [ 304969.999552066554315, 4652610.001219311729074 ], [ 301459.998063869774342, 4652610.0026442296803 ], [ 301459.999264451558702, 4650390.003307247534394 ], [ 297939.996419143455569, 4650389.998927799984813 ], [ 297940.001928045472596, 4648179.996372277848423 ], [ 294419.997732226911467, 4648179.99764531198889 ], [ 294419.997611794504337, 4645860.00237331353128 ], [ 294349.998890025715809, 4645859.995053158141673 ], [ 294349.996409919054713, 4643340.004868690855801 ], [ 297739.999184643267654, 4643339.997544868849218 ], [ 297739.9976846287027, 4641139.998973184265196 ], [ 297680.002347785979509, 4641140.004915191791952 ], [ 297679.999651398160495, 4638829.998055350035429 ], [ 297610.001582526834682, 4638829.998725855723023 ], [ 297610.002308438997716, 4636610.001711666584015 ], [ 294079.998940697289072, 4636609.999384769238532 ], [ 294080.003974836668931, 4634399.998021576553583 ], [ 290559.998848053801339, 4634399.997356109321117 ], [ 290560.003596943221055, 4632190.000509522855282 ], [ 287029.998841768945567, 4632190.003640071488917 ], [ 287029.997287099249661, 4629869.996395021677017 ], [ 286960.001338617294095, 4629869.995551879517734 ], [ 286960.001851566601545, 4627670.001175789162517 ], [ 283420.000284559151623, 4627669.99941929616034 ], [ 283420.000884157489054, 4625460.004653253592551 ], [ 279889.996436127112247, 4625460.002250787802041 ], [ 279889.997078755812254, 4623139.999699416570365 ], [ 279820.003411563811824, 4623139.997354805469513 ], [ 279819.999939480156172, 4620940.003439853899181 ], [ 276279.999138204962946, 4620939.996499280445278 ], [ 276280.002257871325128, 4618630.00172832608223 ], [ 276210.002713648369536, 4618629.998339514248073 ], [ 276209.99691184994299, 4616309.998119167052209 ], [ 276129.99895117583219, 4616309.994801048189402 ], [ 276129.997358671273105, 4613999.99462900031358 ], [ 276060.002935790573247, 4614000.000476835295558 ], [ 276059.996198744280264, 4611689.9977807700634 ], [ 275989.995922020170838, 4611690.002907034009695 ], [ 275989.997814268572256, 4609370.005432772450149 ], [ 275919.999594151566271, 4609369.998469384387136 ], [ 275920.003808378707618, 4606840.004129533655941 ], [ 279389.996220199740492, 4606839.99949277471751 ], [ 279389.999166324152611, 4606739.996044894680381 ], [ 282789.997013127780519, 4606739.999400103464723 ], [ 282789.998896222328767, 4604529.999539347365499 ], [ 282720.002369880094193, 4604530.001056025736034 ], [ 282719.996671482105739, 4602219.998580013401806 ], [ 282650.002718261384871, 4602219.999163959175348 ], [ 282649.99798794160597, 4599910.005031771957874 ], [ 282579.99828856025124, 4599910.004933991469443 ], [ 282580.000753337983042, 4597699.995336894877255 ], [ 279219.995812751934864, 4597699.995195892639458 ], [ 279219.996357393101789, 4597809.999421302229166 ], [ 275560.001283041667193, 4597810.001738811843097 ], [ 275560.003623518627137, 4595489.999299502000213 ], [ 275479.999712280521635, 4595489.998178574256599 ], [ 275480.003850513370708, 4593179.995524441823363 ], [ 275409.999263794219587, 4593180.004838 ], [ 275409.997849726642016, 4590869.999659503810108 ], [ 275340.003967205295339, 4590869.996622019447386 ], [ 275339.99615954014007, 4588549.997447296977043 ], [ 275269.996889336325694, 4588550.004780287854373 ], [ 275270.001621238421649, 4586240.005170091986656 ], [ 275199.996389915817417, 4586240.000669984146953 ], [ 275200.003795931406785, 4583929.998275693506002 ], [ 275130.00167629646603, 4583930.003888672217727 ], [ 275130.002900246588979, 4581609.996482594870031 ], [ 275049.996334621449932, 4581610.000452139414847 ], [ 275049.998087326181121, 4579300.00375843141228 ], [ 274980.001129637472332, 4579299.996378472074866 ], [ 274979.999054395477287, 4576769.999268997460604 ], [ 278399.997629917925224, 4576770.003846218809485 ], [ 278399.99677499209065, 4574570.003328936174512 ], [ 278329.999838451389223, 4574570.004993795417249 ], [ 278329.999531494919211, 4572249.998890902847052 ], [ 278259.997012350359, 4572249.999839608557522 ], [ 278259.999436306883581, 4570050.003661084920168 ], [ 274700.000972077948973, 4570049.997816018760204 ], [ 274699.998949033906683, 4567739.998854925855994 ], [ 274619.998831060831435, 4567739.996526325121522 ], [ 274620.000799911678769, 4565529.994767319411039 ], [ 271060.002138829790056, 4565529.995167239569128 ], [ 271059.996654537622817, 4563220.000038371421397 ], [ 270990.001100542838685, 4563219.997616765089333 ], [ 270989.999972410209011, 4561020.00515943672508 ], [ 267419.997248710074928, 4561019.998752169311047 ], [ 267420.00193621055223, 4558810.000860259868205 ], [ 263840.001029406790622, 4558810.000823309645057 ], [ 263840.001176272693556, 4556500.000845870003104 ], [ 263770.001279814634472, 4556499.996174230240285 ], [ 263769.998978882562369, 4554190.004748200066388 ], [ 263689.997872665117029, 4554189.999974139966071 ], [ 263689.997966742375866, 4551880.005591752938926 ], [ 263619.995860045775771, 4551879.999132259748876 ], [ 263619.998241963214241, 4549559.998986106365919 ], [ 263549.999532276531681, 4549560.002546980045736 ], [ 263550.002523457747884, 4547250.002822532318532 ], [ 263470.001241435762495, 4547249.994804104790092 ], [ 263469.996753003913909, 4544710.001930739730597 ], [ 266899.998660654993728, 4544709.995539820753038 ], [ 266900.002561087254435, 4542510.001138587482274 ], [ 266829.998979276162572, 4542510.002003152854741 ], [ 266830.00240227393806, 4539979.997971673496068 ], [ 270260.002146412734874, 4539979.996487775817513 ], [ 270260.002589579438791, 4537770.004098331555724 ], [ 270189.999427016300615, 4537770.003073492087424 ], [ 270189.99767816363601, 4535569.9982770383358 ], [ 266610.000788830337115, 4535569.994448252022266 ], [ 266609.999087586184032, 4533260.004921487532556 ], [ 266530.0012328834855, 4533259.99674732517451 ], [ 266530.000405042606872, 4530950.004277559928596 ], [ 266459.996259685605764, 4530950.000578369945288 ], [ 266460.003071049344726, 4528630.00281763356179 ], [ 266390.002179865608923, 4528629.998055453412235 ], [ 266390.001134499034379, 4526320.000262588262558 ], [ 266310.004168896004558, 4526320.000007599592209 ], [ 266310.003875993366819, 4524009.999271171167493 ], [ 266240.001669585006312, 4524010.00385332480073 ], [ 266240.001156451588031, 4521689.998178884387016 ], [ 266170.002276784274727, 4521690.001695977523923 ], [ 266170.00150065345224, 4519379.995635351166129 ], [ 266089.997222773963585, 4519380.003558792173862 ], [ 266090.002230773156043, 4517179.996180085465312 ], [ 262690.001900706673041, 4517179.999341526068747 ], [ 262689.998549310083035, 4517290.005018190480769 ], [ 258990.0023488937004, 4517289.999087851494551 ], [ 258990.003152894525556, 4514979.999835666269064 ], [ 258910.002193510037614, 4514980.003671479411423 ], [ 258909.997388604213484, 4512670.001720394939184 ], [ 258839.998918585537467, 4512670.001266948878765 ], [ 258839.996466146956664, 4510129.999176405370235 ], [ 262360.003940176975448, 4510129.998252022080123 ], [ 262359.997315034037456, 4510020.005129186436534 ], [ 265799.999961054883897, 4510019.998885232955217 ], [ 265800.001875101123005, 4507589.999358547851443 ], [ 269250.001308661769144, 4507589.999755456112325 ], [ 269249.997147156042047, 4505499.99487166851759 ], [ 265659.996016858611256, 4505500.005624862387776 ], [ 265659.998812538688071, 4503190.002414025366306 ], [ 265579.997283428208902, 4503190.002827920019627 ], [ 265580.001144065987319, 4500659.998710844665766 ], [ 269039.999846224265639, 4500660.000822782516479 ], [ 269039.999021777242888, 4498229.999541094526649 ], [ 272559.997503111837432, 4498229.998769164085388 ], [ 272559.999365829920862, 4498129.997881448827684 ], [ 276020.00398585095536, 4498129.998181630857289 ], [ 276019.998747740872204, 4495709.995156968943775 ], [ 279480.003921187715605, 4495710.000106263905764 ], [ 279480.002761899260804, 4493509.996527491137385 ], [ 279409.997268736362457, 4493510.001134619116783 ], [ 279409.996400331787299, 4490980.002467009238899 ], [ 282869.997980243409984, 4490979.996050633490086 ], [ 282870.001439255196601, 4488570.001779474318027 ], [ 286399.995912368409336, 4488570.002100352197886 ], [ 286400.000835966260638, 4488470.00472635962069 ], [ 289929.999966211675201, 4488469.994999750517309 ], [ 289930.001354870502837, 4488370.000910380855203 ], [ 293630.002475327230059, 4488370.002074592746794 ], [ 293629.999921411275864, 4490580.002789653837681 ] ] ] } } +] +} diff --git a/product_metadata.json b/data/product_metadata.json similarity index 100% rename from product_metadata.json rename to data/product_metadata.json diff --git a/metadata.txt b/metadata.txt index 4581525..5824188 100644 --- a/metadata.txt +++ b/metadata.txt @@ -28,8 +28,15 @@ email=qgis.openicgc@icgc.cat qgisMinimumVersion=2.99 qgisMaximumVersion=3.99 -version=1.1.12 -changelog=v1.1.12 (2023-03-22) +version=1.1.13 +changelog=v1.1.13 (2023-04-18) + - Added FiraSans font to symbolization + - Fixed problems with selection in photograms dialog based on geojson query with regional settings not in english + - Fixed problems loading Catalonia limit geojsons with regional settings not in english + - Fixed problems downloading photograms with polygons layer + - Fixed problems operating with result of photo name search + + v1.1.12 (2023-03-22) - Added product information links on map layers and download tool - Added sort columns option to geofinder dialog - Fixed compatibility problems with QGIS v3.30 @@ -95,7 +102,7 @@ changelog=v1.1.12 (2023-03-22) - Added access to ICGC historical photo library (visualization and downloads) - Added download geological map GT I and GT VI product - Fixed timeline bars to skip one year when click on it - + v1.0.7 (2022-01-18) - Fixed problems with buttons activation events - Fixed problem accessing to annual orthophoto layers diff --git a/openicgc.py b/openicgc.py index 661fe36..f075183 100644 --- a/openicgc.py +++ b/openicgc.py @@ -28,8 +28,6 @@ import io import logging import json -import locale -locale.setlocale(locale.LC_ALL, '') from urllib.request import urlopen, Request from urllib.parse import urljoin, quote from importlib import reload @@ -63,7 +61,8 @@ from .qlib3.downloaddialog.downloaddialog import DownloadDialog # Import wms resources access functions from .resources3.wms import get_historic_ortho, get_lastest_ortoxpres, get_superexpedita_ortho, get_full_ortho - from .resources3.fme import get_clip_data_url, get_services, get_historic_ortho_code, get_historic_ortho_ref, get_regex_styles as get_fme_regex_styles, FME_DOWNLOAD_EPSG + from .resources3.fme import get_clip_data_url, get_services, get_historic_ortho_code, get_historic_ortho_ref + from .resources3.fme import get_regex_styles as get_fme_regex_styles, FME_DOWNLOAD_EPSG, FME_MAX_POLYGON_POINTS from .resources3.http import get_dtms, get_sheets, get_delimitations, get_ndvis, get_topographic_5k, get_regex_styles as get_http_regex_styles from .resources3 import http as http_resources, wms as wms_resources, fme as fme_resources else: @@ -95,7 +94,8 @@ from resources3.wms import get_historic_ortho, get_lastest_ortoxpres, get_superexpedita_ortho, get_full_ortho import resources3.fme reload(resources3.fme) - from resources3.fme import get_clip_data_url, get_services, get_historic_ortho_code, get_historic_ortho_ref, get_regex_styles as get_fme_regex_styles, FME_DOWNLOAD_EPSG + from resources3.fme import get_clip_data_url, get_services, get_historic_ortho_code, get_historic_ortho_ref + from resources3.fme import get_regex_styles as get_fme_regex_styles, FME_DOWNLOAD_EPSG, FME_MAX_POLYGON_POINTS import resources3.http reload(resources3.http) from resources3.http import get_dtms, get_sheets, get_delimitations, get_ndvis, get_topographic_5k, get_regex_styles as get_http_regex_styles @@ -106,7 +106,7 @@ # Constants PHOTOLIB_WFS_MAX_FEATURES = 1000 -PHOTOLIB_WFS = "https://fototeca-connector.icgc.cat/" +PHOTOLIB_WFS = "https://fototeca-connector.icgc.cat/" PHOTOLIB_WMS = PHOTOLIB_WFS @@ -189,7 +189,7 @@ def canvasReleaseEvent(self, event): if event.button() == Qt.LeftButton: self.subscene(event.pos().x(), event.pos().y()) - def subscene(self, x=0, y=0): + def subscene(self, x=None, y=None): # Gets selection geometry area = None if self.mode_area_not_point: @@ -197,7 +197,7 @@ def subscene(self, x=0, y=0): geo = self.rubberBand.asGeometry() if geo: area = geo.boundingBox() - if not area: + if not area and x is not None and y is not None: # If not area then we takes a point point = self.toMapCoordinates(QPoint(x, y)) area = QgsRectangle(point.x(), point.y(), point.x(), point.y()) @@ -243,7 +243,7 @@ class UpdateType: plugin_manager = 0 qgis_web = 1 icgc_web = 2 - + class OpenICGC(PluginBase): """ Plugin for accessing open data published by ICGC """ @@ -312,7 +312,7 @@ class OpenICGC(PluginBase): #"photo": "Photo library", } - PRODUCT_METADATA_FILE = os.path.join(os.path.dirname(__file__), "product_metadata.json") + PRODUCT_METADATA_FILE = os.path.join(os.path.dirname(__file__), "data", "product_metadata.json") download_action = None time_series_action = None @@ -347,6 +347,9 @@ def __init__(self, iface, debug_mode=False): wms_resources.log = self.log fme_resources.log = self.log + # Load extra fonts (Fira Sans) + self.load_fonts() + # Translated long tooltip text self.TOOLTIP_HELP = self.tr("""Find: Address: municipality, street number or vice versa @@ -541,27 +544,25 @@ def get_catalonia_limits(self, filename, buffer=0, segments=10): """ Gets Catalonia limits from geojson resource file Apply 250m of buffer to fix possible errors on CAT envolope scale 1:1,000,000 """ pathname = os.path.join(self.plugin_path, "data", "%s.geojson" % filename) - with open(pathname, "r") as fin: - geojson_text = fin.read() if not os.path.exists(pathname): self.log.warning("Geometry limits %s file not found %s", filename, pathname) return None, None - tmp_layer = QgsVectorLayer(pathname, "cat_geojson", "ogr") + tmp_layer = QgsVectorLayer(pathname, "cat_limits", "ogr") if tmp_layer.featureCount() < 1: - self.log.warning("Load geometry limits %s error: %s\nFeatures: %s\nGeoJson: %s", - filename, pathname, tmp_layer.featureCount(), geojson_text) - geom = tmp_layer.getFeature(0).geometry().buffer(buffer, segments) + self.log.warning("Load geometry limits %s error: %s\nFeatures: %s", + filename, pathname, tmp_layer.featureCount()) + geom = list(tmp_layer.getFeatures())[0].geometry().buffer(buffer, segments) if not geom or geom.isEmpty(): - self.log.warning("Load geometry limits %s empty: %s\nFeatures: %s\nGeoJson: %s", - filename, pathname, tmp_layer.featureCount(), geojson_text) + self.log.warning("Load geometry limits %s empty: %s\nFeatures: %s", + filename, pathname, tmp_layer.featureCount()) epsg = tmp_layer.crs().authid() - self.log.info("Load geometry limits: %s (features: %s, empty: %s, buffer: %s, segments: %s, EPSG:%s)", + self.log.info("Load geometry limits: %s (features: %s, empty: %s, buffer: %s, segments: %s, EPSG:%s)", pathname, tmp_layer.featureCount(), geom.isEmpty(), buffer, segments, epsg) return geom, epsg def format_scale(self, scale): """ Format scale number with locale separator """ - text = locale.format_string("%d", scale, grouping=True) + text = format(scale, ",d") if self.translation.get_qgis_language() in ['ca', 'es']: text = text.replace(',', '.') return text @@ -615,8 +616,8 @@ def initGui(self, check_qgis_updates=True, check_icgc_updates=False): ortoxpres_color_list = [(str(year), layer_id, layer_name) for layer_id, layer_name, ortho_type, color, year in historic_ortho_list if ortho_type == "ortoxpres" and color != "irc"] ortoxpres_color_year, ortoxpres_color_layer_id, ortoxpres_color_layer_name = ortoxpres_color_list[-1] if ortoxpres_color_list else (None, None, None) ortoxpres_infrared_list = [(str(year), layer_id, layer_name) for layer_id, layer_name, ortho_type, color, year in historic_ortho_list if ortho_type == "ortoxpres" and color == "irc"] - ortoxpres_infrared_year, ortoxpres_infrared_layer_id, ortoxpres_infrared_layer_name = ortoxpres_infrared_list[-1] if ortoxpres_infrared_list else (None, None, None) - + ortoxpres_infrared_year, ortoxpres_infrared_layer_id, ortoxpres_infrared_layer_name = ortoxpres_infrared_list[-1] if ortoxpres_infrared_list else (None, None, None) + # Gets anaglyph fotograms. Last year can not have full photograms coverage, we select previous year as default photolib_wms_url = PHOTOLIB_WMS photolib_time_series_list, photolib_current_time = self.layers.get_wms_t_time_series(photolib_wms_url, "anaglif_central") @@ -804,15 +805,15 @@ def initGui(self, check_qgis_updates=True, check_icgc_updates=False): "---", (self.tr("Centered anaglyph photogram"), None, QIcon(":/lib/qlib3/photosearchselectiondialog/images/stereo_preview.png"), [ (self.tr("Centered anaglyph photogram %s (annual serie)") % anaglyph_year, - lambda _checked,anaglyph_year=anaglyph_year,anaglyph_layer=anaglyph_layer:self.add_wms_t_layer(self.tr("[AS] Centered anaglyph phootogram"), photolib_wms_url, anaglyph_layer, str(anaglyph_year), "central,100,false", "image/png", None, None, 25831, "referer=ICGC", self.backgroup_map_group_name, only_one_map_on_group=False, set_current=False), + lambda _checked,anaglyph_year=anaglyph_year,anaglyph_layer=anaglyph_layer:self.add_wms_t_layer(self.tr("[AS] Centered anaglyph phootogram"), photolib_wms_url, anaglyph_layer, str(anaglyph_year), "central,100,false", "image/png", None, None, 25831, "referer=ICGC", self.backgroup_map_group_name, only_one_map_on_group=False, set_current=False), QIcon(":/lib/qlib3/photosearchselectiondialog/images/stereo_preview.png") ) for anaglyph_year, anaglyph_layer in reversed(photolib_time_series_list)]) ] + ([ (self.tr("Centered rectified photogram (annual serie)"), - lambda _checked:self.add_wms_t_layer(self.tr("[AS] Centered rectified photogram"), photolib_wms_url, "ortoxpres_central", photolib_current_time, "central", "image/png", None, None, 25831, "referer=ICGC", self.backgroup_map_group_name, only_one_map_on_group=False, set_current=False), + lambda _checked:self.add_wms_t_layer(self.tr("[AS] Centered rectified photogram"), photolib_wms_url, "ortoxpres_central", photolib_current_time, "central", "image/png", None, None, 25831, "referer=ICGC", self.backgroup_map_group_name, only_one_map_on_group=False, set_current=False), QIcon(":/lib/qlib3/photosearchselectiondialog/images/rectified_preview.png")), (self.tr("Centered photogram (annual serie)"), - lambda _checked:self.add_wms_t_layer(self.tr("[AS] Centered photogram"), photolib_wms_url, "foto_central", photolib_current_time, "central", "image/png", None, None, 25831, "referer=ICGC", self.backgroup_map_group_name, only_one_map_on_group=False, set_current=False), + lambda _checked:self.add_wms_t_layer(self.tr("[AS] Centered photogram"), photolib_wms_url, "foto_central", photolib_current_time, "central", "image/png", None, None, 25831, "referer=ICGC", self.backgroup_map_group_name, only_one_map_on_group=False, set_current=False), QIcon(":/lib/qlib3/photosearchselectiondialog/images/photo_preview.png")), ] if self.debug_mode else []) + [ "---" @@ -1012,7 +1013,7 @@ def get_download_menu(self, fme_services_list, raster_not_vector=None, nested_do prefix_id = id[:2] if id else None previous_id = fme_extra_services_list[i-1][0] if i > 0 else id previous_prefix_id = previous_id[:2] - + # If break group prefix, create a grouped menu entry if previous_prefix_id != prefix_id: # Find group product common prefix @@ -1037,7 +1038,7 @@ def get_download_menu(self, fme_services_list, raster_not_vector=None, nested_do QIcon(self.FME_ICON_DICT.get(previous_prefix_id, None)), True, True, previous_prefix_id, self.manage_metadata_button(self.FME_METADATA_DICT.get(previous_id, None) \ - or self.FME_METADATA_DICT.get(previous_prefix_id, None)), + or self.FME_METADATA_DICT.get(previous_prefix_id, None)), True )) gsd_info_dict = {} @@ -1083,7 +1084,7 @@ def get_download_menu(self, fme_services_list, raster_not_vector=None, nested_do previous_id = fme_extra_services_list[i-1][0] if i > 0 else id previous_prefix_id = previous_id[:2] if previous_id else None # If change 2 first characters the inject a separator - if prefix_id != previous_prefix_id: + if prefix_id != previous_prefix_id: fme_extra_services_list.append((None, None, None, None, None, None, None, None, None, None, None)) # 10 + 1 (vectorial_not_raster) vectorial_not_raster = not self.is_raster_file(filename) fme_extra_services_list.append((id, name, min_side, max_query_area, min_px_side, max_px_area, filename, limits, vectorial_not_raster, url_pattern, url_ref_or_wms_tuple)) # 8 params @@ -1095,7 +1096,7 @@ def get_download_menu(self, fme_services_list, raster_not_vector=None, nested_do QIcon(self.FME_ICON_DICT.get(id[:2], None)), True, True, id, # Indiquem: actiu, checkable i un id d'acció self.manage_metadata_button(self.FME_METADATA_DICT.get(id, None) \ - or self.FME_METADATA_DICT.get(prefix_id, None)), + or self.FME_METADATA_DICT.get(prefix_id, None)), True ) if id else "---" for id, name, min_side, max_query_area, min_px_side, max_px_area, filename, limits, vectorial_not_raster, url_pattern, url_ref_or_wms_tuple in fme_extra_services_list ] @@ -1124,7 +1125,7 @@ def on_change_photo_selection(self): if self.photo_search_dialog and self.photo_search_dialog.isVisible(): photo_id, flight_year, _flight_code, _filename, _photo_name, gsd, _epsg = self.get_selected_photo_info(show_errors=False) if self.photo_search_dialog: - self.photo_search_dialog.select_photo(photo_id, flight_year) + self.photo_search_dialog.select_photo(photo_id, flight_year, update_map=False) if self.tool_subscene: self.tool_subscene.set_gsd(gsd) @@ -1177,12 +1178,12 @@ def add_wms_t_layer(self, layer_name, url, layer_id, time, style, image_format, self.time_series_action.setChecked(self.tools.time_series_dialog is not None and self.tools.time_series_dialog.isVisible()) # Show stereo anaglyph options if layer_id and layer_id.lower().startswith("anaglif"): - self.tools.show_anaglyph_dialog(layer, self.tr("Anaglyph"), self.tr("Anaglyph"), self.tr("Inverted stereo")) + self.tools.show_anaglyph_dialog(layer, self.tr("Anaglyph"), self.tr("Anaglyph"), self.tr("Inverted stereo")) # Show "on the fly" central photogram rendering layers warning if layer_id and layer_id.lower().endswith("_central"): message = self.tr("This layer renders only the most centered photogram in the map view, you can zoom in for continuous navigation. Please note that current year may not have full photogram coverage") self.iface.messageBar().pushMessage(layer_name, message, level=Qgis.Info, duration=10) - + return layer def find(self, user_text): @@ -1222,7 +1223,7 @@ def find(self, user_text): scale = self.geofinder_dialog.get_scale() # We resituate the map (implemented in parent PluginBase) self.set_map_point(x, y, epsg, scale) - + def is_unsupported_file(self, pathname): return self.is_file_type(pathname, ["dgn", "dwg"]) def is_unsupported_extension(self, ext): @@ -1267,7 +1268,7 @@ def enable_download_subscene(self, data_type, name, min_side, max_download_area, if is_photo: # If we want download a photogram, we need have select it one photo_id, _flight_year, _flight_code, _filename, _photo_name, gsd, _epsg = self.get_selected_photo_info() - if not photo_id: + if photo_id is None: action.setChecked(False) self.gui.enable_tool(None) return @@ -1310,7 +1311,7 @@ def enable_download_subscene(self, data_type, name, min_side, max_download_area, download_description, download_operation_code = fme_download_type_dict[self.download_type] time_code = self.download_dialog.get_year() gsd = self.download_dialog.get_gsd() - if gsd_dict and gsd: + if gsd_dict and gsd: data_type, name, min_side, max_download_area, min_px_side, max_px_area, time_list, download_list, filename, limits, url_ref_or_wms_tuple = gsd_dict[gsd] # Changes icon and tooltip of download button @@ -1327,7 +1328,7 @@ def enable_download_subscene(self, data_type, name, min_side, max_download_area, color_not_irc = data_type.startswith("hc") ref_file = get_historic_ortho_ref(color_not_irc, gsd, time_code) url_ref_or_wms_tuple = (ref_file, symbol_file) if ref_file else None - name += " %d" % time_code + name += " %d" % time_code self.load_last_ref_layer = lambda:self.load_ref_layer(url_ref_or_wms_tuple, name) self.load_last_ref_layer() @@ -1373,7 +1374,7 @@ def enable_download_tool(self, with_ref_layer=False): self.tool_subscene.subscene() def download_map_area(self, geo, data_type, min_side, max_download_area, min_px_side, max_px_area, gsd, time_code, download_operation_code, local_filename, limits="cat_simple"): - """ Download a FME server data area (limited to max_download_area) """ + """ Download a FME server data area (limited to max_download_area) """ # Check download file type filename, ext = os.path.splitext(local_filename) @@ -1395,7 +1396,7 @@ def download_map_area(self, geo, data_type, min_side, max_download_area, min_px_ ortho_code = get_historic_ortho_code(rgb_not_irc, gsd, time_code) extra_params = [ortho_code] filename = "%s_%s" % (os.path.splitext(filename)[0], time_code) - + # Get download geometry geo = self.download_get_geometry(geo, download_epsg, min_side, max_download_area, min_px_side, max_px_area, gsd, limits) if not geo: @@ -1508,7 +1509,7 @@ def download_map_area(self, geo, data_type, min_side, max_download_area, min_px_ def download_get_geometry(self, geo, download_epsg, min_side, max_download_area, min_px_side, max_px_area, gsd, limits, default_point_buffer=50): """ Gets geometry to download """ - title = self.tr("Download tool") + title = self.tr("Download tool") epsg = None if self.download_type == 'dt_coord': @@ -1554,18 +1555,17 @@ def download_get_geometry(self, geo, download_epsg, min_side, max_download_area, return None if self.download_type == 'dt_layer_polygon': # Check geometry max number of points - max_polygons_points = 100 polygons_points_count = sum(1 for _v in multipolygon.vertices()) - if polygons_points_count > max_polygons_points: - self.log.warning("Download type polygon with too many points %d / %d", polygons_points_count, max_polygons_points) + if polygons_points_count > FME_MAX_POLYGON_POINTS: + self.log.warning("Download type polygon with too many points %d / %d", polygons_points_count, FME_MAX_POLYGON_POINTS) QMessageBox.warning(self.iface.mainWindow(), title, - self.tr("Your polygons have too many points: %d maximum %d" % (polygons_points_count, max_polygons_points))) + self.tr("Your polygons have too many points: %d maximum %d" % (polygons_points_count, FME_MAX_POLYGON_POINTS))) return None # Force download by polygon geo = multipolygon else: # if self.download_type == 'dt_layer_polygon_bb': geo = QgsGeometry.fromRect(multipolygon.boundingBox()) - + else: self.log.debug("Download tool user selection (%s)", self.download_type) @@ -1585,7 +1585,7 @@ def download_get_geometry(self, geo, download_epsg, min_side, max_download_area, self.log.debug("User geometry %s (EPSG:%s)", geo.asWkt() if is_polygon else geo.asWktCoordinates(), epsg) geo = self.crs.transform(geo, epsg, download_epsg) self.log.debug("Download (transformed) geometry %s (EPSG:%s)", geo.asWkt() if is_polygon else geo.asWktCoordinates(), download_epsg) - + title = self.tr("Download map area") if is_area or is_polygon else self.tr("Download point") # Check area limit @@ -1646,8 +1646,8 @@ def download_get_geometry(self, geo, download_epsg, min_side, max_download_area, self.log.warning("The selected area is outside Catalonia %s", limits) self.log.debug("Limits geometry: %s (EPSG: %s)", geo_limits, geo_limits_epsg) QMessageBox.warning(self.iface.mainWindow(), title, self.tr("The selected area is outside Catalonia")) - return None - + return None + return geo def get_selected_photo_info(self, show_errors=True): @@ -1659,7 +1659,7 @@ def get_selected_photo_info(self, show_errors=True): photo_info_list = self.layers.get_attributes_selection_by_id(self.photo_search_layer_id, ['flight_year', 'flight_code', 'image_filename', 'name', 'gsd', 'epsg'], lambda p: len(p) != 1, self.tr("You must select one photogram")) else: photo_info_list = self.layers.get_attributes_selection_by_id(self.photo_search_layer_id, ['flight_year', 'flight_code', 'image_filename', 'name', 'gsd', 'epsg'], lambda p: len(p) != 1) - photo_id, flight_year, flight_code, filename, name, gsd, epsg = (([photo_id] + list(photo_info_list[0])) if photo_info_list else (None, None, None, None, None, None, None)) + photo_id, flight_year, flight_code, filename, name, gsd, epsg = (([photo_id] + list(photo_info_list[0])) if photo_info_list else (None, None, None, None, None, None, None)) return photo_id, flight_year, flight_code, filename, name, gsd, epsg def disable_ref_layers(self, hide_not_remove=False): @@ -1997,17 +1997,17 @@ def search_photos(self, x=None, y=None, name=None, photolib_wfs=PHOTOLIB_WFS, da # Walkthrough to show photo search dialog with current search if self.photo_search_dialog: self.photo_search_dialog.show() - return False + return False # Remove previous photo search, before disables reset dialog when delete layer event photo_search_layer = self.layers.get_by_id(self.photo_search_layer_id) if photo_search_layer and self.photo_search_dialog: photo_search_layer.willBeDeleted.disconnect(self.photo_search_dialog.reset) self.legend.empty_group(group) - # If photo search group not exist, we ensure that it is created before download group + # If photo search group not exist, we ensure that it is created before download group if not group: # If not exists download group return -1 - group_pos = self.legend.get_group_position_by_name(self.download_group_name) + 1 - + group_pos = self.legend.get_group_position_by_name(self.download_group_name) + 1 + # Fix event problems betwen photo layer and photo dialog for QGIS versions < 3.10 # Needs create photo dialog previous to photo layer... if not self.photo_search_dialog and not self.check_qgis_version(310000): @@ -2020,7 +2020,7 @@ def search_photos(self, x=None, y=None, name=None, photolib_wfs=PHOTOLIB_WFS, da layer_filter = None with WaitCursor(): # Search by coordinates - if x and y: + if x and y: # Get municipality information of coordinate if not epsg: epsg = int(self.project.get_epsg()) @@ -2048,7 +2048,7 @@ def search_photos(self, x=None, y=None, name=None, photolib_wfs=PHOTOLIB_WFS, da # Search by name if name and len(name) > 7: # at least flight code and wildcard ... layer_name = self.photo_search_label % name - #layer_filter = "SELECT * FROM fotogrames WHERE name LIKE '%s'" % (name) + #layer_filter = "SELECT * FROM fotogrames WHERE name LIKE '%s'" % (name) layer_filter = '' \ '' \ 'name' \ @@ -2068,9 +2068,12 @@ def search_photos(self, x=None, y=None, name=None, photolib_wfs=PHOTOLIB_WFS, da # collapsed=False, visible=True, transparency=None, set_current=True) fake_file = '%s/?SERVICE=WFS&VERSION=%s&REQUEST=GetFeature&TYPENAMES=%s&FILTER=%s&outputformat=geojson&referer=ICGC' % ( photolib_wfs, "2.0.0", "icgc:fotogrames", quote(layer_filter)) + begin_time = datetime.datetime.now() photo_search_layer = self.layers.add_vector_layer(layer_name, fake_file, group_name=self.photos_group_name, group_pos=group_pos, only_one_map_on_group=False, only_one_visible_map_on_group=True, expanded=True, visible=True, transparency=None, set_current=True) + end_time = datetime.datetime.now() + self.log.debug("Photo search time: %s" % (end_time - begin_time)) if not photo_search_layer or type(photo_search_layer) is not QgsVectorLayer: return @@ -2167,16 +2170,22 @@ def photo_preview(self, photo_name, rectified=False, stereo=False, only_one=True photo_label = self.photo_label % photo_name if photo_layer: # Update current photo_layer + begin_time = datetime.datetime.now() self.layers.update_wms_layer(photo_layer, wms_layer=layer_name, wms_style=photo_style) + end_time = datetime.datetime.now() + self.log.debug("Update photo raster time: %s" % (end_time - begin_time)) photo_layer.setName(photo_label) self.layers.set_visible(photo_layer) self.legend.set_group_visible_by_name(self.photos_group_name) else: # Load new preview layer at top (using WMS or UNC path to file) + begin_time = datetime.datetime.now() photo_layer = self.layers.add_wms_layer(photo_label, photolib_wms, [layer_name], [photo_style], "image/png", self.project.get_epsg(), extra_tags="referer=ICGC&bgcolor=0x000000", group_name=self.photos_group_name, group_pos=0, only_one_map_on_group=False, only_one_visible_map_on_group=False, collapsed=False, visible=True, transparency=None, set_current=False) + end_time = datetime.datetime.now() + self.log.debug("Load photo raster time: %s" % (end_time - begin_time)) self.photo_layer_id = photo_layer.id() if photo_layer else "" # Restore previous selected layer if current_layer: @@ -2193,7 +2202,7 @@ def show_photo_search_dialog(self, layer, years_list, current_year=None, title=N # If not exist dialog we create it else we configure and show it update_photo_time_callback = lambda current_year, range_year: self.update_photo_search_layer_year(layer, current_year, range_year) - update_photo_selection_callback = lambda photo_id: self.layers.set_selection(layer, [photo_id] if photo_id else []) + update_photo_selection_callback = lambda photo_id: self.layers.set_selection(layer, [photo_id] if photo_id is not None else []) show_info_callback = lambda photo_id: self.iface.openFeatureForm(layer, layer.getFeature(photo_id)) preview_callback = lambda photo_id: self.photo_preview(layer.getFeature(photo_id)['name']) rectified_preview_callback = lambda photo_id: self.photo_preview(layer.getFeature(photo_id)['name'], rectified=True) @@ -2212,7 +2221,7 @@ def show_photo_search_dialog(self, layer, years_list, current_year=None, title=N if not self.photo_search_dialog: self.photo_search_dialog = PhotoSearchSelectionDialog(layer, years_list, current_year, - update_photo_time_callback, update_photo_selection_callback, show_info_callback, + update_photo_time_callback, update_photo_selection_callback, show_info_callback, preview_callback, rectified_preview_callback, stereo_preview_callback, None, download_callback, request_certificate_callback, request_scan_callback, report_photo_bug_callback, autoshow=True, parent=self.iface.mainWindow()) @@ -2226,7 +2235,7 @@ def show_photo_search_dialog(self, layer, years_list, current_year=None, title=N # Configure search result information self.photo_search_dialog.set_info(layer, years_list, current_year, - update_photo_time_callback, update_photo_selection_callback, show_info_callback, + update_photo_time_callback, update_photo_selection_callback, show_info_callback, preview_callback, rectified_preview_callback, stereo_preview_callback, None, download_callback, request_certificate_callback, request_scan_callback, report_photo_bug_callback) # Mostrem el diàleg @@ -2242,7 +2251,7 @@ def update_photo_search_layer_year(self, photo_layer, current_year, range_year): if photo_layer: self.layers.set_categories_visible(photo_layer, set(self.search_photos_year_list) - set(year_range), False) self.layers.set_categories_visible(photo_layer, year_range, True) - self.layers.set_current_layer(photo_layer) # click in categories of layer can unselect layer... we fix it + #self.layers.set_current_layer(photo_layer) # click in categories of layer can unselect layer... we fix it self.layers.set_visible(photo_layer) # force visibility of photo layer self.legend.set_group_visible_by_name(self.photos_group_name) # force visibility of photo group @@ -2263,7 +2272,7 @@ def report_photo_bug(self, photo_name, flight_code="", photo_date="", photo_reso def save_map(self, report_template, title="Map"): """ Save current map as PDF applying a template """ - # Prepare a default filename + # Prepare a default filename municipality = self.get_current_municipality() default_filename = ("%s.pdf" % municipality) if municipality else "" default_pathname = os.path.join(self.layers.get_download_path(), default_filename) @@ -2271,7 +2280,7 @@ def save_map(self, report_template, title="Map"): pathname, _filter = QFileDialog.getSaveFileName( self.iface.mainWindow(), title, default_pathname, self.tr("PDF file (*.pdf)")) if not pathname: - return False + return False with WaitCursor(): # Load report template @@ -2305,16 +2314,16 @@ def save_map(self, report_template, title="Map"): note_item.setText(self.tr("This PDF shows all the data visible in the QGIS project at the time of its generation")) location_label_item = self.composer.get_composer_item_by_id(composition, "location_label") if location_label_item: - location_label_item.setText(self.tr("Location map:")) + location_label_item.setText(self.tr("Location map:")) topographic_label_item = self.composer.get_composer_item_by_id(composition, "topographic_label") if topographic_label_item: topographic_label_item.setText(self.tr("Topographic map:")) map_label_item = self.composer.get_composer_item_by_id(composition, "map_label") if map_label_item: - map_label_item.setText(self.tr("Map:")) + map_label_item.setText(self.tr("Map:")) # Save PDF status_ok = self.composer.export_composition(composition, pathname) - + # Open PDF if Ok if status_ok and os.path.exists(pathname): self.gui.open_file_folder(pathname) diff --git a/qlib3/base/pluginbase.py b/qlib3/base/pluginbase.py index 3ace970..3ef42ff 100644 --- a/qlib3/base/pluginbase.py +++ b/qlib3/base/pluginbase.py @@ -2253,7 +2253,7 @@ def classify_by_id(self, layer_idprefix, class_attribute=None, values_list=None, layer = self.get_by_id(layer_idprefix, pos) if not layer: return False - self.classify(layer, class_attribute, values_list, color_list, border_color_list, expand, width, size, opacity, use_current_symbol, base_symbol, label_function, alpha, sort, ininterpolate_colors) + self.classify(layer, class_attribute, values_list, color_list, border_color_list, expand, width, size, opacity, use_current_symbol, base_symbol, label_function, alpha, sort, interpolate_colors) return True def classify(self, layer, class_attribute=None, values_list=None, color_list=None, border_color_list=None, expand=None, width=None, size=None, opacity=None, use_current_symbol=True, base_symbol=None, label_function=None, alpha=None, sort=False, interpolate_colors=False): @@ -4534,8 +4534,7 @@ def add_group(self, group_name, expanded=True, visible_group=True, layer_list=[] group = self.move_group_to_group(group, group_parent, group_pos) if layer_list: self.move_layers_to_group(group, layer_list, visible_layer=visible_group) - if not expanded: - group.setExpanded(False) + group.setExpanded(expanded) return group def remove_group_by_name(self, group_name): @@ -4781,7 +4780,7 @@ def expand_group(self, group, expand=True): """ group.setExpanded(expand) - def is_group_expanded_by_name(self, group): + def is_group_expanded_by_name(self, group_name): """ Informa de si està expandit un grup per nom --- Informs if a group is expanded by name @@ -5088,7 +5087,7 @@ def select_epsg(self, asPrefixedText = False): ps.exec_() crs = ps.crs() if crs: - return format_epsg(crs.authid(), asPrefixedText) + return self.format_epsg(crs.authid(), asPrefixedText) else: return None @@ -5895,7 +5894,7 @@ def send_email(self, mail_to, subject="", body="", copy_to="", hidden_copy_to="" subject or " ", ("&body=%s" % urllib.parse.quote(body, safe="")) if body else "", ("&cc=%s" % copy_to) if copy_to else "", - ("&bcc=%s" % hidden_copy) if hidden_copy_to else "") + ("&bcc=%s" % hidden_copy_to) if hidden_copy_to else "") return self.parent.show_url(mail_url) diff --git a/qlib3/photosearchselectiondialog/photosearchselectiondialog.py b/qlib3/photosearchselectiondialog/photosearchselectiondialog.py index 9096a92..4313c0a 100644 --- a/qlib3/photosearchselectiondialog/photosearchselectiondialog.py +++ b/qlib3/photosearchselectiondialog/photosearchselectiondialog.py @@ -353,7 +353,7 @@ def update_photos(self): self.checkBox_inverted_stereo.setEnabled(enable) # Simulate update selection signal (and enable/disable selection dependent buttons) - self.on_photo_changed() + self.update_buttons() def set_time_series(self, time_series_list, current_time): """ Update year sliders information """ @@ -520,8 +520,10 @@ def get_selected_photo_name(self): photo_name = item.text() return photo_name - def select_photo(self, photo_id, year): + def select_photo(self, photo_id, year, update_map=False): """ Select specified photo in tableWidget """ + if self.get_selected_photo_id() == photo_id: + return # Search photo id in table row = None if photo_id is not None: @@ -531,22 +533,34 @@ def select_photo(self, photo_id, year): if photo_id2 == photo_id: row = i break + + # If no row and we have year, try change year and search again + if row is None and year: + self.set_current_time(year) + return self.select_photo(photo_id, year=None, update_map=update_map) + # Select found row (or not) + # Blocks events + self.tableWidget_photos.blockSignals(not update_map) if row is not None: self.tableWidget_photos.selectRow(row) - elif year: - # If we have year, try change year and search again - self.set_current_time(year) - self.select_photo(photo_id, year=None) else: self.tableWidget_photos.clearSelection() + self.tableWidget_photos.blockSignals(False) + self.update_buttons() def on_photo_changed(self): """ Mapped event to update photo layer selection when change selected photogram """ - # Select phootogram - photo_id, image_available, publishable, available, analog = self.get_selected_photo_info() + # Update dialog buttons + photo_id = self.update_buttons() + # Select phootogram on map if self.photo_selection_callback: self.photo_selection_callback(photo_id) + + def update_buttons(self): + """ Update dialog button state """ + photo_id, image_available, publishable, available, analog = self.get_selected_photo_info() + # Select year current_time, current_range = self.get_current_time_range() if self.update_callback and current_time: @@ -574,64 +588,66 @@ def on_photo_changed(self): self.pushButton_download_hd.setEnabled(enable and image_available and publishable and nominal_preview) self.pushButton_request_certificate.setEnabled(enable and image_available and publishable) self.pushButton_request_scan.setEnabled(enable and not image_available and available) + + return photo_id def show_info(self): """ Mapped event to show photo information when push button """ photo_id = self.get_selected_photo_id() - if self.show_info_callback and photo_id: + if self.show_info_callback and photo_id is not None: self.show_info_callback(photo_id) def preview(self): """ Mapped event to load photo raster when push button """ photo_id = self.get_selected_photo_id() - if self.preview_callback and photo_id: + if self.preview_callback and photo_id is not None: self.preview_callback(photo_id) self.preview_type = PreviewType.NOMINAL - self.on_photo_changed() + self.update_buttons() def rectified_preview(self): """ Mapped event to load rectified photo raster when push button """ photo_id = self.get_selected_photo_id() - if self.rectified_preview_callback and photo_id: + if self.rectified_preview_callback and photo_id is not None: self.rectified_preview_callback(photo_id) self.preview_type = PreviewType.RECTIFIED - self.on_photo_changed() + self.update_buttons() def stereo_preview(self): """ Mapped event to load stereo photo raster when push button """ photo_id = self.get_selected_photo_id() - if self.stereo_preview_callback and photo_id: + if self.stereo_preview_callback and photo_id is not None: self.stereo_preview_callback(photo_id) self.preview_type = PreviewType.STEREO - self.on_photo_changed() + self.update_buttons() def adjust(self): photo_id = self.get_selected_photo_id() - if self.adjust_callback and photo_id: + if self.adjust_callback and photo_id is not None: self.adjust_callback(photo_id) def download_hd(self): """ Mapped event to enable download tool when push button """ photo_id = self.get_selected_photo_id() - if self.download_callback and photo_id: + if self.download_callback and photo_id is not None: self.download_callback(photo_id) def request_certificate(self): """ Mapped event to request certificate when push button """ photo_id = self.get_selected_photo_id() - if self.request_certificate_callback and photo_id: + if self.request_certificate_callback and photo_id is not None: self.request_certificate_callback(photo_id) def request_scan(self): """ Mapped event to request certificate when push button """ photo_id = self.get_selected_photo_id() - if self.request_scan_callback and photo_id: + if self.request_scan_callback and photo_id is not None: self.request_scan_callback(photo_id) def report_bug(self): """ Mapped event to report bug when push button """ photo_id = self.get_selected_photo_id() - if self.report_bug_callback and photo_id: + if self.report_bug_callback and photo_id is not None: self.report_bug_callback(photo_id) def on_table_key_press(self, event): diff --git a/resources3/fme.py b/resources3/fme.py index 73808b5..755fc00 100644 --- a/resources3/fme.py +++ b/resources3/fme.py @@ -28,7 +28,7 @@ FME_URL = "https://qgis:qgis@descarregues.icgc.cat" # Servidor extern / adreça externa (producció) FME_DOWNLOAD_EPSG = 25831 - +FME_MAX_POLYGON_POINTS = 100 FME_AUTO_SEARCH = "Search" services_list = [