Обсуждение wms в этой теме несколько оффтопно, но коль уж начали, то присоединюсь.
1. У wms нельзя запрашивать тайлы 256*256 pix, если он не поддерживает проекции, известные SAS
2. Разрешение тайла в запросе нужно
вычислять, для каждого тайла отдельно
3. Полученный от сервера тайл нужно
перепроецировать в одну из поддерживаемых в SAS проекций
4. После перепроецирования, мы должны получить тайл 256*256 pix, который уже можно скармливать SAS
Таким образом, у нас 2 проблемы: как вычислить разрешение тайла для запроса и как перепроецировать полученный тайл. И решить эти проблемы сходу не получится - SAS пока что не готов к такому "из коробки", поэтому придётся программировать на стороне пользователя. Опять же, на стороне пользователя возможны 2 варианта: написание dll, которую можно вызывать из zmp (старожилы помнят как раньше работали Яндекс.Пробки? Ага, через dll, написанную пользователем и подключённую к zmp) и написание и встраивание проксика между SAS и wms.
Ну а теперь про то, как теоретически решаются проблемы. Есть такая библиотека и набор консольных утилит, под одним общим названием -
GDAL, в которой есть возможность перепроецировать растры между всеми известными науке проекциями (юзается proj4). И всё становится очень просто. Для начала, нам нужно взять "бланк" тайла 256*256 pix в проекции
A, которую поддерживает SAS и перепроецировать его в проекцию
B, в которой отдаёт тайлы наш wms. Таким образом, мы получим бланк тайла, разрешением
Wb*Hb и именно это разрешение и нужно будет подставить в запрос к серверу. Над полученным же от сервера тайлом, мы должны проделать обратную операцию: из проекции
B, тайл (уже тайл, а не бланк) разрешением
Wb*Hb перепроецировать в проекцию
A, получив тайл разрешением
Wa*Ha, которое, в итоге, должно точно равняться заветным 256*256 pix. И только после всех этих мытарств мы можем со спокойной душой отдавать тайл SAS - никаких смещений не будет (зато появятся артефакты от перепроецирования - возможно сильные, возможно и незаметные, но тут уж не попишешь...).
У GDAL есть API для кучи языков:
C
C++
Perl
Python
VB6 Bindings (not using SWIG)
Java
C# / .Net
Ruby
R
Плюс, как я уже упоминал - консольные утилиты, которые можно смело использовать откуда угодно, пусть и с накладными расходами. Для перепроецирования тайлов достаточно утилиты
gdalwarp.