sasbot преди 3 години
родител
ревизия
8ffa5ba274
променени са 72 файла, в които са добавени 172 реда и са изтрити 1392 реда
  1. Двоични данни
      _Coverage/Megafon/megafon.2g.zmp/18.bmp
  2. Двоични данни
      _Coverage/Megafon/megafon.2g.zmp/24.bmp
  3. +2
    -2
      _Coverage/Megafon/megafon.2g.zmp/params.txt
  4. Двоични данни
      _Coverage/Megafon/megafon.3g.zmp/18.bmp
  5. Двоични данни
      _Coverage/Megafon/megafon.3g.zmp/24.bmp
  6. +2
    -2
      _Coverage/Megafon/megafon.3g.zmp/params.txt
  7. Двоични данни
      _Coverage/Megafon/megafon.4g100.zmp/18.bmp
  8. Двоични данни
      _Coverage/Megafon/megafon.4g100.zmp/24.bmp
  9. +2
    -2
      _Coverage/Megafon/megafon.4g100.zmp/params.txt
  10. Двоични данни
      _Coverage/Megafon/megafon.4g300.zmp/18.bmp
  11. Двоични данни
      _Coverage/Megafon/megafon.4g300.zmp/24.bmp
  12. +2
    -2
      _Coverage/Megafon/megafon.4g300.zmp/params.txt
  13. Двоични данни
      _Coverage/Mts/mts.2g.zmp/18.bmp
  14. Двоични данни
      _Coverage/Mts/mts.2g.zmp/24.bmp
  15. +2
    -2
      _Coverage/Mts/mts.2g.zmp/params.txt
  16. Двоични данни
      _Coverage/Mts/mts.3g.zmp/18.bmp
  17. Двоични данни
      _Coverage/Mts/mts.3g.zmp/24.bmp
  18. +2
    -2
      _Coverage/Mts/mts.3g.zmp/params.txt
  19. Двоични данни
      _Coverage/Mts/mts.4g.zmp/18.bmp
  20. Двоични данни
      _Coverage/Mts/mts.4g.zmp/24.bmp
  21. +2
    -2
      _Coverage/Mts/mts.4g.zmp/params.txt
  22. Двоични данни
      _Coverage/Mts/mts.4g_plan.zmp/18.bmp
  23. Двоични данни
      _Coverage/Mts/mts.4g_plan.zmp/24.bmp
  24. +2
    -2
      _Coverage/Mts/mts.4g_plan.zmp/params.txt
  25. +1
    -1
      _OSM/osm_WayMarkeredTrails_Hiking.zmp/params.txt
  26. +0
    -0
      anygis/Mapbox_Sat.zmp/18.bmp
  27. +0
    -0
      anygis/Mapbox_Sat.zmp/24.bmp
  28. +9
    -0
      anygis/Mapbox_Sat.zmp/info.txt
  29. +17
    -0
      anygis/Mapbox_Sat.zmp/params.txt
  30. Двоични данни
      anygis/Maxar_via_Facebook.zmp/18.bmp
  31. Двоични данни
      anygis/Maxar_via_Facebook.zmp/24.bmp
  32. +9
    -0
      anygis/Maxar_via_Facebook.zmp/info.txt
  33. +17
    -0
      anygis/Maxar_via_Facebook.zmp/params.txt
  34. Двоични данни
      anygis/OpenTopoMapRU.zmp/18.bmp
  35. Двоични данни
      anygis/OpenTopoMapRU.zmp/24.bmp
  36. +9
    -0
      anygis/OpenTopoMapRU.zmp/info.txt
  37. +18
    -0
      anygis/OpenTopoMapRU.zmp/params.txt
  38. Двоични данни
      anygis/RusOurdoor.zmp/18.bmp
  39. Двоични данни
      anygis/RusOurdoor.zmp/24.bmp
  40. +9
    -0
      anygis/RusOurdoor.zmp/info.txt
  41. +17
    -0
      anygis/RusOurdoor.zmp/params.txt
  42. Двоични данни
      anygis/RusOurdoor_lite.zmp/18.bmp
  43. Двоични данни
      anygis/RusOurdoor_lite.zmp/24.bmp
  44. +9
    -0
      anygis/RusOurdoor_lite.zmp/info.txt
  45. +17
    -0
      anygis/RusOurdoor_lite.zmp/params.txt
  46. +0
    -216
      anygis/Tracks_Strava_All.zmp/GetUrlScript.txt
  47. +2
    -0
      anygis/Tracks_Strava_All.zmp/info.txt
  48. +2
    -4
      anygis/Tracks_Strava_All.zmp/params.txt
  49. +0
    -216
      anygis/Tracks_Strava_Ride.zmp/GetUrlScript.txt
  50. +2
    -0
      anygis/Tracks_Strava_Ride.zmp/info.txt
  51. +2
    -4
      anygis/Tracks_Strava_Ride.zmp/params.txt
  52. +0
    -216
      anygis/Tracks_Strava_Run.zmp/GetUrlScript.txt
  53. +2
    -0
      anygis/Tracks_Strava_Run.zmp/info.txt
  54. +2
    -4
      anygis/Tracks_Strava_Run.zmp/params.txt
  55. +0
    -216
      anygis/Tracks_Strava_RunAndRide.zmp/GetUrlScript.txt
  56. +2
    -0
      anygis/Tracks_Strava_RunAndRide.zmp/info.txt
  57. +2
    -4
      anygis/Tracks_Strava_RunAndRide.zmp/params.txt
  58. +0
    -216
      anygis/Tracks_Strava_Water.zmp/GetUrlScript.txt
  59. +2
    -0
      anygis/Tracks_Strava_Water.zmp/info.txt
  60. +2
    -4
      anygis/Tracks_Strava_Water.zmp/params.txt
  61. +0
    -216
      anygis/Tracks_Strava_Winter.zmp/GetUrlScript.txt
  62. +2
    -0
      anygis/Tracks_Strava_Winter.zmp/info.txt
  63. +2
    -4
      anygis/Tracks_Strava_Winter.zmp/params.txt
  64. Двоични данни
      mapbox/mapbox_sat.zmp/18.bmp
  65. Двоични данни
      mapbox/mapbox_sat.zmp/24.bmp
  66. +0
    -6
      mapbox/mapbox_sat.zmp/GetUrlScript.txt
  67. +0
    -15
      mapbox/mapbox_sat.zmp/params.txt
  68. Двоични данни
      mapbox/osm_mapbox_mapnik_layer.zmp/18.bmp
  69. Двоични данни
      mapbox/osm_mapbox_mapnik_layer.zmp/24.bmp
  70. +0
    -7
      mapbox/osm_mapbox_mapnik_layer.zmp/GetUrlScript.txt
  71. +0
    -7
      mapbox/osm_mapbox_mapnik_layer.zmp/info.txt
  72. +0
    -20
      mapbox/osm_mapbox_mapnik_layer.zmp/params.txt

Двоични данни
_Coverage/Megafon/megafon.2g.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Megafon/megafon.2g.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Megafon/megafon.2g.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={0b111110-866b-466e-b8d7-7b43297400c3}
name_ru=Ìåãàôîí 2G GSM
name=Megafon 2G GSM
ParentSubMenu_ru=Cîòîâûå ñåòè
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://yamap.megafon.ru/g2/
projection=2


