e1ywka писал(а):
В данный момент система достигла своего развития.
Да, часто бывает, что у ГИС разработчиков нет возможности выбора инструментов реализации. Особенно если это глубоко интегрированное решение или добавление ГИС функциональности в уже существующую систему. Сам так мучаюсь уже во втором проекте
e1ywka писал(а):
Сжатие данных zip-ом для передачи по каналу wcf (биндинг wsHttp).
По моему сменить биндинг очень просто, подправив всего одну строку в конфиге сервера и клиента. Ради интереса я бы провел сравнительное тестирование на TCP и HTTP биндингах.
e1ywka писал(а):
Клиент использует локальный кэш (EntLib Caching Block).
К сожалению в проекте не используются enterprise library, потому ни чего не могу сказать про данный тип кэша. Я часто делаю простой тип кэширования на уровне дата сорсов - все привязывается к последнему экстенту запрошенных данных. Но этот вариант плохо управляется по размеру памяти - можно регулировать только на уровне количества записей в дто.
e1ywka писал(а):
Карта загружается в несколько потоков.
О! Вот это я понимаю. Впервые вижу реализацию с изначально верной политикой загрузки ) Сами мы используем SharpMap и сейчас думаем о переписывании процесса загрузки данных. Но пока все это только в планах (
e1ywka писал(а):
При конвертации карты из статичных файлов в БД создается сетка, по элементам которой и происходит выборка данных (MBRIntersects).
Не очень понял этот абзац. Вы сами реализовывали пространственный индекс?
e1ywka писал(а):
При профилировании приложения выявил, что львиная доля памяти и времени уходит на создание геометрий (байтовых массивов wkb). Причина, думаю, -- криво нарисованные карты, где "полигончики" могут иметь до сотни и больше точек.
Тоже не понял. Вы генерируете wkb на сервере для передачи? Для повышения общей "скорострельности" системы я бы посоветовал и хранить и передавать все геометрии без промежуточных конвертаций. Единственное преобразование должно быть на этапе отрисовки. А по поводу полигонов с сотнями вертексов - это не является показателем кривизны карты. У нас есть данные по лесным массивам с тысячами вертексами на полигон, а бывает что все это в составе мультиполигона. Таковы данные.
e1ywka писал(а):
К GDI у меня особых притензий нет, при загрузке сетки перерисовывается только загруженный кусочек, так что здесь всё оптимально.
Эээ.. Вы отрисовываете только часть канвы при загрузке новых данных? Как вы решили проблему со сложными заливками, например зашитрихованные полигоны или полигоны залитые битмапами? Артефакты на границах не вылазят?
Я конечно понимаю, что такой способ отрисовки наиболее оптимальный, но по-моему реализация излишне сложная. На память не приходит ни одной ГИС, у которой такой вариант рендеринга. Может вы откроете код рендерера под LGPL )