Медленно срабатывает exportMapImage

0 голосов
спросил 26 Янв, 07 от Appl (1,340 баллов) в категории Программные продукты Esri

У меня ArcGIS Server 9.1 + ArcSde 9.1

На сервере когда я вызываю
 
m_mapServer.exportMapImage(m_mapDescription, m_imageDescription);
 
функция очень медленно отрабатывает. На небольшую картинку к примеру 133x133 пикселя в среднем 1-1.5 секунды. И таких картинок нужно загрузить штук 12 (по две штуки одновременно). Конечно скорость зависит от количества слоёв, но я заметил, что при небольшом их количестве (например, 1 очень простой слой) скорость не намного возрастает ... полсекунды. В чём может быть проблема? Кто может что-нибудь посоветовать? В принципе имеется кэш картинок на стороне web-сервера и если картинка повторяется то она берётся из кэша. Но при первой загрузке очень медленно. Ещё специфика такая что карта изменяется часто и кэш особо здесь не спасает.

16 Ответы

0 голосов
ответил 12 Март, 07 от Grigoriy (127,020 баллов)
Сначала строю кэш на мелкие масштабы на всю территорию, а затем програмно достраиваю кэш на крупные масштабы по заранее заданным экстентам. В результате и кэш гораздо меньше и строится быстрее.
0 голосов
ответил 12 Март, 07 от PITKS1 (20,860 баллов)
Это ясно. Если в просмотщике клиент выйдет за пределы экстента, для которого построен детальный кеш. Что он увидит ? Как в гугле "для этой территории нет данных" ??? У меня есть код, который это делает для .NET Viewer.
0 голосов
ответил 14 Март, 07 от Grigoriy (127,020 баллов)
Пока ничего не увидит image. Если клиент новый (9.2) - видит пустоту. Приложения, написанные для 9.1 в этом случае подсовывают вектор. Если код не жалко - высылай, буду признателен. image
0 голосов
ответил 14 Март, 07 от PITKS1 (20,860 баллов)
1. In Visual Studio edit the properties of the map control to change UseDefaultWebResources to false. This will cause it to use the java script files in aspnet_client. Put image somewhere on your web server.

2. add the following line to the function   

this.updateTileImage = function... in Inetpub/aspnet_client/ESRI/WebADF/JavaScript/display_map.js

//Change this..
        if (update)
            imageHtml += 'onload="Maps[\'' + this.controlName + '\'].updateMapDiv2();" ';
        imageHtml += ' />';

//to this...
        if (update)
            imageHtml += 'onload="Maps[\'' + this.controlName + '\'].updateMapDiv2();" ';
        imageHtml += 'onError="this.src=\'http://localhost/noCache.png\'"';
        imageHtml += ' />';

0 голосов
ответил 14 Март, 07 от Grigoriy (127,020 баллов)
Спасибо!
0 голосов
ответил 22 Июнь, 07 от Appl (1,340 баллов)
В продолжение темы ...
После того как я поставил последний патч для ArcSDE 9.1, то скорость генерации картинок увелилилась в раза полтора.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...