Двоични данни
_Coverage/Megafon/megafon.3g.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Megafon/megafon.3g.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Megafon/megafon.3g.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={0b122210-866b-466e-b8d7-7b43297400c3}
name_ru=Ìåãàôîí 3G
name=Megafon 3G
ParentSubMenu_ru=Cîòîâûå ñåòè
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://yamap.megafon.ru/g3/
projection=2


Двоични данни
_Coverage/Megafon/megafon.4g100.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Megafon/megafon.4g100.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Megafon/megafon.4g100.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={0b133330-866b-466e-b8d7-7b43297400c3}
name_ru=Ěĺăŕôîí 4G
name=Megafon 4G
ParentSubMenu_ru=Cîňîâűĺ ńĺňč
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://yamap.megafon.ru/lte/
projection=2


Двоични данни
_Coverage/Megafon/megafon.4g300.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Megafon/megafon.4g300.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Megafon/megafon.4g300.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={0b144440-866b-466e-b8d7-7b43297400c3}
name_ru=Ìåãàôîí 4G+
name=Megafon 4G+
ParentSubMenu_ru=Cîòîâûå ñåòè
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://yamap.megafon.ru/lte_plus/
projection=2


Двоични данни
_Coverage/Mts/mts.2g.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Mts/mts.2g.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Mts/mts.2g.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={0bffa4e0-852b-4bee-b8d7-7b43297400c3}
name_ru=ĚŇŃ 2G
name=MTS 2G
ParentSubMenu_ru=Cîňîâűĺ ńĺňč
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://tiles.mts.ru/G2_New/
projection=2


Двоични данни
_Coverage/Mts/mts.3g.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Mts/mts.3g.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Mts/mts.3g.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={ce276b7a-a0e3-47a4-bb66-af84b817801d}
name_ru=ĚŇŃ 3G
name=MTS 3G
ParentSubMenu_ru=Cîňîâűĺ ńĺňč
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://tiles.mts.ru/G3_New/
projection=2


Двоични данни
_Coverage/Mts/mts.4g.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Mts/mts.4g.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Mts/mts.4g.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={dc5600ae-2507-4a2b-a6e4-4b2270575020}
name_ru=ĚŇŃ 4G
name=MTS 4G
ParentSubMenu_ru=Cîňîâűĺ ńĺňč
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ńëîěŕííűĺ ęŕđňű\Cîňîâűĺ ńĺňč
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://tiles.mts.ru/LTE_New/
projection=2


Двоични данни
_Coverage/Mts/mts.4g_plan.zmp/18.bmp Целия файл

Преди След

Двоични данни
_Coverage/Mts/mts.4g_plan.zmp/24.bmp Целия файл

Преди След

+ 2
- 2
_Coverage/Mts/mts.4g_plan.zmp/params.txt Целия файл

@@ -2,8 +2,8 @@
GUID={ffe20781-25e6-42c8-bf8e-2879789477b2}
name_ru=ÌÒÑ 4G ïëàíèðóåìîå
name=MTS 4G planned
ParentSubMenu_ru=Cîòîâûå ñåòè
ParentSubMenu=Mobile coverage area
ParentSubMenu_ru=Ñëîìàííûå êàðòû\Cîòîâûå ñåòè
ParentSubMenu=Not working\Mobile coverage area
asLayer=1
DefURLBase=http://tiles.mts.ru/LTE_Plan_New/
projection=2


+ 1
- 1
_OSM/osm_WayMarkeredTrails_Hiking.zmp/params.txt Целия файл

@@ -3,7 +3,7 @@ GUID={1123ADB1-4561-4280-9225-D4690321117E}
ParentSubMenu_ru=Ìàðøðóòû è GPS-Òðåêè
ParentSubMenu_uk=Ìàðøðóòû è GPS-Òðåêè
ParentSubMenu=Ways and GPS-Tracks
name=WayMarkeredTrails iking
name=WayMarkeredTrails Hiking
asLayer=1
NameInCache=waymarkedtrails_hiking
DefURLBase=https://tile.waymarkedtrails.org/hiking


mapbox/18.bmp → anygis/Mapbox_Sat.zmp/18.bmp Целия файл


mapbox/24.bmp → anygis/Mapbox_Sat.zmp/24.bmp Целия файл


+ 9
- 0
anygis/Mapbox_Sat.zmp/info.txt Целия файл

@@ -0,0 +1,9 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:
https://t.me/anygis
https://vk.com/anygis
anygis@bk.ru

+ 17
- 0
anygis/Mapbox_Sat.zmp/params.txt Целия файл

@@ -0,0 +1,17 @@

[PARAMS]
GUID={16BBE393-814C-4A37-BF28-F7362EC5FB9F}
ParentSubMenu_ru=Спутниковые
ParentSubMenu_uk=Спутниковые
ParentSubMenu=Satellite
name_ru=Mapbox satellite v4
name_uk=Mapbox satellite v4
name=Mapbox satellite v4
NameInCache=Mapbox_Sat
asLayer=0
EPSG=3785
DefURLBase=http://api.tiles.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoienZlcmlrIiwiYSI6IjVLMGxwbGsifQ.pdb83NbjTrfl9ibbdjPSsg
RequestHead=Connection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png
Ext=.png
License= © Mapbox

Двоични данни
anygis/Maxar_via_Facebook.zmp/18.bmp Целия файл

Преди След

Двоични данни
anygis/Maxar_via_Facebook.zmp/24.bmp Целия файл

Преди След

+ 9
- 0
anygis/Maxar_via_Facebook.zmp/info.txt Целия файл

@@ -0,0 +1,9 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:
https://t.me/anygis
https://vk.com/anygis
anygis@bk.ru

+ 17
- 0
anygis/Maxar_via_Facebook.zmp/params.txt Целия файл

@@ -0,0 +1,17 @@

[PARAMS]
GUID={F224BE12-F871-4F9A-8109-9FFDD6592261}
ParentSubMenu_ru=Спутниковые
ParentSubMenu_uk=Спутниковые
ParentSubMenu=Satellite
name_ru=Maxar (via Facebook) zoom 11-18
name_uk=Maxar (via Facebook) zoom 11-18
name=Maxar (via Facebook) zoom 11-18
NameInCache=Maxar_via_Facebook
asLayer=0
EPSG=3785
DefURLBase=https://www.facebook.com/maps/ml_roads?theme=ml_road_vector&collaborator=fbid&token=ASZUVdYpCkd3M6ZrzjXdQzHulqRMnxdlkeBJWEKOeTUoY_Gwm9fuEd2YObLrClgDB_xfavizBsh0oDfTWTF7Zb4C&hash=ASYM8LPNy8k1XoJiI7A&result_type=satellite_raster_tile&materialize=true&x={x}&y={y}&z={z}
RequestHead=Referer:https://mapwith.ai/rapid\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png
Ext=.jpg
License= © Maxar

Двоични данни
anygis/OpenTopoMapRU.zmp/18.bmp Целия файл

Преди След

