Содержание
Создание карты-указателя для атласа или альбома карт—ArcMap
Карты-указатели – это справочные карты, которые используются, когда пространственное положение детализированной карты трудно определить. С их помощью также можно проследить, на какую часть территории приходится текущая страница карты.
В вышеприведенном примере показан топографический атлас округа Аренак, штат Мичиган. Этот альбом карт из 22 страниц может быть создан любым пользователем ArcMap при наличии интернет-подключения. Источником данных является картографический сервис USA Topographic, входящий в состав сервиса ArcGIS Online. Для повторного создания такого альбома карт не требуется никаких других данных. Такой справочный альбом карт легко создается при помощи функции Многостраничной компоновки, инструментов геообработки из группы Многостраничная компоновка (Data Driven Pages), настройки свойств фрейма данных и динамического текста.
Ниже приведена инструкция по созданию карты-указателя из вышеприведенного примера.
При создании данной карты-указателя применялся новый класс пространственных объектов, скопированный из слоя индексной сетки. После его редактирования получены два слоя: маскирующий слой (серый) и слой текущей страницы. Маскирующий слой позволяет затенить объекты, выделение которых на карте-указателе нежелательно. Это объекты, расположенные на страницах отличных от текущей. Слой текущей страницы подчеркивает объекты на карте-указателе, которые находятся на текущей странице карты. Для того, чтобы убрать из маски или выделить нужные объекты для каждой страницы карты, применяются определяющие запросы страниц. Для этого необходимо сохранить пространственные объекты и атрибуты индексной сетки. Для надписывания объектов сетки также используется исходный слой индексной сетки.
Серая маска должна равномерно закрывать весь фрейм данных, поэтому следует добавить дополнительный объект, который сделает маску прямоугольной – такой же, как и фрейм данных. Этот новый объект не будет связан с какой-либо страницей атласа. Он нужен только для того, чтобы серая маска равномерно покрывала всю карту.
В данном разделе поэтапно описывается весь процесс создания такой маски. Речь пойдет о конкретном примере карты-указателя. В целом, такую карту можно разработать различными способами. В следующих разделах приведены другие варианты такой карты: Использование индикаторов экстента для улучшения обзорных карт и карт-указателей и Настройка пользовательского экстента карты.
В нижеприведенной инструкции предполагается, что уже выполнены этапы, описанные в следующих разделах:
- Начало работы над картографическим атласом или альбомом
- Создание класса объектов индексной сетки
- Изменение слоя объектов индексной сетки
- Включение функциональности Многостраничная компоновка
Внимание:
Адаптируйте эту инструкцию под свою карту или атлас. Помните, что данные шаги актуальны только для атласа из вышеприведенного примера. При буквальном следовании этой инструкции с другим набором карт, результат может быть непредсказуем.
-
Создайте новый фрейм данных с именем Locator Map (Карта-указатель). - Разместите этот фрейм данных на компоновке страницы.
- Скопируйте слой индексной сетки и слои базовой карты из основного фрейма данных (ранее мы называли его Детальная карта) и вставьте их во фрейм карты-указателя.
Если при следовании инструкции из раздела Создание класса объектов индексной сетки вы использовали предлагаемые там имена, то слой индексной сетки называется Arenac_grid, а слой базовой карты – USA_Topo_Maps.
- Измените имя слоя индексной сетки на Page Labels (Подписи страниц).
- Перейдите на закладку Надписи (Labels).
- В ниспадающем списке Поле надписи (Label Field) выберите PageName. Задайте необходимые свойства надписи.
- Включите опцию Надписать объекты этого слоя (Label features in this layer) и щелкните OK.
Фрейм данных Locator Map (Карта-указатель) теперь содержит два слоя: один для надписывания страниц, другой для базовой карты.
Теперь необходимо создать новый класс пространственных объектов, который будет отвечать за выделение объектов текущей страницы и маскировку остальных.
- Создайте новый класс пространственных объектов, щелкнув правой кнопкой мыши по слою индексной сетки и выбрав Данные (Data) > Экспорт данных (Export Data). Сохраните выходной класс пространственных объектов в ту же папку, где находится класс объектов индексной сетки. Назовите класс пространственных объектов Маска_указателя (Locator_Mask), затем щелкните Да (Yes) чтобы добавить слой на карту-указатель.
- Щелкните символ слоя Маска_указателя в Таблице содержания (Table of Contents).
- В диалоговом окне Выбор символа (Symbol Selector) выберите Цвет заливки (Fill Color) – черный, Ширина контура (Outline Width) – 1, Цвет контура (Outline Color) – белый, затем щелкните OK.
- Перейдите на закладку Отображение (Display), задайте степень прозрачности – 60%, затем нажмите OK.
Теперь слой Маска_указателя должен выглядеть следующим образом:
Как видно из рисунка, серая маска покрывает фрейм данных неравномерно.
- Для устранения этой проблемы отредактируйте класс пространственных объектов Маска_указателя. Добавьте новый пространственный объект, на рисунке снизу он отмечен красным цветом.
Подробнее о редактировании слоя вы можете узнать в разделе Создание смежных полигонов.
Слой Маска_указателя в итоге должен выглядеть следующим образом:
Теперь создадим слой, отвечающий за выделение объектов текущей страницы.
- Щелкните правой кнопкой мыши по слою Маска указателя и нажмите пункт меню Копировать (Copy).
- Щелкните правой кнопкой по фрейму данных Карта указателя и выберите Вставить слои (Paste Layer(s)).
- Измените имя нового слоя на Маска_указателя_текущая_страница (Locator_Mask Current Page).
- Щелкните символ слоя Маска_указателя_текущая_страница в Таблице содержания (Table of Contents).
- В диалоговом окне Выбор символа (Symbol Selector) выберите Пустой (Hollow), задайте Ширина контура (Outline Width) – 1, затем щелкните OK.
Теперь слой Маска_указателя_текущая_страница должен выглядеть следующим образом:
Теперь фрейм данных содержит все необходимые слои, осталось только задать определяющие запросы страниц для слоев Маска указателя и Маска указателя текущая страница, чтобы они корректно отображали данные.
- Дважды щелкните слой Маска указателя, перейдите на закладку Определяющий запрос (Definition Query), затем нажмите кнопку Определяющий запрос страницы (Page Definition Query).
Если эта кнопка отсутствует, удостоверьтесь, что включена функция Многостраничная компоновка. Определяющие запросы страниц доступны только в том случае, если включена функция Многостраничная компоновка.
- Поставьте галочку в окошке Включить (Enable).
- Щелкните стрелку списка Поле имени страницы (Page Name Field) и выберите PageName.
- Выберите опцию Несопоставленные (Don’t Match), а затем щелкните ОК, чтобы закрыть диалоговое окно Свойства слоя (Layer Properties).
Теперь слой Маска_указателя должен выглядеть следующим образом:
Прорисовываются только те пространственные объекты этого слоя, которые не соответствуют текущей странице. Таким образом, область карты за рамками текущей страницы представляется в виде серой маски.
- Дважды щелкните слой Маска_указателя_текущая_страница, перейдите на закладку Определяющий запрос (Definition Query), затем щелкните Определяющий запрос страницы (Page Definition Query).
Если эта кнопка отсутствует, удостоверьтесь, что включена функция Многостраничная компоновка. Определяющие запросы страниц доступны только в том случае, если включена функция Многостраничная компоновка.
- Поставьте галочку в окошке Включить (Enable).
- Щелкните стрелку списка Поле имени страницы (Page Name Field) и выберите PageName.
- Выберите опцию Сопоставленные (Match), а затем щелкните ОК, чтобы закрыть диалоговое окно Свойства слоя (Layer Properties).
Теперь слой Маска_указателя_текущая_страница должен выглядеть следующим образом:
Прорисовываются только те пространственные объекты слоя, которые соответствуют текущей странице.
Если все слои видимы, то ваша карта-указатель должна быть очень похожа на ту, которая показана на примере в начале этого документа. При пролистывании страниц атласа, карта-указатель должна изменяться, каждый раз выделяя объекты текущей страницы. Следующий этап работы с атласом – добавление динамического текста в атлас или альбом карт.
Присоединяйтесь к широкому международному сообществу креативных людей, пользующихся Cliparto каждый день. чтобы покупать или продавать изображения.
| ◢ Мой Cliparto
› ЛайтБокс (0)
Не помните пароль / логин? ◢ Впервые у нас? Зарегистрируйтесь ◢
Есть аккаунт на Vector-Images. com?
› Недавно просмотрено
|
словарь — Указатель на карту
спросил
Изменено
2 года, 7 месяцев назад
Просмотрено
59 тысяч раз
Наличие некоторых карт, определенных как:
var valueToSomeType = map[uint8]someType{...} var nameToSomeType = карта[строка]someType{...}
Мне нужна переменная, указывающая на адрес карты (чтобы не копировать всю переменную). Я попробовал это, используя:
valueTo := &valueToSomeType nameTo := &nameToSomeType
но при использовании valueTo[number]
показывает
внутренняя ошибка компилятора: var без типа, init: new
Как это получить?
Редактировать
Ошибку показала другая проблема.
- указатели
- словарь
- go
Карты являются ссылочными типами, поэтому они всегда передаются по ссылке. Вам не нужен указатель. Иди док
3
Точнее, из спецификаций Голанга:
Срезы, карты и каналы являются ссылочными типами , которые не требуют дополнительной косвенности распределения с
новым
.
Встроенная функция make принимает типT
, который должен быть типом среза, карты или канала, за которым может следовать список выражений для конкретного типа.
Возвращает значение типаT
( не*T
).
Память инициализируется, как описано в разделе по начальным значениям
Однако, что касается вызовов функций, параметры передаются по значению (всегда).
За исключением того, что значение параметра карты является указателем.
3
Ответ @Mue правильный.
Для проверки достаточно следующей простой программы:
основной пакет импортировать "фмт" основная функция () { м := сделать (карта [строка] строка, 10) добавить (м) fmt.Println(m["tom"]) // ожидаем ноль ??? } func add(m map[string]string) { м["том"] = "волдеморт" }
Вывод этой программы:
волдеморт
Если карта была передана по значению, то добавление к карте в функции add() не дало бы никакого эффекта в основном методе. Но мы видим значение, добавленное методом add(). Это подтверждает, что указатель карты передается методу add().
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
дизайнов, тем, шаблонов и графических элементов Map Pointers, загружаемых на Dribbble
Просмотр красочных указателей на карту / разведка символа логотипа
Цветные указатели на картах / исследования символов логотипа
Посмотреть Интерактивный вид карты 🔥
Интерактивный просмотр карты 🔥
Просмотр Пин-указатель + корона, поиск символа логотипа / значка
Пин-указатель + корона, символ логотипа / значок исследования
Посмотреть коллекцию значков указателей / логотипов
Коллекция иконок указателей / логотипов
Просмотр указателей на карту, образующих сердце, символ дизайна логотипа
Указательные булавки, образующие сердце, символ дизайна логотипа
Просмотр площади
View Travel tour📍- Набор иллюстраций Musement
Туристический тур📍- Набор иллюстраций Musement
Просмотрите концепцию логотипа Modern P Letter Pointers.
Концепция логотипа Modern P Letter Pointers.
Набор из трех указателей карты на белом изолированном фоне
Набор из трех указателей карты на белом изолированном фоне
Просмотр панели управления местами
Панель управления местами
Просмотр Несколько маленьких значков, пожалуйста, дайте указатели
Несколько маленьких значков укажите указатели
Просмотрите концепцию логотипа Modern P Letter Pointers.