Страница 1 из 1

Не понимаю как задать mapscale

Добавлено: 18 июл 2011, 12:27
sergling
Добрый день, пытаюсь писать с использованием ArcObjects и затрудняюсь в понимании изменения масштаба. Нужно к примеру выставить для отображения 1:10000. Опытным путем выяснил что реально в IMap.MapScale лежат величины менее нуля. На буржуйских форумах часто шлют сюда - http://resources.esri.com/help/9.3/arcg ... ic380.html. Но честно, это не добавило мне ума. Может кто подкинет другую полезную ссылочку или разъяснит иначе???

Re: Не понимаю как задать mapscale

Добавлено: 18 июл 2011, 15:49
Dorofeev
Меньше нуля, наверное потому, что вы не указали свойство IMap.MapUnits. Чтобы задать масштаб отображения объектов используйте IMap.MapScale, а если нужно задать масштаб отображения условных обозначений (отличный от масштаба вида), то IMap.ReferenceScale

Re: Не понимаю как задать mapscale

Добавлено: 18 июл 2011, 16:34
sergling
Загружаю shp-файл, делаю проверку масштаба, получаю MapScale = 0,144605232549057, MapUnits = esriMeters. Т.е. тулбоксом понятно могу менять масштаб, а программным методом просто не пойму что туда писать.

Re: Не понимаю как задать mapscale

Добавлено: 18 июл 2011, 16:48
Dorofeev
Когда вы добавляете слой в IMap, MapUnits автоматически берутся из его проекции если до этого они были esriUnknownUnits. Короче, чтобы установить MapScale сначала установите MapUnits=esriMeters
Как это вы программным образом не можете туда писать мы же говорим о интерфейсе ESRI.ArcGIS.Carto.IMap?
http://help.arcgis.com/en/sdk/10.0/arco ... 0803000000

Re: Не понимаю как задать mapscale

Добавлено: 18 июл 2011, 16:56
sergling
Вот по всей видимости после добавления слоя MapUnits правильно инициализируется. В метрах, но MapScale - меньше нуля (мы говорим о ESRI.ArcGIS.Carto.IMap). Писать я туда конечно могу, но писать на угад.

Re: Не понимаю как задать mapscale

Добавлено: 19 июл 2011, 12:40
Dorofeev
Не знаю, у меня в ArcMap IMap.MapScale возвращает тот масштаб который отображается в ArcMap.
В чем проблема? Установите туда значение, которое Вам нужно. Если Вы не видите своих объектов, значит нужно сначала установить установить IMap.Extent на один из объектов, а потом уже задавать масштаб

Re: Не понимаю как задать mapscale

Добавлено: 19 июл 2011, 14:20
sergling
У меня стоит engine 9.3, пишу на C++, после добавления слоя проверяю MapUnits - если не определено, пишу туда метры. Опытным путем выяснил что MapScale = 1 - очень далеко, 0.01 - очень близко, но хотелось бы иметь адекватное представление масштаба, на пример - 1:10000. Может у меня шейп какой-то хитрый грузится. Я вообще новичек в этом деле, какой дали файл, с таким тренируюсь. До этого писал использую engine Панорамы для их карты, там сходу все пошло.

Re: Не понимаю как задать mapscale

Добавлено: 19 июл 2011, 17:00
sergling
Вопрос снимаю, мои шейп-файлы были не привязаны к системе координат, спасибо за помощь!