Двоични данни
anygis/OpenTopoMapRU.zmp/24.bmp Целия файл

Преди След

+ 9
- 0
anygis/OpenTopoMapRU.zmp/info.txt Целия файл

@@ -0,0 +1,9 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:
https://t.me/anygis
https://vk.com/anygis
anygis@bk.ru

+ 18
- 0
anygis/OpenTopoMapRU.zmp/params.txt Целия файл

@@ -0,0 +1,18 @@

[PARAMS]
GUID={8D5C7041-474A-468E-A37E-63BE5194E759}
ParentSubMenu_ru=OSM
ParentSubMenu_uk=OSM
ParentSubMenu=OSM
name_ru=OpenTopoMap.RU
name_uk=OpenTopoMap.RU
name=OpenTopoMap.RU
NameInCache=OpenTopoMapRU
asLayer=0
EPSG=3785
DefURLBase=https://tile-{s}.opentopomap.ru/{z}/{x}/{y}.png
ServerNames=a,b,c
RequestHead=Referer:http://www.sasgis.org/
ContentType=image/jpeg,image/png
Ext=.png
License= © OpenStreetMap, OpenTopoMap.ru

Двоични данни
anygis/RusOurdoor.zmp/18.bmp Целия файл

Преди След

Двоични данни
anygis/RusOurdoor.zmp/24.bmp Целия файл

Преди След

+ 9
- 0
anygis/RusOurdoor.zmp/info.txt Целия файл

@@ -0,0 +1,9 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:
https://t.me/anygis
https://vk.com/anygis
anygis@bk.ru

+ 17
- 0
anygis/RusOurdoor.zmp/params.txt Целия файл

@@ -0,0 +1,17 @@

[PARAMS]
GUID={41B5F6BE-6108-4158-AD04-9317E841AE92}
ParentSubMenu_ru=Туристические\Многослойные
ParentSubMenu_uk=Туристические\Многослойные
ParentSubMenu=Tourism\Karelia
name_ru=RusOutdoor maps
name_uk=RusOutdoor maps
name=RusOutdoor maps
NameInCache=RusOurdoor
asLayer=0
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Combo_RusOutdoor/{x}/{y}/{z}
RequestHead=Referer:http://www.sasgis.org/
ContentType=image/jpeg,image/png
Ext=.jpg

Двоични данни
anygis/RusOurdoor_lite.zmp/18.bmp Целия файл

Преди След

Двоични данни
anygis/RusOurdoor_lite.zmp/24.bmp Целия файл

Преди След

+ 9
- 0
anygis/RusOurdoor_lite.zmp/info.txt Целия файл

@@ -0,0 +1,9 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:
https://t.me/anygis
https://vk.com/anygis
anygis@bk.ru

+ 17
- 0
anygis/RusOurdoor_lite.zmp/params.txt Целия файл

@@ -0,0 +1,17 @@

[PARAMS]
GUID={A4694424-B8C8-4469-B80F-2470A8209BA5}
ParentSubMenu_ru=Туристические\Многослойные
ParentSubMenu_uk=Туристические\Многослойные
ParentSubMenu=Tourism\Karelia
name_ru=RusOutdoor maps iite
name_uk=RusOutdoor maps iite
name=RusOutdoor maps iite
NameInCache=RusOurdoor_lite
asLayer=0
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Combo_RusOutdoor_lite/{x}/{y}/{z}
RequestHead=Referer:http://www.sasgis.org/
ContentType=image/jpeg,image/png
Ext=.jpg

+ 0
- 216
anygis/Tracks_Strava_All.zmp/GetUrlScript.txt Целия файл

@@ -1,216 +0,0 @@
// -----------------------------------------------------------------------------
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS
// -----------------------------------------------------------------------------
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet.
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal,
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû.
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z}
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê:
//
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû:
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps)
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps)
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps)
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing)
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte)
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ)
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè)
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet)
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà.
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî.
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå,
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà.
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû,
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê:
//
// writeLn('Hello Sas.Planet!');
// -----------------------------------------------------------------------------
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè
// -----------------------------------------------------------------------------
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ?
function isContains(findingText: string; inSourceText: string) : boolean;
begin
result := pos(findingText, inSourceText) <> 0;
end;
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè)
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string;
var
intPart, floatPart : integer;
begin
intPart := floor(sourceNumber);
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) )
result := intToStr(intPart) + '.' + intToStr(floatPart)
end;
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing)
function getQuadkeyText(x: integer; y: integer; z: integer) : string;
var
i, q : byte;
begin
result:='';
for i:=1 to z do begin
q:=0;
if x mod 2 = 1 then q := q + 1;
if y mod 2 = 1 then q := q + 2;
x := x div 2;
y := y div 2;
result := intToStr(q) + result;
end;
end;
// -----------------------------------------------------------------------------
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c}
// -----------------------------------------------------------------------------
type
TSubst = record
mask, val : string;
end;
TSubsts = record
count : integer;
s : array [0..15] of TSubst;
end;
function replaceServerName(url: string) : string;
var
s, ss : string;
sarr : array [0..9] of string;
sarr_l, p : integer;
begin
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0);
if s <> '' then begin
ss := s;
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]);
ss := StringReplace(ss, '}', '', [rfIgnoreCase]);
ss := ss + ',';
sarr_l := 0;
while ss <> '' do begin
p := pos(',', ss);
if p = 0 then p := length(ss);
sarr[sarr_l] := copy(ss, 1, p-1);
sarr_l := sarr_l + 1;
delete(ss, 1, p);
end;
url := StringReplace(url, s, sarr[random(sarr_l)], []);
end;
Result := url;
end;
// -----------------------------------------------------------------------------
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}.
// -----------------------------------------------------------------------------
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string;
var
options: tReplaceFlags;
calculatedValue: string;
begin
options := [rfReplaceAll, rfIgnoreCase];
result := urlTemplate;
if isContains('{x}', result) then begin
calculatedValue := intToStr(x);
result := stringReplace( result, '{x}', calculatedValue, options)
end;
if isContains('{y}', result) then begin
calculatedValue := intToStr(y);
result := stringReplace( result, '{y}', calculatedValue, options)
end;
if isContains('{z}', result) then begin
calculatedValue := intToStr(z-1);
result := stringReplace( result, '{z}', calculatedValue, options)
end;
if isContains('{z+1}', result) then begin
calculatedValue := intToStr(z);
result := stringReplace( result, '{z+1}', calculatedValue, options)
end;
if isContains('{x/1024}', result) then begin
calculatedValue := intToStr(x div 1024);
result := stringReplace( result, '{x/1024}', calculatedValue, options)
end;
if isContains('{y/1024}', result) then begin
calculatedValue := intToStr(y div 1024);
result := stringReplace( result, '{y/1024}', calculatedValue, options)
end;
if isContains('{-y}', result) then begin
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y);
result := stringReplace( result, '{-y}', calculatedValue, options)
end;
if isContains('{q}', result) then begin
calculatedValue := getQuadkeyText(x, y, z);
result := stringReplace( result, '{q}', calculatedValue, options)
end;
if isContains('{bbox}', result) then begin
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options)
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options)
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options)
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options)
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options)
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà.
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü.
end;
if isContains('{timeStamp}', result) then begin
calculatedValue := IntToStr(GetUnixTime);
result := stringReplace( result, '{timeStamp}', calculatedValue, options)
end;
end;
// -----------------------------------------------------------------------------
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà.
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL.
// -----------------------------------------------------------------------------
begin
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ);
resultURL := replaceServerName(resultURL);
end.

