2016-06-06 5 views
0

Sample слой карты файл является:Как исправить размер шкалы слой карты в MapServer (ms4w)

LAYER 
     NAME "abc" 
     STATUS OFF 
     CONNECTIONTYPE POSTGIS 
     CONNECTION "" 
     DATA "" 
     TYPE polygon 
     TRANSPARENCY 100   
     MINSCALEDENOM 1 
     MAXSCALEDENOM 4000 

    METADATA 
     "fields" "layer" 
    END 
    CLASS 
     NAME 'abc'   
     MINSCALEDENOM 1000 
     MAXSCALEDENOM 4000 
     STYLE 
      OUTLINECOLOR 21 58 224 
      COLOR 151 219 242 
     END 
    END  
END 

Как исправить размер слоя карты масштаба 1: соотношение 4000 В файле карты режима карты сценария в Карта сервера (ms4w)

Может ли любой орган мне помочь?

ответ

1

Это выполнимо, но для этого требуется много усилий.

Это сложно, потому что масштаб является параметром по умолчанию для работы WMS getMap. Общая операция getmap WMS с bbox с двумя координатами имеет ширину и высоту в качестве выходного параметра. Не зная, какова будет ширина и высота вывода, будет сложно просто

Бабочка из двух пар координат, а также ширина и высота определяют параметры, каковы масштабы выходного изображения.

Представьте, что у нас есть зона интереса и фиксированная шкала в 1: 4000.

Поэтому в некоторой части системы нам необходимо получить высоту и ширину вывода в ситуации, например, в окне приложения переднего плана или в карте печати. нам нужно будет вычислить центральную точку области/формы для вывода, а затем пересчитать координаты bbox на основе пикселей в центральной точке по ширине и высоте. Затем используйте новые две пары координат, а также высоту и вес, чтобы выполнить запрос getmap wms.

Таким образом, центральная часть по-прежнему остается посередине, и bbox может быть изменен, чтобы убедиться, что шкала зафиксирована как ожидалось. Это сложно на стороне сервера с использованием только сервера mapserver, но его можно легко управлять с помощью других приложений/API, такие как OL3, листовки, API-интерфейс ArcGIS Javascript и т. Д., Который имеет функцию принудительного вывода вывода в фиксированном масштабе.