+ 2
- 0
anygis/Tracks_Strava_All.zmp/info.txt Целия файл

@@ -1,4 +1,6 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:


+ 2
- 4
anygis/Tracks_Strava_All.zmp/params.txt Целия файл

@@ -1,6 +1,6 @@

[PARAMS]
GUID={7E330845-C966-4B63-B909-5214A016BDB1}
GUID={A26CA77D-E37A-42FF-AB59-A6211163C2BB}
ParentSubMenu_ru=Маршруты и GPS-Треки
ParentSubMenu_uk=Маршруты и GPS-Треки
ParentSubMenu=Ways and GPS-Tracks
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Все слои
name=Strava Heatmap - All layers
NameInCache=Tracks_Strava_All
asLayer=1
projection=1
sradiusa=6378137
sradiusb=6378137
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_All/{x}/{y}/{z}
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png


+ 0
- 216
anygis/Tracks_Strava_Ride.zmp/GetUrlScript.txt Целия файл

@@ -1,216 +0,0 @@
// -----------------------------------------------------------------------------
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS
// -----------------------------------------------------------------------------
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet.
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal,
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû.
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z}
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê:
//
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû:
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps)
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps)
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps)
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing)
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte)
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ)
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè)
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet)
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà.
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî.
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå,
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà.
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû,
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê:
//
// writeLn('Hello Sas.Planet!');
// -----------------------------------------------------------------------------
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè
// -----------------------------------------------------------------------------
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ?
function isContains(findingText: string; inSourceText: string) : boolean;
begin
result := pos(findingText, inSourceText) <> 0;
end;
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè)
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string;
var
intPart, floatPart : integer;
begin
intPart := floor(sourceNumber);
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) )
result := intToStr(intPart) + '.' + intToStr(floatPart)
end;
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing)
function getQuadkeyText(x: integer; y: integer; z: integer) : string;
var
i, q : byte;
begin
result:='';
for i:=1 to z do begin
q:=0;
if x mod 2 = 1 then q := q + 1;
if y mod 2 = 1 then q := q + 2;
x := x div 2;
y := y div 2;
result := intToStr(q) + result;
end;
end;
// -----------------------------------------------------------------------------
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c}
// -----------------------------------------------------------------------------
type
TSubst = record
mask, val : string;
end;
TSubsts = record
count : integer;
s : array [0..15] of TSubst;
end;
function replaceServerName(url: string) : string;
var
s, ss : string;
sarr : array [0..9] of string;
sarr_l, p : integer;
begin
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0);
if s <> '' then begin
ss := s;
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]);
ss := StringReplace(ss, '}', '', [rfIgnoreCase]);
ss := ss + ',';
sarr_l := 0;
while ss <> '' do begin
p := pos(',', ss);
if p = 0 then p := length(ss);
sarr[sarr_l] := copy(ss, 1, p-1);
sarr_l := sarr_l + 1;
delete(ss, 1, p);
end;
url := StringReplace(url, s, sarr[random(sarr_l)], []);
end;
Result := url;
end;
// -----------------------------------------------------------------------------
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}.
// -----------------------------------------------------------------------------
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string;
var
options: tReplaceFlags;
calculatedValue: string;
begin
options := [rfReplaceAll, rfIgnoreCase];
result := urlTemplate;
if isContains('{x}', result) then begin
calculatedValue := intToStr(x);
result := stringReplace( result, '{x}', calculatedValue, options)
end;
if isContains('{y}', result) then begin
calculatedValue := intToStr(y);
result := stringReplace( result, '{y}', calculatedValue, options)
end;
if isContains('{z}', result) then begin
calculatedValue := intToStr(z-1);
result := stringReplace( result, '{z}', calculatedValue, options)
end;
if isContains('{z+1}', result) then begin
calculatedValue := intToStr(z);
result := stringReplace( result, '{z+1}', calculatedValue, options)
end;
if isContains('{x/1024}', result) then begin
calculatedValue := intToStr(x div 1024);
result := stringReplace( result, '{x/1024}', calculatedValue, options)
end;
if isContains('{y/1024}', result) then begin
calculatedValue := intToStr(y div 1024);
result := stringReplace( result, '{y/1024}', calculatedValue, options)
end;
if isContains('{-y}', result) then begin
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y);
result := stringReplace( result, '{-y}', calculatedValue, options)
end;
if isContains('{q}', result) then begin
calculatedValue := getQuadkeyText(x, y, z);
result := stringReplace( result, '{q}', calculatedValue, options)
end;
if isContains('{bbox}', result) then begin
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options)
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options)
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options)
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options)
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options)
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà.
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü.
end;
if isContains('{timeStamp}', result) then begin
calculatedValue := IntToStr(GetUnixTime);
result := stringReplace( result, '{timeStamp}', calculatedValue, options)
end;
end;
// -----------------------------------------------------------------------------
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà.
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL.
// -----------------------------------------------------------------------------
begin
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ);
resultURL := replaceServerName(resultURL);
end.

+ 2
- 0
anygis/Tracks_Strava_Ride.zmp/info.txt Целия файл

@@ -1,4 +1,6 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:


+ 2
- 4
anygis/Tracks_Strava_Ride.zmp/params.txt Целия файл

@@ -1,6 +1,6 @@

[PARAMS]
GUID={B71DF157-F075-4F01-9A69-DF344D69DF2D}
GUID={9442ADAB-F5FD-4184-BAE5-8FBABC507E9F}
ParentSubMenu_ru=Маршруты и GPS-Треки
ParentSubMenu_uk=Маршруты и GPS-Треки
ParentSubMenu=Ways and GPS-Tracks
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Велоспорт
name=Strava Heatmap - Ride
NameInCache=Tracks_Strava_Ride
asLayer=1
projection=1
sradiusa=6378137
sradiusb=6378137
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Ride/{x}/{y}/{z}
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png


+ 0
- 216
anygis/Tracks_Strava_Run.zmp/GetUrlScript.txt Целия файл

@@ -1,216 +0,0 @@
// -----------------------------------------------------------------------------
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS
// -----------------------------------------------------------------------------
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet.
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal,
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû.
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z}
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê:
//
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû:
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps)
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps)
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps)
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing)
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte)
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ)
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè)
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet)
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà.
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî.
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå,
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà.
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû,
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê:
//
// writeLn('Hello Sas.Planet!');
// -----------------------------------------------------------------------------
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè
// -----------------------------------------------------------------------------
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ?
function isContains(findingText: string; inSourceText: string) : boolean;
begin
result := pos(findingText, inSourceText) <> 0;
end;
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè)
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string;
var
intPart, floatPart : integer;
begin
intPart := floor(sourceNumber);
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) )
result := intToStr(intPart) + '.' + intToStr(floatPart)
end;
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing)
function getQuadkeyText(x: integer; y: integer; z: integer) : string;
var
i, q : byte;
begin
result:='';
for i:=1 to z do begin
q:=0;
if x mod 2 = 1 then q := q + 1;
if y mod 2 = 1 then q := q + 2;
x := x div 2;
y := y div 2;
result := intToStr(q) + result;
end;
end;
// -----------------------------------------------------------------------------
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c}
// -----------------------------------------------------------------------------
type
TSubst = record
mask, val : string;
end;
TSubsts = record
count : integer;
s : array [0..15] of TSubst;
end;
function replaceServerName(url: string) : string;
var
s, ss : string;
sarr : array [0..9] of string;
sarr_l, p : integer;
begin
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0);
if s <> '' then begin
ss := s;
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]);
ss := StringReplace(ss, '}', '', [rfIgnoreCase]);
ss := ss + ',';
sarr_l := 0;
while ss <> '' do begin
p := pos(',', ss);
if p = 0 then p := length(ss);
sarr[sarr_l] := copy(ss, 1, p-1);
sarr_l := sarr_l + 1;
delete(ss, 1, p);
end;
url := StringReplace(url, s, sarr[random(sarr_l)], []);
end;
Result := url;
end;
// -----------------------------------------------------------------------------
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}.
// -----------------------------------------------------------------------------
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string;
var
options: tReplaceFlags;
calculatedValue: string;
begin
options := [rfReplaceAll, rfIgnoreCase];
result := urlTemplate;
if isContains('{x}', result) then begin
calculatedValue := intToStr(x);
result := stringReplace( result, '{x}', calculatedValue, options)
end;
if isContains('{y}', result) then begin
calculatedValue := intToStr(y);
result := stringReplace( result, '{y}', calculatedValue, options)
end;
if isContains('{z}', result) then begin
calculatedValue := intToStr(z-1);
result := stringReplace( result, '{z}', calculatedValue, options)
end;
if isContains('{z+1}', result) then begin
calculatedValue := intToStr(z);
result := stringReplace( result, '{z+1}', calculatedValue, options)
end;
if isContains('{x/1024}', result) then begin
calculatedValue := intToStr(x div 1024);
result := stringReplace( result, '{x/1024}', calculatedValue, options)
end;
if isContains('{y/1024}', result) then begin
calculatedValue := intToStr(y div 1024);
result := stringReplace( result, '{y/1024}', calculatedValue, options)
end;
if isContains('{-y}', result) then begin
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y);
result := stringReplace( result, '{-y}', calculatedValue, options)
end;
if isContains('{q}', result) then begin
calculatedValue := getQuadkeyText(x, y, z);
result := stringReplace( result, '{q}', calculatedValue, options)
end;
if isContains('{bbox}', result) then begin
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options)
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options)
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options)
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options)
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options)
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà.
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü.
end;
if isContains('{timeStamp}', result) then begin
calculatedValue := IntToStr(GetUnixTime);
result := stringReplace( result, '{timeStamp}', calculatedValue, options)
end;
end;
// -----------------------------------------------------------------------------
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà.
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL.
// -----------------------------------------------------------------------------
begin
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ);
resultURL := replaceServerName(resultURL);
end.

+ 2
- 0
anygis/Tracks_Strava_Run.zmp/info.txt Целия файл

@@ -1,4 +1,6 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:


+ 2
- 4
anygis/Tracks_Strava_Run.zmp/params.txt Целия файл

@@ -1,6 +1,6 @@

[PARAMS]
GUID={BF69A930-3739-454A-A833-DED4C0841297}
GUID={89BA4332-E79A-40F0-9BC1-AF05BCFE52FC}
ParentSubMenu_ru=Маршруты и GPS-Треки
ParentSubMenu_uk=Маршруты и GPS-Треки
ParentSubMenu=Ways and GPS-Tracks
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Бег
name=Strava Heatmap - Run
NameInCache=Tracks_Strava_Run
asLayer=1
projection=1
sradiusa=6378137
sradiusb=6378137
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Run/{x}/{y}/{z}
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png


+ 0
- 216
anygis/Tracks_Strava_RunAndRide.zmp/GetUrlScript.txt Целия файл

@@ -1,216 +0,0 @@
// -----------------------------------------------------------------------------
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS
// -----------------------------------------------------------------------------
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet.
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal,
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû.
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z}
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê:
//
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû:
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps)
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps)
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps)
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing)
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte)
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ)
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè)
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet)
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà.
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî.
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå,
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà.
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû,
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê:
//
// writeLn('Hello Sas.Planet!');
// -----------------------------------------------------------------------------
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè
// -----------------------------------------------------------------------------
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ?
function isContains(findingText: string; inSourceText: string) : boolean;
begin
result := pos(findingText, inSourceText) <> 0;
end;
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè)
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string;
var
intPart, floatPart : integer;
begin
intPart := floor(sourceNumber);
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) )
result := intToStr(intPart) + '.' + intToStr(floatPart)
end;
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing)
function getQuadkeyText(x: integer; y: integer; z: integer) : string;
var
i, q : byte;
begin
result:='';
for i:=1 to z do begin
q:=0;
if x mod 2 = 1 then q := q + 1;
if y mod 2 = 1 then q := q + 2;
x := x div 2;
y := y div 2;
result := intToStr(q) + result;
end;
end;
// -----------------------------------------------------------------------------
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c}
// -----------------------------------------------------------------------------
type
TSubst = record
mask, val : string;
end;
TSubsts = record
count : integer;
s : array [0..15] of TSubst;
end;
function replaceServerName(url: string) : string;
var
s, ss : string;
sarr : array [0..9] of string;
sarr_l, p : integer;
begin
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0);
if s <> '' then begin
ss := s;
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]);
ss := StringReplace(ss, '}', '', [rfIgnoreCase]);
ss := ss + ',';
sarr_l := 0;
while ss <> '' do begin
p := pos(',', ss);
if p = 0 then p := length(ss);
sarr[sarr_l] := copy(ss, 1, p-1);
sarr_l := sarr_l + 1;
delete(ss, 1, p);
end;
url := StringReplace(url, s, sarr[random(sarr_l)], []);
end;
Result := url;
end;
// -----------------------------------------------------------------------------
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}.
// -----------------------------------------------------------------------------
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string;
var
options: tReplaceFlags;
calculatedValue: string;
begin
options := [rfReplaceAll, rfIgnoreCase];
result := urlTemplate;
if isContains('{x}', result) then begin
calculatedValue := intToStr(x);
result := stringReplace( result, '{x}', calculatedValue, options)
end;
if isContains('{y}', result) then begin
calculatedValue := intToStr(y);
result := stringReplace( result, '{y}', calculatedValue, options)
end;
if isContains('{z}', result) then begin
calculatedValue := intToStr(z-1);
result := stringReplace( result, '{z}', calculatedValue, options)
end;
if isContains('{z+1}', result) then begin
calculatedValue := intToStr(z);
result := stringReplace( result, '{z+1}', calculatedValue, options)
end;
if isContains('{x/1024}', result) then begin
calculatedValue := intToStr(x div 1024);
result := stringReplace( result, '{x/1024}', calculatedValue, options)
end;
if isContains('{y/1024}', result) then begin
calculatedValue := intToStr(y div 1024);
result := stringReplace( result, '{y/1024}', calculatedValue, options)
end;
if isContains('{-y}', result) then begin
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y);
result := stringReplace( result, '{-y}', calculatedValue, options)
end;
if isContains('{q}', result) then begin
calculatedValue := getQuadkeyText(x, y, z);
result := stringReplace( result, '{q}', calculatedValue, options)
end;
if isContains('{bbox}', result) then begin
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options)
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options)
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options)
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options)
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options)
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà.
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü.
end;
if isContains('{timeStamp}', result) then begin
calculatedValue := IntToStr(GetUnixTime);
result := stringReplace( result, '{timeStamp}', calculatedValue, options)
end;
end;
// -----------------------------------------------------------------------------
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà.
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL.
// -----------------------------------------------------------------------------
begin
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ);
resultURL := replaceServerName(resultURL);
end.

+ 2
- 0
anygis/Tracks_Strava_RunAndRide.zmp/info.txt Целия файл

@@ -1,4 +1,6 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:


+ 2
- 4
anygis/Tracks_Strava_RunAndRide.zmp/params.txt Целия файл

@@ -1,6 +1,6 @@

[PARAMS]
GUID={B5C2127C-56AC-4630-94A1-34E17F5B183F}
GUID={C9F9F3BD-4BBD-4AFE-ABBF-171AA57F5D06}
ParentSubMenu_ru=Маршруты и GPS-Треки
ParentSubMenu_uk=Маршруты и GPS-Треки
ParentSubMenu=Ways and GPS-Tracks
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Велоспорт и Бег (beta)
name=Strava Heatmap - RunAndRide (beta)
NameInCache=Tracks_Strava_RunAndRide
asLayer=1
projection=1
sradiusa=6378137
sradiusb=6378137
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_RunAndRide/{x}/{y}/{z}
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png


+ 0
- 216
anygis/Tracks_Strava_Water.zmp/GetUrlScript.txt Целия файл

@@ -1,216 +0,0 @@
// -----------------------------------------------------------------------------
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS
// -----------------------------------------------------------------------------
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet.
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal,
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû.
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z}
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê:
//
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû:
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps)
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps)
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps)
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing)
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte)
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ)
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè)
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet)
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà.
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî.
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå,
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà.
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû,
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê:
//
// writeLn('Hello Sas.Planet!');
// -----------------------------------------------------------------------------
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè
// -----------------------------------------------------------------------------
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ?
function isContains(findingText: string; inSourceText: string) : boolean;
begin
result := pos(findingText, inSourceText) <> 0;
end;
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè)
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string;
var
intPart, floatPart : integer;
begin
intPart := floor(sourceNumber);
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) )
result := intToStr(intPart) + '.' + intToStr(floatPart)
end;
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing)
function getQuadkeyText(x: integer; y: integer; z: integer) : string;
var
i, q : byte;
begin
result:='';
for i:=1 to z do begin
q:=0;
if x mod 2 = 1 then q := q + 1;
if y mod 2 = 1 then q := q + 2;
x := x div 2;
y := y div 2;
result := intToStr(q) + result;
end;
end;
// -----------------------------------------------------------------------------
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c}
// -----------------------------------------------------------------------------
type
TSubst = record
mask, val : string;
end;
TSubsts = record
count : integer;
s : array [0..15] of TSubst;
end;
function replaceServerName(url: string) : string;
var
s, ss : string;
sarr : array [0..9] of string;
sarr_l, p : integer;
begin
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0);
if s <> '' then begin
ss := s;
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]);
ss := StringReplace(ss, '}', '', [rfIgnoreCase]);
ss := ss + ',';
sarr_l := 0;
while ss <> '' do begin
p := pos(',', ss);
if p = 0 then p := length(ss);
sarr[sarr_l] := copy(ss, 1, p-1);
sarr_l := sarr_l + 1;
delete(ss, 1, p);
end;
url := StringReplace(url, s, sarr[random(sarr_l)], []);
end;
Result := url;
end;
// -----------------------------------------------------------------------------
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}.
// -----------------------------------------------------------------------------
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string;
var
options: tReplaceFlags;
calculatedValue: string;
begin
options := [rfReplaceAll, rfIgnoreCase];
result := urlTemplate;
if isContains('{x}', result) then begin
calculatedValue := intToStr(x);
result := stringReplace( result, '{x}', calculatedValue, options)
end;
if isContains('{y}', result) then begin
calculatedValue := intToStr(y);
result := stringReplace( result, '{y}', calculatedValue, options)
end;
if isContains('{z}', result) then begin
calculatedValue := intToStr(z-1);
result := stringReplace( result, '{z}', calculatedValue, options)
end;
if isContains('{z+1}', result) then begin
calculatedValue := intToStr(z);
result := stringReplace( result, '{z+1}', calculatedValue, options)
end;
if isContains('{x/1024}', result) then begin
calculatedValue := intToStr(x div 1024);
result := stringReplace( result, '{x/1024}', calculatedValue, options)
end;
if isContains('{y/1024}', result) then begin
calculatedValue := intToStr(y div 1024);
result := stringReplace( result, '{y/1024}', calculatedValue, options)
end;
if isContains('{-y}', result) then begin
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y);
result := stringReplace( result, '{-y}', calculatedValue, options)
end;
if isContains('{q}', result) then begin
calculatedValue := getQuadkeyText(x, y, z);
result := stringReplace( result, '{q}', calculatedValue, options)
end;
if isContains('{bbox}', result) then begin
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options)
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options)
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options)
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options)
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options)
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà.
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü.
end;
if isContains('{timeStamp}', result) then begin
calculatedValue := IntToStr(GetUnixTime);
result := stringReplace( result, '{timeStamp}', calculatedValue, options)
end;
end;
// -----------------------------------------------------------------------------
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà.
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL.
// -----------------------------------------------------------------------------
begin
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ);
resultURL := replaceServerName(resultURL);
end.

+ 2
- 0
anygis/Tracks_Strava_Water.zmp/info.txt Целия файл

@@ -1,4 +1,6 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:


+ 2
- 4
anygis/Tracks_Strava_Water.zmp/params.txt Целия файл

@@ -1,6 +1,6 @@

[PARAMS]
GUID={542841FD-209E-4C96-9714-BC4F337371CA}
GUID={0D15104A-781C-4881-B705-72AA33E745C7}
ParentSubMenu_ru=Маршруты и GPS-Треки
ParentSubMenu_uk=Маршруты и GPS-Треки
ParentSubMenu=Ways and GPS-Tracks
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Водный спорт
name=Strava Heatmap - Water
NameInCache=Tracks_Strava_Water
asLayer=1
projection=1
sradiusa=6378137
sradiusb=6378137
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Water/{x}/{y}/{z}
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png


+ 0
- 216
anygis/Tracks_Strava_Winter.zmp/GetUrlScript.txt Целия файл

@@ -1,216 +0,0 @@
// -----------------------------------------------------------------------------
// --- Óíèâåðñàëüíûé àäàïòåð îò AnyGIS
// -----------------------------------------------------------------------------
// Ýòîò ñêðèïò ïðèçâàí óïðîñòèòü äîáàâëåíèå íîâûõ êàðò â SasPlanet.
// Îí èçáàâèò íà÷èíàþùèõ ïîëüçîâàòåëåé îò íåîáõîäèìîñòè ïðîãðàììèðîâàòü íà Pascal,
// ÷òîáû âíîñèòü èçìåíåíèÿ â ôàéë GetUrlScript.txt ïðè äîáàâëåíèè êàæäîé íîâîé êàðòû.
// Òåïåðü ìîæíî ïðîñòî âñòàâëÿòü ïðèâû÷íûé URL ñ çàãëóøêàìè òèïà {x}, {y}, {z}
// â ïîëå DefURLBase èç ôàéëà params.txt. Íà ïðèìåð, òàê:
//
// DefURLBase=http://{s:a,b,c}.tile.openstreetmap.org/{z}/{x}/{y}.png
// Ñêðèïò ðàçðàáàòûâàëè Nnngrach è Erelen
// --- Ñïèñîê äîñòóïíûõ ïàðàìåòðîâ äëÿ àâòîçàìåíû:
// {x} Íîìåð òàéëà ïî îñè X. (Êàê â êàðòàõ OpenStreetMaps)
// {y} Íîìåð òàéëà ïî îñè Y. (Êàê â êàðòàõ OpenStreetMaps)
// {z} Óðîâåíü ïðèáëèæåíèÿ/çóìà. (Êàê â êàðòàõ OpenStreetMaps)
// {q} Íîìåð òàéëà â ñèñòåìå QuadKey. (Êàê â êàðòàõ Bing)
// {-y} Èíâåðòèðîâàííûé íîìåð òàéëà ïî îñè Y. (Êàê íà ñàéòå Nakarte)
// {bbox} Êîîðäèíàòû ãðàíèö òàéëà. (Äëÿ WMS ñåðâåðîâ)
// {timeStamp} Òåêóùåå âðåìÿ â ôîðìàòå UnixTime. (Äëÿ êàðò ñ ïðîáêàìè)
// {z+1} Óðîâåíü çóìà. (Äëÿ êàðò, õðàíÿùèõñÿ â ôîðìàòå SasPlanet)
// {x/1024} Íîìåð ïåðâîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {y/1024} Íîìåð âòîðîé ïîäïàïêè (Äëÿ êàðò, â ôîðìàòå SasPlanet)
// {s:a,b,c} Áóêâà èëè öèôðà ñ íîìåðîì çåðêàëà ñåðâåðà.
//  äàííîì ñëó÷àå - îäíà èç áóêâ (A,B,C), âûáðàííàÿ ðàíäîìíî.
// Ñîâåò äëÿ íà÷èíàþùèõ: åñëè õîòèòå ðàçîáðàòüñÿ â ýòîì êîäå,
// òî óäîáíåå âñåãî ÷èòàòü åãî ñ êîíöà.
// Åùå îäèí ñîâåò: åñëè áóäåòå ïèñàòü ñâîè ñêðèïòû,
// òî âûâîä â êîíñîëü (à òî÷íåå, â îêíî Debug Output ) äåëàåòñÿ òàê:
//
// writeLn('Hello Sas.Planet!');
// -----------------------------------------------------------------------------
// --- 4. Âñïîìîãàòåëüíûå ôóíêöèè
// -----------------------------------------------------------------------------
// --- Ïðîâåðèòü, ñîäåðæèò ëè îäíà ñòðîêà äðóãóþ?
function isContains(findingText: string; inSourceText: string) : boolean;
begin
result := pos(findingText, inSourceText) <> 0;
end;
// --- Îêðóãëåíèå äî íóæíîãî êîëè÷åñòâà çíàêîâ ïîñëå çàïÿòîé
// --- (ñòàíäàðòíûå ôóíêöèè îêðóãëåíèÿ ó ìåíÿ ïî÷åìó-òî íå çàðàáîòàëè)
function roundFor(sourceNumber: Double ; digitAfterComma: integer) : string;
var
intPart, floatPart : integer;
begin
intPart := floor(sourceNumber);
floatPart := floor( (sourceNumber - intPart) * round(intPower(10, digitAfterComma)) )
result := intToStr(intPart) + '.' + intToStr(floatPart)
end;
// --- Âû÷èñëèòü íîìåð òàéëà â ñèñòåìå Quadkey (èñïîëüçóåòñÿ â êàðòàõ Bing)
function getQuadkeyText(x: integer; y: integer; z: integer) : string;
var
i, q : byte;
begin
result:='';
for i:=1 to z do begin
q:=0;
if x mod 2 = 1 then q := q + 1;
if y mod 2 = 1 then q := q + 2;
x := x div 2;
y := y div 2;
result := intToStr(q) + result;
end;
end;
// -----------------------------------------------------------------------------
// --- 3. Åñëè òðåáóåòñÿ, òî ïîäñòàâèòü èìÿ äëÿ çåðêàëà ñåðâåðà
// --- íà ìåñòî çàãëóøêè òèïà {s: a,b,c}
// -----------------------------------------------------------------------------
type
TSubst = record
mask, val : string;
end;
TSubsts = record
count : integer;
s : array [0..15] of TSubst;
end;
function replaceServerName(url: string) : string;
var
s, ss : string;
sarr : array [0..9] of string;
sarr_l, p : integer;
begin
s := RegExprGetMatchSubStr(url, '\{[sS]:([^}]+)\}', 0);
if s <> '' then begin
ss := s;
ss := StringReplace(ss, '{s:', '', [rfIgnoreCase]);
ss := StringReplace(ss, '}', '', [rfIgnoreCase]);
ss := ss + ',';
sarr_l := 0;
while ss <> '' do begin
p := pos(',', ss);
if p = 0 then p := length(ss);
sarr[sarr_l] := copy(ss, 1, p-1);
sarr_l := sarr_l + 1;
delete(ss, 1, p);
end;
url := StringReplace(url, s, sarr[random(sarr_l)], []);
end;
Result := url;
end;
// -----------------------------------------------------------------------------
// --- 2. Åñëè òðåáóåòñÿ, òî âû÷èñëèòü è ïîäñòàâèòü â øàáëîí URL àäðåñà
// --- íóæíûå çíà÷åíèÿ íà ìåñòî çàãëóøåê òèïà {x}, {y}, {z}.
// -----------------------------------------------------------------------------
function replaceLeafletPlaceholders(urlTemplate: string; x: integer; y: integer; z: integer) : string;
var
options: tReplaceFlags;
calculatedValue: string;
begin
options := [rfReplaceAll, rfIgnoreCase];
result := urlTemplate;
if isContains('{x}', result) then begin
calculatedValue := intToStr(x);
result := stringReplace( result, '{x}', calculatedValue, options)
end;
if isContains('{y}', result) then begin
calculatedValue := intToStr(y);
result := stringReplace( result, '{y}', calculatedValue, options)
end;
if isContains('{z}', result) then begin
calculatedValue := intToStr(z-1);
result := stringReplace( result, '{z}', calculatedValue, options)
end;
if isContains('{z+1}', result) then begin
calculatedValue := intToStr(z);
result := stringReplace( result, '{z+1}', calculatedValue, options)
end;
if isContains('{x/1024}', result) then begin
calculatedValue := intToStr(x div 1024);
result := stringReplace( result, '{x/1024}', calculatedValue, options)
end;
if isContains('{y/1024}', result) then begin
calculatedValue := intToStr(y div 1024);
result := stringReplace( result, '{y/1024}', calculatedValue, options)
end;
if isContains('{-y}', result) then begin
calculatedValue := intToStr( round(intPower(2, z-1)) - 1 - y);
result := stringReplace( result, '{-y}', calculatedValue, options)
end;
if isContains('{q}', result) then begin
calculatedValue := getQuadkeyText(x, y, z);
result := stringReplace( result, '{q}', calculatedValue, options)
end;
if isContains('{bbox}', result) then begin
result := stringReplace( result, '{bbox}', '{Left},{Bottom},{Right},{Top}', options)
result := stringReplace( result, '{Left}', roundFor(GetLMetr,8), options)
result := stringReplace( result, '{Bottom}', roundFor(GetBMetr,8), options)
result := stringReplace( result, '{Right}', roundFor(GetRMetr,8), options)
result := stringReplace( result, '{Top}', roundFor(GetTMetr,8), options)
// Äåëàþ çàìåíó â ïÿòü îïåðàöèé ïîòîìó, ÷òî ïðè ïîïûòêå
// ñäåëàòü âñå îäíîé ñòðîêîé âîçíèêàåò îøèáêà.
// Âîçìîæíî êàêîå-òî îãðàíè÷åíèå íà ïàìÿòü.
end;
if isContains('{timeStamp}', result) then begin
calculatedValue := IntToStr(GetUnixTime);
result := stringReplace( result, '{timeStamp}', calculatedValue, options)
end;
end;
// -----------------------------------------------------------------------------
// --- 1. Ñòàðò ñêðèïòà. Çàïóñòèòü âû÷èñëåíèå URL-àäðåñà òàéëà.
// --- Ñêà÷àòü òàéë ïî ïîëó÷åííîìó URL.
// -----------------------------------------------------------------------------
begin
resultURL := replaceLeafletPlaceholders(getURLBase, getX, getY, getZ);
resultURL := replaceServerName(resultURL);
end.

+ 2
- 0
anygis/Tracks_Strava_Winter.zmp/info.txt Целия файл

@@ -1,4 +1,6 @@
Этот файл был создан автоматически с помощью файло-генератора AnyGIS.ru
Он должен работать с SasPlanet версии 200127.10112 и новее
Если вы заметили ошибку, свяжитесь со мной и сообщите о ней:


+ 2
- 4
anygis/Tracks_Strava_Winter.zmp/params.txt Целия файл

@@ -1,6 +1,6 @@

[PARAMS]
GUID={051E9432-9EBD-4CB0-B21E-E209209A28C7}
GUID={723A4141-C185-406A-9F74-3E12311B7E2A}
ParentSubMenu_ru=Маршруты и GPS-Треки
ParentSubMenu_uk=Маршруты и GPS-Треки
ParentSubMenu=Ways and GPS-Tracks
@@ -9,9 +9,7 @@ name_uk=Strava Heatmap - Зимний спорт
name=Strava Heatmap - Winter
NameInCache=Tracks_Strava_Winter
asLayer=1
projection=1
sradiusa=6378137
sradiusb=6378137
EPSG=3785
DefURLBase=https://anygis.ru/api/v1/Tracks_Strava_Winter/{x}/{y}/{z}
RequestHead=Referer:https://www.strava.com/heatmap\r\nConnection: keep-alive\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36\r\nAccept: image/webp,image/apng,image/*,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: ru,en-US;q=0.9,en;q=0.8
ContentType=image/jpeg,image/png


Двоични данни
mapbox/mapbox_sat.zmp/18.bmp Целия файл

Преди След

Двоични данни
mapbox/mapbox_sat.zmp/24.bmp Целия файл

Преди След

+ 0
- 6
mapbox/mapbox_sat.zmp/GetUrlScript.txt Целия файл

@@ -1,6 +0,0 @@
var
tile: string;
begin
GetURLBase[9]:=chr(ord('a')+random(2));
ResultURL:=GetUrlBase+inttostr(GetZ-1)+'/'+inttostr(GetX)+'/'+inttostr(GetY)+'.png';
end.

+ 0
- 15
mapbox/mapbox_sat.zmp/params.txt Целия файл

@@ -1,15 +0,0 @@
[PARAMS]
pnum=170
GUID={01BDC3A9-D0C0-4B84-BFB5-94AAF9D100F7}
name=Mapbox satellite
NameInCache=Mapbox_sat
DefURLBase=https://a.tiles.mapbox.com/v3/tmcw.map-j5fsp01s/
Ext=.jpg
defaultContentType=image/jpeg
ContentType="image/jpeg"
projection=1
sradiusa=6378137
sradiusb=6378137
ParentSubMenu_ru=Äðóãèå êàðòû
ParentSubMenu=Other maps
ParentSubMenu_uk=²íø³ êàðòè

Двоични данни
mapbox/osm_mapbox_mapnik_layer.zmp/18.bmp Целия файл

Преди След

Двоични данни
mapbox/osm_mapbox_mapnik_layer.zmp/24.bmp Целия файл

Преди След

+ 0
- 7
mapbox/osm_mapbox_mapnik_layer.zmp/GetUrlScript.txt Целия файл

@@ -1,7 +0,0 @@
begin
ResultURL:= GetUrlBase + inttostr(GetX) + '/' + inttostr(GetY) + '/' + inttostr(GetZ - 1);
end.

+ 0
- 7
mapbox/osm_mapbox_mapnik_layer.zmp/info.txt Целия файл

@@ -1,7 +0,0 @@
От составителя:
Данный слой предназначен для дополнения OSM - Mapnik.
Манера отрисовки рельефа подобрана максимально мягкая и ненавязчивая,
чтобы не затруднять чтение тропинок и мелких надписей.
В качестве источника использовался сайт Mapbox.com

+ 0
- 20
mapbox/osm_mapbox_mapnik_layer.zmp/params.txt Целия файл

@@ -1,20 +0,0 @@
[PARAMS]
pnum=118
GUID={AB8A8685-AEC6-4E16-80DA-DF4AC37E4777}
asLayer=1
name_ru=Mapbox.com (mapnik layer)
name=Mapbox.com (mapnik layer)
name_uk=Mapbox.com (mapnik layer)
ParentSubMenu_ru=Рельеф и тополинии
ParentSubMenu=Hillshade
ParentSubMenu_uk=Рельєф і тополинии
NameInCache=OSM_mapbox_mapnik
DefURLBase=https://anygis.herokuapp.com/Osm_Mapnik_Mapbox_Hillshades/
ContentType=image/png
Ext=.png
projection=1
sradiusa=6378137
sradiusb=6378137
RequestHead=User-Agent: SAS.Planet
IteratorSubRectSize=8,8
License=Map data © OpenStreetMap contributors, rendering GIScience Research Group @ University of Heidelberg

Зареждане…
Отказ
Запис